From 536db8b867d42c6de5741ffa4a49082432cbcc1b Mon Sep 17 00:00:00 2001 From: likunhui Date: Wed, 6 Dec 2023 15:40:54 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=B0=E5=A2=9Ebenchmark=E7=AE=A1?= =?UTF-8?q?=E7=BA=BF=E5=9C=BA=E6=99=AF=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: likunhui --- .../benchmark_pipeline/Benchmark/.gitignore | 11 ++ .../Benchmark/AppScope/app.json5 | 10 ++ .../resources/base/element/string.json | 8 + .../resources/base/media/app_icon.png | Bin 0 -> 2041 bytes .../Benchmark/build-profile.json5 | 49 ++++++ .../Benchmark/entry/.gitignore | 6 + .../Benchmark/entry/build-profile.json5 | 14 ++ .../Benchmark/entry/hvigorfile.ts | 6 + .../Benchmark/entry/oh-package.json5 | 10 ++ .../src/main/ets/entryability/EntryAbility.ts | 43 ++++++ .../entry/src/main/ets/pages/Benchmark01.ets | 28 ++++ .../entry/src/main/ets/pages/Benchmark02.ets | 47 ++++++ .../entry/src/main/ets/pages/Benchmark03.ets | 25 +++ .../entry/src/main/ets/pages/Benchmark04.ets | 36 +++++ .../entry/src/main/ets/pages/Benchmark05.ets | 31 ++++ .../entry/src/main/ets/pages/Benchmark052.ets | 24 +++ .../entry/src/main/ets/pages/Benchmark06.ets | 29 ++++ .../entry/src/main/ets/pages/Benchmark07.ets | 29 ++++ .../entry/src/main/ets/pages/Benchmark08.ets | 48 ++++++ .../entry/src/main/ets/pages/Benchmark09.ets | 27 ++++ .../entry/src/main/ets/pages/Benchmark10.ets | 36 +++++ .../entry/src/main/ets/pages/Benchmark11.ets | 37 +++++ .../entry/src/main/ets/pages/Benchmark12.ets | 57 +++++++ .../entry/src/main/ets/pages/Index.ets | 34 +++++ .../Benchmark/entry/src/main/module.json5 | 37 +++++ .../main/resources/base/element/color.json | 8 + .../main/resources/base/element/string.json | 16 ++ .../src/main/resources/base/media/icon.png | Bin 0 -> 2041 bytes .../main/resources/base/media/startIcon.png | Bin 0 -> 4351 bytes .../resources/base/profile/main_pages.json | 18 +++ .../main/resources/en_US/element/string.json | 16 ++ .../main/resources/zh_CN/element/string.json | 16 ++ .../src/ohosTest/ets/test/Ability.test.ets | 35 +++++ .../src/ohosTest/ets/test/Index.test.ets | 111 ++++++++++++++ .../entry/src/ohosTest/ets/test/List.test.ets | 7 + .../ohosTest/ets/testability/TestAbility.ets | 50 ++++++ .../ohosTest/ets/testability/pages/Index.ets | 17 +++ .../ets/testrunner/OpenHarmonyTestRunner.ts | 47 ++++++ .../Benchmark/entry/src/ohosTest/module.json5 | 37 +++++ .../resources/base/element/color.json | 8 + .../resources/base/element/string.json | 16 ++ .../ohosTest/resources/base/media/icon.png | Bin 0 -> 6790 bytes .../resources/base/profile/test_pages.json | 5 + .../Benchmark/hvigor/hvigor-config.json5 | 18 +++ .../Benchmark/hvigor/hvigor-wrapper.js | 1 + .../Benchmark/hvigorfile.ts | 6 + .../benchmark_pipeline/Benchmark/hvigorw | 48 ++++++ .../benchmark_pipeline/Benchmark/hvigorw.bat | 64 ++++++++ .../Benchmark/oh-package-lock.json5 | 13 ++ .../Benchmark/oh-package.json5 | 12 ++ .../arkui/benchmark_pipeline/benchmark.bat | 139 +++++++++++++++++ .../arkui/benchmark_pipeline/bytrace.bat | 10 ++ performance/arkui/benchmark_pipeline/test.bat | 2 + .../benchmark_pipeline/traceParseFile.py | 144 ++++++++++++++++++ ...1\347\272\277\346\212\245\345\221\212.xls" | Bin 0 -> 23040 bytes 55 files changed, 1546 insertions(+) create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/.gitignore create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/AppScope/app.json5 create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/AppScope/resources/base/element/string.json create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/AppScope/resources/base/media/app_icon.png create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/build-profile.json5 create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/.gitignore create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/build-profile.json5 create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/hvigorfile.ts create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/oh-package.json5 create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/entryability/EntryAbility.ts create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark01.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark02.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark03.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark04.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark05.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark052.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark06.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark07.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark08.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark09.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark10.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark11.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark12.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Index.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/module.json5 create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/element/color.json create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/element/string.json create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/media/icon.png create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/media/startIcon.png create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/profile/main_pages.json create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/en_US/element/string.json create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/zh_CN/element/string.json create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Ability.test.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Index.test.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/List.test.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/TestAbility.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/pages/Index.ets create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/module.json5 create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/resources/base/element/color.json create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/resources/base/element/string.json create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/resources/base/media/icon.png create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/resources/base/profile/test_pages.json create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/hvigor/hvigor-config.json5 create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/hvigor/hvigor-wrapper.js create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/hvigorfile.ts create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/hvigorw create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/hvigorw.bat create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/oh-package-lock.json5 create mode 100644 performance/arkui/benchmark_pipeline/Benchmark/oh-package.json5 create mode 100644 performance/arkui/benchmark_pipeline/benchmark.bat create mode 100644 performance/arkui/benchmark_pipeline/bytrace.bat create mode 100644 performance/arkui/benchmark_pipeline/test.bat create mode 100644 performance/arkui/benchmark_pipeline/traceParseFile.py create mode 100644 "performance/arkui/benchmark_pipeline/\346\270\262\346\237\223\347\256\241\347\272\277\346\212\245\345\221\212.xls" diff --git a/performance/arkui/benchmark_pipeline/Benchmark/.gitignore b/performance/arkui/benchmark_pipeline/Benchmark/.gitignore new file mode 100644 index 00000000..fbabf771 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/.gitignore @@ -0,0 +1,11 @@ +/node_modules +/oh_modules +/local.properties +/.idea +**/build +/.hvigor +.cxx +/.clangd +/.clang-format +/.clang-tidy +**/.test \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/AppScope/app.json5 b/performance/arkui/benchmark_pipeline/Benchmark/AppScope/app.json5 new file mode 100644 index 00000000..9d060e47 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/AppScope/app.json5 @@ -0,0 +1,10 @@ +{ + "app": { + "bundleName": "com.example.benchmark", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name" + } +} diff --git a/performance/arkui/benchmark_pipeline/Benchmark/AppScope/resources/base/element/string.json b/performance/arkui/benchmark_pipeline/Benchmark/AppScope/resources/base/element/string.json new file mode 100644 index 00000000..3c725784 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "Benchmark" + } + ] +} diff --git a/performance/arkui/benchmark_pipeline/Benchmark/AppScope/resources/base/media/app_icon.png b/performance/arkui/benchmark_pipeline/Benchmark/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cd45accb1dfd2fd0da16c732c72faa6e46b26521 GIT binary patch literal 2041 zcmaJ?c~nzZ9u6@;0AXaYAVN(;Kr(@>EJ+}skOWf=BA~*l4us@ELY9{%0m5QX6pnb} z(jZF|S&pLAS}3BZAfeQSvJ_h>F2Q1PYqi?o5`;m_yjZdG$1v}l_wK#F^L^iMz2}uD z#K$>1dON~kFlWvhW+Jp=tuN9J`ZlM-rl4h+ij|^D0y9;4JOuz-EdVnB6i3R-0ulk9 zApi4zAQA>!N9@-o026$1@L`d124`3G5<@_m`0f)Ug_Ie~;HT2q<_a=HH> zDwTdfD^-cW-|_xWVP$f@93UhDN-#&khZ>jZXLTi~$0`7x3REP6pk%&^2|`c>DutjN zMJD4Zs6Z}{FOpd;*mo2zm(GzXRXiCV;4m3zNCYnu3Fy=i5;2An&Lp!#LP;bRD~1&s z%VH6UY+}r6YDgG+p34OJIZ{BTn&%4s=CT&#TBkuOhdeU@g(w#guoa*b^)73=XyI65 z7Swys6)YS}?1EeZ6b!-I+yCnIya^g0>-NLsLWd8t56GZ_S3r|ZGbR+mV2ErEb9J)X zIF!njY-D-7{qtF2(?nlQ$0}!pzt=}hc*m%%)0Jb#N_K4@IC-`Pi5DahPZN7N9rH;ol;Gc*>-Go@gXKTM{eP)iJj6CYTIi}B#zLKZYD@_;m zrXmXXsFq@~ou-z!9bHoM8*(hwl>X(zm)TDcdkF4lZm$1jP*HbnD`o1$g}_R#+bu2D zr%7Y8KdsaC-V*aem5#@*M%r^GPgu%P2e-BnBClhP2yoGFe40>);=}>{NONtkXQ01p z)OX^t2Ojhddot9eg0WTIVSTNBa}7V-^_pO595w|Hx9q?k4dMp@$G7PK*TD=y;ck6J zdGRB!_RAI2nR3%tO1IkdWp*bw*?<=pM_LZb30?!oK)s;En( z!#nnd9=cXJ<}+e{XLdx(q3&ikJISe?eSHHohk+pz+$6Cv{ytvc{QXmMn2XQ9U8rvt zrJdAn(0gpSD@N=yTrI_2^P#*zQg7MTp1)k(lv(*(KtUR6@M|2WB>2wRwC-h=wk6XF zPtSes*_JwI+^d>xW489MJw5R6=t5?{R zc|E8i?RL@p9)A3ZJAQOg`}+F;<_vnWA!KxR#g%jZ@y_1Qu#Uw)kFPw_xmZ?a^e*1{ zM|ImtqA|(CaDQ@Fyvcof`MN66&VI6m6gAyAXx`%cDx6BI{Bj#}V*Rn1(b~;Am)D2u zX7(027IO?Z2VYK^1vXXpoZ@AtH~N?0rYWwtyA15`6vEf6fk&;o-L;7zFt`5nk*iOy z`<918zB+k;EytI$FAXug)jk*e@e};4e9g__w4A5ev!!)H$yC@{?vsRqJ##X1R%xPG z&_R3oDi$MtTkVqfPj)HEUDx_7wd!y{8#1%$U*Dd0sK@=#6+!XlsE-s^1f5E`R9Wo71^b~mbVdU;Fw0LG~mUQg;xsX4QYRo3B@rH_=ry>DE8ef!c2ta8UcI#26# zF|`*4wtMHe@%#eGZw`#Yj|QWuB`eRD)b~)r9mM95p_JVG%-IdcbIX5qG#GpGD+IrS zEqxb1Rg&Dadk5#7t4j68I1f!@A$efp1?I%&d*56)yl!tkz!14<$0Od_&6cGw$WW0r zjSlQA7l*6;vgfhv!cR|RmAD$+w6j`rVf=-?-D@q>kOseUVSb*~jbAS^*1h?ZL)n(9 zDa}`4etXO6`}9;{k5E^N{rcfnV_(LPwsDg``wtyS*V<19c3!PGJ3Kqy9ksvkwbJ%Z z*N(fT0{e*Wji-Ck5!3YE0j|PZ@&z`v=kitWL$bqSt!e4bH!+(|Q)CZ30^nVPfkx{s zX{6of`p=BiPb@u@IyL!tRk>?qgBqCmo-Zlt!636g?z`s~zdfwuB7DXZHvV`Usp+%Z zo*&;Biu@MHE&2j+?j^o`Cr12u<>vOe=a&8a2hlcmFjJiDR>XnD4c4DAhZWCkiAgW{ E51q9-lK=n! literal 0 HcmV?d00001 diff --git a/performance/arkui/benchmark_pipeline/Benchmark/build-profile.json5 b/performance/arkui/benchmark_pipeline/Benchmark/build-profile.json5 new file mode 100644 index 00000000..15e0608e --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/build-profile.json5 @@ -0,0 +1,49 @@ +{ + "app": { + "signingConfigs": [ + { + "name": "default", + "type": "HarmonyOS", + "material": { + "certpath": "C:\\Users\\LeeiOS\\.ohos\\config\\auto_debug_Benchmark_com.example.benchmark_2850086000500386127.cer", + "storePassword": "0000001AD47D8F3679B14E19F2972F64B45479899ACACDB677B4AD601EE1CED1375C4197BB07F2748340", + "keyAlias": "debugKey", + "keyPassword": "0000001AE49AAAB9D1A52CC4E23AE43E196F1D0263B5B74A63D4A134AE84760A59A314D5D9666E43C1AB", + "profile": "C:\\Users\\LeeiOS\\.ohos\\config\\auto_debug_Benchmark_com.example.benchmark_2850086000500386127.p7b", + "signAlg": "SHA256withECDSA", + "storeFile": "C:\\Users\\LeeiOS\\.ohos\\config\\auto_debug_Benchmark_com.example.benchmark_2850086000500386127.p12" + } + } + ], + "compileSdkVersion": 9, + "compatibleSdkVersion": 9, + "products": [ + { + "name": "default", +// "signingConfig": "default", + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/.gitignore b/performance/arkui/benchmark_pipeline/Benchmark/entry/.gitignore new file mode 100644 index 00000000..e2713a27 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/build-profile.json5 b/performance/arkui/benchmark_pipeline/Benchmark/entry/build-profile.json5 new file mode 100644 index 00000000..6877fc0c --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/build-profile.json5 @@ -0,0 +1,14 @@ +{ + "apiType": "stageMode", + "buildOption": { + }, + "targets": [ + { + "name": "default", + "runtimeOS": "HarmonyOS" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/hvigorfile.ts b/performance/arkui/benchmark_pipeline/Benchmark/entry/hvigorfile.ts new file mode 100644 index 00000000..c6edcd90 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/hvigorfile.ts @@ -0,0 +1,6 @@ +import { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/oh-package.json5 b/performance/arkui/benchmark_pipeline/Benchmark/entry/oh-package.json5 new file mode 100644 index 00000000..225946cb --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/oh-package.json5 @@ -0,0 +1,10 @@ +{ + "license": "", + "devDependencies": {}, + "author": "", + "name": "entry", + "description": "Please describe the basic information.", + "main": "", + "version": "1.0.0", + "dependencies": {} +} diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/entryability/EntryAbility.ts b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/entryability/EntryAbility.ts new file mode 100644 index 00000000..1c7aa63a --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/entryability/EntryAbility.ts @@ -0,0 +1,43 @@ +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; +import hilog from '@ohos.hilog'; +import UIAbility from '@ohos.app.ability.UIAbility'; +import Want from '@ohos.app.ability.Want'; +import window from '@ohos.window'; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy(): void { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err, data) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); + } +} diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark01.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark01.ets new file mode 100644 index 00000000..cb50c878 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark01.ets @@ -0,0 +1,28 @@ + +@Entry +@Component +struct Benchmark01 { + numArray: number[] = [] + + aboutToAppear() { + for (let index = 0; index < 100; index++) { + this.numArray.push(index); + } + } + + build() { + Column() { + ForEach(this.numArray, (number: number, index: number) => { + if (index == 0) { + Button(`Button-${number + 1}`) + .onClick(() => { + console.log('click the first button') + }) + .id('first_btn') + } else { + Button(`Button-${number + 1}`) + } + }, (num: number) => num.toString()) + } + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark02.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark02.ets new file mode 100644 index 00000000..5ecf9d51 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark02.ets @@ -0,0 +1,47 @@ + + +@Component +struct BenchmarkComponent02 { + + title: string = '' + clickAction: () => void = Function + idMark: string = '' + + build() { + if (this.idMark.length > 0) { + Button(this.title) + .onClick(this.clickAction) + .id(this.idMark) + } else { + Button(this.title) + } + } +} + + + +@Entry +@Component +struct Benchmark02 { + numArray: number[] = [] + + aboutToAppear() { + for (let index = 0; index < 100; index++) { + this.numArray.push(index); + } + } + + build() { + Column() { + ForEach(this.numArray, (number: number, index: number) => { + if (index == 0) { + BenchmarkComponent02({idMark: 'first_btn', title: `Button-${number + 1}`, clickAction: () => { + console.log('click the first button') + }}) + } else { + BenchmarkComponent02({title: `Button-${number + 1}`}) + } + }, (num: number) => num.toString()) + } + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark03.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark03.ets new file mode 100644 index 00000000..5e8d5ded --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark03.ets @@ -0,0 +1,25 @@ +@Entry +@Component +struct Benchmark03 { + + @Builder + createColumn(loop: number) { + if (loop <= 100) { + Column() { + this.createColumn(loop + 1) + }.width('100%').height('100%') + } else if (loop == 101) { + Button('This is a button') + .onClick(() => { + console.log('click the button') + }) + .id('only_btn') + } + } + + build() { + Column() { + this.createColumn(2) + }.width('100%').height('100%') + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark04.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark04.ets new file mode 100644 index 00000000..cb628009 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark04.ets @@ -0,0 +1,36 @@ + +@Component +struct BenchmarkComponent04 { + @BuilderParam buildInder: () => void + + build() { + Column() { + this.buildInder() + }.width('100%').height('100%') + } +} + +@Entry +@Component +struct Benchmark04 { + @Builder + createColumn(loop: number) { + if (loop <= 100) { + BenchmarkComponent04() { + this.createColumn(loop + 1) + } + } else if (loop == 101) { + Button('This is a button') + .onClick(() => { + console.log('click the button') + }) + .id('only_btn') + } + } + + build() { + Column() { + this.createColumn(1) + } + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark05.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark05.ets new file mode 100644 index 00000000..c3b4d8be --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark05.ets @@ -0,0 +1,31 @@ +import router from '@ohos.router'; + +@Entry +@Component +struct Benchmark05 { + numList: number[] = [] + + aboutToAppear() { + for (let index = 0; index < 100; index++) { + this.numList.push(index); + } + } + + build() { + Column() { + ForEach(this.numList, (number: number, index: number) => { + Image($r('app.media.startIcon')).width(88).height(88) + .id(`id_${index}`) + .onClick(() => { + router.pushUrl({url: 'pages/Benchmark052'}) + }) + }, (num: number) => num.toString()) + } + } + + pageTransition() { + PageTransitionEnter({ type: RouteType.None, duration: 0 }) // 页面显示不需要转场动画 + PageTransitionExit({ duration: 1000 }).translate({x: 100, y: 100}).opacity(0) // 跳转时页面消失转场动画 + } + +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark052.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark052.ets new file mode 100644 index 00000000..5fb36133 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark052.ets @@ -0,0 +1,24 @@ +@Entry +@Component +struct Benchmark052 { + numList: number[] = [] + + aboutToAppear() { + for (let index = 0; index < 100; index++) { + this.numList.push(index); + } + } + + build() { + Column() { + ForEach(this.numList, (number: number) => { + Image($r('app.media.startIcon')).width(88).height(88) + }, (num: number) => num.toString()) + } + } + + pageTransition() { + PageTransitionEnter({ duration: 1000 }).slide(SlideEffect.Left) // 跳转到此页面时的转场动画 + PageTransitionExit({type: RouteType.None, duration: 0}) // 此页面消失不需要动画 + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark06.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark06.ets new file mode 100644 index 00000000..f2d22b9d --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark06.ets @@ -0,0 +1,29 @@ +@Entry +@Component +struct Benchmark06 { + @State flag: boolean = false + numList: number[] = [] + + aboutToAppear() { + for (let index = 0; index < 100; index++) { + this.numList.push(index); + } + + setTimeout(() => { + animateTo({duration: 1500}, () => { + this.flag = true + }) + }, 500) + } + + build() { + Column() { + if (this.flag) { + ForEach(this.numList, (number: number, index: number) => { + Image($r('app.media.startIcon')).width(88).height(88) + .transition({type: TransitionType.Insert, scale: {x: 0.3, y: 0.3}, rotate: {x: 0, y: 0, z: 1, angle: 360}}) + }, (num: number) => num.toString()) + } + } + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark07.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark07.ets new file mode 100644 index 00000000..8611cf96 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark07.ets @@ -0,0 +1,29 @@ + +@Entry +@Component +struct Benchmark07 { + numArray: number[] = [] + @State btnTitle: string = '' + + aboutToAppear() { + for (let index = 0; index < 100; index++) { + this.numArray.push(index); + } + } + + build() { + Column() { + ForEach(this.numArray, (number: number, index: number) => { + if (index == 0) { + Button(this.btnTitle.length > 0 ? this.btnTitle : `Button-${number + 1}`) + .onClick(() => { + this.btnTitle = 'Button change title' + }) + .id('first_btn') + } else { + Button(this.btnTitle.length > 0 ? this.btnTitle : `Button-${number + 1}`) + } + }, (num: number) => num.toString()) + } + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark08.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark08.ets new file mode 100644 index 00000000..b421c984 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark08.ets @@ -0,0 +1,48 @@ + + +@Component +struct BenchmarkComponent08 { + + @Prop title: string = '' + clickAction: () => void = Function + idMark: string = '' + + build() { + if (this.idMark.length > 0) { + Button(this.title) + .onClick(this.clickAction) + .id(this.idMark) + } else { + Button(this.title) + } + } +} + + + +@Entry +@Component +struct Benchmark08 { + numArray: number[] = [] + @State btnTitle: string = '' + + aboutToAppear() { + for (let index = 0; index < 100; index++) { + this.numArray.push(index); + } + } + + build() { + Column() { + ForEach(this.numArray, (number: number, index: number) => { + if (index == 0) { + BenchmarkComponent08({idMark: 'first_btn', title: this.btnTitle.length > 0 ? this.btnTitle : `Button-${number + 1}`, clickAction: () => { + this.btnTitle = 'Button change title' + }}) + } else { + BenchmarkComponent08({title: this.btnTitle.length > 0 ? this.btnTitle : `Button-${number + 1}`}) + } + }, (num: number) => num.toString()) + } + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark09.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark09.ets new file mode 100644 index 00000000..2de2f6a6 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark09.ets @@ -0,0 +1,27 @@ + +@Entry +@Component +struct Benchmark09 { + numArray: number[] = [] + + aboutToAppear() { + for (let index = 0; index < 100; index++) { + this.numArray.push(index); + } + } + + build() { + Scroll() { + Column() { + ForEach(this.numArray, (number: number, index: number) => { + Button(`Button-${number + 1}`) + .onVisibleAreaChange([0.0, 1.0], (isVisible: boolean, currentRatio: number) => { + console.log(`isVisible=${isVisible}, currentRatio=${currentRatio}`) + }) + }, (num: number) => num.toString()) + } + } + .width('100%').height('100%') + .id('scroll_benchmark09') + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark10.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark10.ets new file mode 100644 index 00000000..97c7daee --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark10.ets @@ -0,0 +1,36 @@ +@Component +struct BenchmarkComponent10 { + title: string = '' + + build() { + Button(this.title) + } +} + + +@Entry +@Component +struct Benchmark10 { + numArray: number[] = [] + + aboutToAppear() { + for (let index = 0; index < 100; index++) { + this.numArray.push(index); + } + } + + build() { + Scroll() { + Column() { + ForEach(this.numArray, (number: number, index: number) => { + BenchmarkComponent10({ title: `Button-${number + 1}` }) + .onVisibleAreaChange([0.0, 1.0], (isVisible: boolean, currentRatio: number) => { + console.log(`isVisible=${isVisible}, currentRatio=${currentRatio}`) + }) + }, (num: number) => num.toString()) + } + } + .width('100%').height('100%') + .id('scroll_benchmark10') + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark11.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark11.ets new file mode 100644 index 00000000..8231ed97 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark11.ets @@ -0,0 +1,37 @@ +import thermal from '@ohos.thermal'; + +@Entry +@Component +struct Benchmark11 { + numArray: number[] = [] + @State btnWidth: number = 100 + @State btnHeight: number = 45 + + aboutToAppear() { + for (let index = 0; index < 100; index++) { + this.numArray.push(index); + } + } + + build() { + Column() { + ForEach(this.numArray, (number: number, index: number) => { + if (index == 0) { + Button(`Button-${number + 1}`) + .onClick(() => { + this.btnWidth = 180 + this.btnHeight = 65 + }) + .id('first_btn') + .width(this.btnWidth).height(this.btnHeight) + .onAreaChange((oldValue: Area, newValue: Area) => { + console.log(`old-width-height=${oldValue.width}-${oldValue.height}====new-width-height=${newValue.width}-${newValue.height}`) + }) + } else { + Button(`Button-${number + 1}`) + .width(this.btnWidth).height(this.btnHeight) + } + }, (num: number) => num.toString()) + } + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark12.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark12.ets new file mode 100644 index 00000000..5577197e --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark12.ets @@ -0,0 +1,57 @@ + + +@Component +struct BenchmarkComponent12 { + + title: string = '' + clickAction: () => void = Function + idMark: string = '' + + build() { + if (this.idMark.length > 0) { + Button(this.title) + .width('100%').height('100%') + .onClick(this.clickAction) + .id(this.idMark) + } else { + Button(this.title) + .width('100%').height('100%') + } + } +} + + + +@Entry +@Component +struct Benchmark12 { + numArray: number[] = [] + @State btnWidth: number = 100 + @State btnHeight: number = 45 + + aboutToAppear() { + for (let index = 0; index < 100; index++) { + this.numArray.push(index); + } + } + + build() { + Column() { + ForEach(this.numArray, (number: number, index: number) => { + if (index == 0) { + BenchmarkComponent12({idMark: 'first_btn', title: `Button-${number + 1}`, clickAction: () => { + this.btnWidth = 180 + this.btnHeight = 65 + }}) + .width(this.btnWidth).height(this.btnHeight) + .onAreaChange((oldValue: Area, newValue: Area) => { + console.log(`old-width-height=${oldValue.width}-${oldValue.height}====new-width-height=${newValue.width}-${newValue.height}`) + }) + } else { + BenchmarkComponent12({title: `Button-${number + 1}`}) + .width(this.btnWidth).height(this.btnHeight) + } + }, (num: number) => num.toString()) + } + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Index.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Index.ets new file mode 100644 index 00000000..565705f6 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,34 @@ +import router from '@ohos.router'; + +@Entry +@Component +struct Index { + buttons: string[] = [ + 'benchmark01', + 'benchmark02', + 'benchmark03', + 'benchmark04', + 'benchmark05', + 'benchmark06', + 'benchmark07', + 'benchmark08', + 'benchmark09', + 'benchmark10', + 'benchmark11', + 'benchmark12' + ] + + build() { + Column() { + ForEach(this.buttons, (item: string) => { + Button(item).onClick((event: ClickEvent) => { + let capitalized = item.charAt(0).toUpperCase() + item.slice(1) + let page = `pages/${capitalized}` + router.pushUrl({url: page}) + }).id(item) + }, (item: string) => item) + } + .width('100%').height('100%') + + } +} diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/module.json5 b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/module.json5 new file mode 100644 index 00000000..b2de8aa0 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/module.json5 @@ -0,0 +1,37 @@ +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "phone", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ts", + "description": "$string:EntryAbility_desc", + "icon": "$media:icon", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:startIcon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/element/color.json b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/element/color.json new file mode 100644 index 00000000..3c712962 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/element/string.json b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/element/string.json new file mode 100644 index 00000000..f9459551 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/media/icon.png b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cd45accb1dfd2fd0da16c732c72faa6e46b26521 GIT binary patch literal 2041 zcmaJ?c~nzZ9u6@;0AXaYAVN(;Kr(@>EJ+}skOWf=BA~*l4us@ELY9{%0m5QX6pnb} z(jZF|S&pLAS}3BZAfeQSvJ_h>F2Q1PYqi?o5`;m_yjZdG$1v}l_wK#F^L^iMz2}uD z#K$>1dON~kFlWvhW+Jp=tuN9J`ZlM-rl4h+ij|^D0y9;4JOuz-EdVnB6i3R-0ulk9 zApi4zAQA>!N9@-o026$1@L`d124`3G5<@_m`0f)Ug_Ie~;HT2q<_a=HH> zDwTdfD^-cW-|_xWVP$f@93UhDN-#&khZ>jZXLTi~$0`7x3REP6pk%&^2|`c>DutjN zMJD4Zs6Z}{FOpd;*mo2zm(GzXRXiCV;4m3zNCYnu3Fy=i5;2An&Lp!#LP;bRD~1&s z%VH6UY+}r6YDgG+p34OJIZ{BTn&%4s=CT&#TBkuOhdeU@g(w#guoa*b^)73=XyI65 z7Swys6)YS}?1EeZ6b!-I+yCnIya^g0>-NLsLWd8t56GZ_S3r|ZGbR+mV2ErEb9J)X zIF!njY-D-7{qtF2(?nlQ$0}!pzt=}hc*m%%)0Jb#N_K4@IC-`Pi5DahPZN7N9rH;ol;Gc*>-Go@gXKTM{eP)iJj6CYTIi}B#zLKZYD@_;m zrXmXXsFq@~ou-z!9bHoM8*(hwl>X(zm)TDcdkF4lZm$1jP*HbnD`o1$g}_R#+bu2D zr%7Y8KdsaC-V*aem5#@*M%r^GPgu%P2e-BnBClhP2yoGFe40>);=}>{NONtkXQ01p z)OX^t2Ojhddot9eg0WTIVSTNBa}7V-^_pO595w|Hx9q?k4dMp@$G7PK*TD=y;ck6J zdGRB!_RAI2nR3%tO1IkdWp*bw*?<=pM_LZb30?!oK)s;En( z!#nnd9=cXJ<}+e{XLdx(q3&ikJISe?eSHHohk+pz+$6Cv{ytvc{QXmMn2XQ9U8rvt zrJdAn(0gpSD@N=yTrI_2^P#*zQg7MTp1)k(lv(*(KtUR6@M|2WB>2wRwC-h=wk6XF zPtSes*_JwI+^d>xW489MJw5R6=t5?{R zc|E8i?RL@p9)A3ZJAQOg`}+F;<_vnWA!KxR#g%jZ@y_1Qu#Uw)kFPw_xmZ?a^e*1{ zM|ImtqA|(CaDQ@Fyvcof`MN66&VI6m6gAyAXx`%cDx6BI{Bj#}V*Rn1(b~;Am)D2u zX7(027IO?Z2VYK^1vXXpoZ@AtH~N?0rYWwtyA15`6vEf6fk&;o-L;7zFt`5nk*iOy z`<918zB+k;EytI$FAXug)jk*e@e};4e9g__w4A5ev!!)H$yC@{?vsRqJ##X1R%xPG z&_R3oDi$MtTkVqfPj)HEUDx_7wd!y{8#1%$U*Dd0sK@=#6+!XlsE-s^1f5E`R9Wo71^b~mbVdU;Fw0LG~mUQg;xsX4QYRo3B@rH_=ry>DE8ef!c2ta8UcI#26# zF|`*4wtMHe@%#eGZw`#Yj|QWuB`eRD)b~)r9mM95p_JVG%-IdcbIX5qG#GpGD+IrS zEqxb1Rg&Dadk5#7t4j68I1f!@A$efp1?I%&d*56)yl!tkz!14<$0Od_&6cGw$WW0r zjSlQA7l*6;vgfhv!cR|RmAD$+w6j`rVf=-?-D@q>kOseUVSb*~jbAS^*1h?ZL)n(9 zDa}`4etXO6`}9;{k5E^N{rcfnV_(LPwsDg``wtyS*V<19c3!PGJ3Kqy9ksvkwbJ%Z z*N(fT0{e*Wji-Ck5!3YE0j|PZ@&z`v=kitWL$bqSt!e4bH!+(|Q)CZ30^nVPfkx{s zX{6of`p=BiPb@u@IyL!tRk>?qgBqCmo-Zlt!636g?z`s~zdfwuB7DXZHvV`Usp+%Z zo*&;Biu@MHE&2j+?j^o`Cr12u<>vOe=a&8a2hlcmFjJiDR>XnD4c4DAhZWCkiAgW{ E51q9-lK=n! literal 0 HcmV?d00001 diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/media/startIcon.png b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/media/startIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..366f76459ffd4494ec40d0ddd5c59385b9c5da11 GIT binary patch literal 4351 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 literal 0 HcmV?d00001 diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/profile/main_pages.json b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 00000000..ca36dcbb --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,18 @@ +{ + "src": [ + "pages/Index", + "pages/Benchmark01", + "pages/Benchmark02", + "pages/Benchmark03", + "pages/Benchmark04", + "pages/Benchmark05", + "pages/Benchmark052", + "pages/Benchmark06", + "pages/Benchmark07", + "pages/Benchmark08", + "pages/Benchmark09", + "pages/Benchmark10", + "pages/Benchmark11", + "pages/Benchmark12" + ] +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/en_US/element/string.json b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/en_US/element/string.json new file mode 100644 index 00000000..f9459551 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/en_US/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/zh_CN/element/string.json b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/zh_CN/element/string.json new file mode 100644 index 00000000..597ecf95 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/resources/zh_CN/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "模块描述" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Ability.test.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 00000000..8aa37497 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,35 @@ +import hilog from '@ohos.hilog'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Index.test.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Index.test.ets new file mode 100644 index 00000000..70c9935a --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Index.test.ets @@ -0,0 +1,111 @@ +import { describe, it, expect } from '@ohos/hypium' +import abilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry' +import Want from '@ohos.app.ability.Want' +import { Driver, ON } from '@ohos.UiTest' + +// 启动APP +async function startApp() { + let want: Want = { + bundleName: abilityDelegatorRegistry.getArguments().bundleName, + abilityName: 'EntryAbility' + } + await abilityDelegatorRegistry.getAbilityDelegator().startAbility(want) +} + +// 通用测试case +async function commonTestCase(pageBtnId: string, compId: string) { + // 启动App + await startApp() + // 创建驱动器 + let driver = Driver.create() + await driver.delayMs(5000) // 延迟1s + // 点击跳转用例页面 + let bk = await driver.findComponent(ON.id(pageBtnId)) + await bk.click() + // 跳转页面耗时 + await driver.delayMs(1000) + // 如果是benchmark09和benchmark10,滑动到底部 + if (pageBtnId === 'benchmark09' || pageBtnId === 'benchmark10') { + let scroll = await driver.findComponent(ON.id(`scroll_${pageBtnId}`)) + await scroll.scrollToBottom(40000) + } + // 寻找操作组件 + if (compId.length > 0) { + let firstBtn = await driver.findComponent(ON.id(compId)) + await firstBtn.click() + } + // **当前页面跳转or显示有转场动画时间or按钮点击事件处理,需要延迟** + await driver.delayMs(2000) + // 断言 + expect(1).assertEqual(1) +} + +export default function IndexTest() { + describe('IndexTest', () => { + // 用例1-点击某一按钮 + it('benchmark01_click_button', 0, async () => { + await commonTestCase('benchmark01', 'first_btn') + }) + // 用例5、9-启动应用 + it('benchmark01_start_app', 0, async () => { + await commonTestCase('benchmark01', '') + }) + // 用例2-点击某一按钮 + it('benchmark02_click_button', 0, async () => { + await commonTestCase('benchmark02', 'first_btn') + }) + // 用例6、10、15-启动应用 + it('benchmark02_start_app', 0, async () => { + await commonTestCase('benchmark02', '') + }) + // 用例3-点击button + it('benchmark03_click_button', 0, async () => { + await commonTestCase('benchmark03', 'only_btn') + }) + // 用例7、11-启动应用 + it('benchmark03_start_app', 0, async () => { + await commonTestCase('benchmark03', '') + }) + // 用例4-点击button + it('benchmark04_click_button', 0, async () => { + await commonTestCase('benchmark04', 'only_btn') + }) + // 用例8、12-启动应用 + it('benchmark04_start_app', 0, async () => { + await commonTestCase('benchmark04', '') + }) + // 用例13-页面1跳转页面2(有页面转场动画) + it("benchmark05_push_page", 0, async () => { + await commonTestCase('benchmark05', 'id_0') + }) + // 用例14-启动应用 + it('benchmark06_start_app', 0, async () => { + await commonTestCase('benchmark06', '') + }) + // 用例15-点击button改变button文字 + it('benchmark07_change_title', 0, async () => { + await commonTestCase('benchmark07', 'first_btn') + }) + // 用例16-点击button改变button文字 + it('benchmark08_change_title', 0, async () => { + await commonTestCase('benchmark08', 'first_btn') + }) + // 用例17-滑动到底部 + it("benchmark09_change_visible", 0, async () => { + await commonTestCase('benchmark09', '') + }) + // 用例18-滑动到底部 + it('benchmark10_change_visible', 0, async () => { + await commonTestCase('benchmark10', '') + }) + // 用例19-点击button改变button宽高 + it('benchmark11_change_size', 0, async () => { + await commonTestCase('benchmark11', 'first_btn') + }) + // 用例20-点击button改变button宽高 + it('benchmark12_change_size', 0, async () => { + await commonTestCase('benchmark12', 'first_btn') + }) + + }) +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/List.test.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 00000000..c29efbaf --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,7 @@ +import IndexTest from './Index.test' +import abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); + IndexTest() +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/TestAbility.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/TestAbility.ets new file mode 100644 index 00000000..9484761c --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/TestAbility.ets @@ -0,0 +1,50 @@ +import UIAbility from '@ohos.app.ability.UIAbility'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import hilog from '@ohos.hilog'; +import { Hypium } from '@ohos/hypium'; +import testsuite from '../test/List.test'; +import window from '@ohos.window'; +import Want from '@ohos.app.ability.Want'; +import AbilityConstant from '@ohos.app.ability.AbilityConstant'; + +export default class TestAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onCreate'); + hilog.info(0x0000, 'testTag', '%{public}s', 'want param:' + JSON.stringify(want) ?? ''); + hilog.info(0x0000, 'testTag', '%{public}s', 'launchParam:' + JSON.stringify(launchParam) ?? ''); + let abilityDelegator: AbilityDelegatorRegistry.AbilityDelegator; + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + let abilityDelegatorArguments: AbilityDelegatorRegistry.AbilityDelegatorArgs; + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments(); + hilog.info(0x0000, 'testTag', '%{public}s', 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite); + } + + onDestroy() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage) { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageCreate'); + windowStage.loadContent('testability/pages/Index', (err, data) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', + JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageDestroy'); + } + + onForeground() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onForeground'); + } + + onBackground() { + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onBackground'); + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/pages/Index.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/pages/Index.ets new file mode 100644 index 00000000..423b4276 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/pages/Index.ets @@ -0,0 +1,17 @@ +@Entry +@Component +struct Index { + @State message: string = 'Hello World'; + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + } + .width('100%') + } + .height('100%') + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts new file mode 100644 index 00000000..917d27a5 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts @@ -0,0 +1,47 @@ +import hilog from '@ohos.hilog'; +import TestRunner from '@ohos.application.testRunner'; +import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; +import Want from '@ohos.app.ability.Want'; + +let abilityDelegator: AbilityDelegatorRegistry.AbilityDelegator | undefined = undefined +let abilityDelegatorArguments: AbilityDelegatorRegistry.AbilityDelegatorArgs | undefined = undefined + +async function onAbilityCreateCallback() { + hilog.info(0x0000, 'testTag', '%{public}s', 'onAbilityCreateCallback'); +} + +async function addAbilityMonitorCallback(err : Error) { + hilog.info(0x0000, 'testTag', 'addAbilityMonitorCallback : %{public}s', JSON.stringify(err) ?? ''); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner OnPrepare '); + } + + async onRun() { + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + const bundleName = abilityDelegatorArguments.bundleName; + const testAbilityName = 'TestAbility'; + let lMonitor: AbilityDelegatorRegistry.AbilityMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback) + const want: Want = { + bundleName: bundleName, + abilityName: testAbilityName + }; + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); + abilityDelegator.startAbility(want, (err, data) => { + hilog.info(0x0000, 'testTag', 'startAbility : err : %{public}s', JSON.stringify(err) ?? ''); + hilog.info(0x0000, 'testTag', 'startAbility : data : %{public}s',JSON.stringify(data) ?? ''); + }) + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun end'); + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/module.json5 b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/module.json5 new file mode 100644 index 00000000..c031340a --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/module.json5 @@ -0,0 +1,37 @@ +{ + "module": { + "name": "entry_test", + "type": "feature", + "description": "$string:module_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "phone", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "abilities": [ + { + "name": "TestAbility", + "srcEntry": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "exported": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/resources/base/element/color.json b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/resources/base/element/color.json new file mode 100644 index 00000000..3c712962 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/resources/base/element/string.json b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/resources/base/element/string.json new file mode 100644 index 00000000..65d8fa5a --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + } + ] +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/resources/base/media/icon.png b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 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.default.createHash(u);u.hash=(D,e)=>(0,u.createHash)(e).update(D).digest("hex");u.hashFile=(D,e)=>{if(i.default.existsSync(D))return(0,u.hash)(i.default.readFileSync(D,"utf-8"),e)}}(v);var g={},m={},R={};Object.defineProperty(R,"__esModule",{value:!0}),R.Unicode=void 0;class y{}R.Unicode=y,y.SPACE_SEPARATOR=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,y.ID_START=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,y.ID_CONTINUE=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(m,"__esModule",{value:!0}),m.JudgeUtil=void 0;const I=R;m.JudgeUtil=class{static isIgnoreChar(u){return"string"==typeof u&&("\t"===u||"\v"===u||"\f"===u||" "===u||" "===u||"\ufeff"===u||"\n"===u||"\r"===u||"\u2028"===u||"\u2029"===u)}static isSpaceSeparator(u){return"string"==typeof u&&I.Unicode.SPACE_SEPARATOR.test(u)}static isIdStartChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||I.Unicode.ID_START.test(u))}static isIdContinueChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||"‌"===u||"‍"===u||I.Unicode.ID_CONTINUE.test(u))}static isDigitWithoutZero(u){return/[1-9]/.test(u)}static isDigit(u){return"string"==typeof u&&/[0-9]/.test(u)}static isHexDigit(u){return"string"==typeof u&&/[0-9A-Fa-f]/.test(u)}};var N=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(g,"__esModule",{value:!0}),g.parseJsonText=g.parseJsonFile=void 0;const b=N(e),S=N(D),w=N(u),H=m;var x;!function(u){u[u.Char=0]="Char",u[u.EOF=1]="EOF",u[u.Identifier=2]="Identifier"}(x||(x={}));let M,T,V,G,j,J,W="start",U=[],L=0,$=1,k=0,K=!1,z="default",q="'",Z=1;function X(u,D=!1){T=String(u),W="start",U=[],L=0,$=1,k=0,G=void 0,K=D;do{M=Q(),nu[W]()}while("eof"!==M.type);return G}function Q(){for(z="default",j="",q="'",Z=1;;){J=Y();const u=Du[z]();if(u)return u}}function Y(){if(T[L])return String.fromCodePoint(T.codePointAt(L))}function uu(){const u=Y();return"\n"===u?($++,k=0):u?k+=u.length:k++,u&&(L+=u.length),u}g.parseJsonFile=function(u,D=!1,e="utf-8"){const t=b.default.readFileSync(w.default.resolve(u),{encoding:e});try{return X(t,D)}catch(D){if(D instanceof SyntaxError){const e=D.message.split("at");if(2===e.length)throw new Error(`${e[0].trim()}${S.default.EOL}\t at ${u}:${e[1].trim()}`)}throw new Error(`${u} is not in valid JSON/JSON5 format.`)}},g.parseJsonText=X;const Du={default(){switch(J){case"/":return uu(),void(z="comment");case void 0:return uu(),eu("eof")}if(!H.JudgeUtil.isIgnoreChar(J)&&!H.JudgeUtil.isSpaceSeparator(J))return Du[W]();uu()},start(){z="value"},beforePropertyName(){switch(J){case"$":case"_":return j=uu(),void(z="identifierName");case"\\":return uu(),void(z="identifierNameStartEscape");case"}":return eu("punctuator",uu());case'"':case"'":return q=J,uu(),void(z="string")}if(H.JudgeUtil.isIdStartChar(J))return j+=uu(),void(z="identifierName");throw Eu(x.Char,uu())},afterPropertyName(){if(":"===J)return eu("punctuator",uu());throw Eu(x.Char,uu())},beforePropertyValue(){z="value"},afterPropertyValue(){switch(J){case",":case"}":return eu("punctuator",uu())}throw Eu(x.Char,uu())},beforeArrayValue(){if("]"===J)return eu("punctuator",uu());z="value"},afterArrayValue(){switch(J){case",":case"]":return eu("punctuator",uu())}throw Eu(x.Char,uu())},end(){throw Eu(x.Char,uu())},comment(){switch(J){case"*":return uu(),void(z="multiLineComment");case"/":return uu(),void(z="singleLineComment")}throw Eu(x.Char,uu())},multiLineComment(){switch(J){case"*":return uu(),void(z="multiLineCommentAsterisk");case void 0:throw Eu(x.Char,uu())}uu()},multiLineCommentAsterisk(){switch(J){case"*":return void uu();case"/":return uu(),void(z="default");case void 0:throw Eu(x.Char,uu())}uu(),z="multiLineComment"},singleLineComment(){switch(J){case"\n":case"\r":case"\u2028":case"\u2029":return uu(),void(z="default");case void 0:return uu(),eu("eof")}uu()},value(){switch(J){case"{":case"[":return eu("punctuator",uu());case"n":return uu(),tu("ull"),eu("null",null);case"t":return uu(),tu("rue"),eu("boolean",!0);case"f":return uu(),tu("alse"),eu("boolean",!1);case"-":case"+":return"-"===uu()&&(Z=-1),void(z="numerical");case".":case"0":case"I":case"N":return void(z="numerical");case'"':case"'":return q=J,uu(),j="",void(z="string")}if(void 0===J||!H.JudgeUtil.isDigitWithoutZero(J))throw Eu(x.Char,uu());z="numerical"},numerical(){switch(J){case".":return j=uu(),void(z="decimalPointLeading");case"0":return j=uu(),void(z="zero");case"I":return uu(),tu("nfinity"),eu("numeric",Z*(1/0));case"N":return uu(),tu("aN"),eu("numeric",NaN)}if(void 0!==J&&H.JudgeUtil.isDigitWithoutZero(J))return j=uu(),void(z="decimalInteger");throw Eu(x.Char,uu())},zero(){switch(J){case".":case"e":case"E":return void(z="decimal");case"x":case"X":return j+=uu(),void(z="hexadecimal")}return eu("numeric",0)},decimalInteger(){switch(J){case".":case"e":case"E":return void(z="decimal")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimal(){switch(J){case".":j+=uu(),z="decimalFraction";break;case"e":case"E":j+=uu(),z="decimalExponent"}},decimalPointLeading(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalFraction");throw Eu(x.Char,uu())},decimalFraction(){switch(J){case"e":case"E":return j+=uu(),void(z="decimalExponent")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimalExponent(){switch(J){case"+":case"-":return j+=uu(),void(z="decimalExponentSign")}if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentSign(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentInteger(){if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},hexadecimal(){if(H.JudgeUtil.isHexDigit(J))return j+=uu(),void(z="hexadecimalInteger");throw Eu(x.Char,uu())},hexadecimalInteger(){if(!H.JudgeUtil.isHexDigit(J))return eu("numeric",Z*Number(j));j+=uu()},identifierNameStartEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":break;default:if(!H.JudgeUtil.isIdStartChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},identifierName(){switch(J){case"$":case"_":case"‌":case"‍":return void(j+=uu());case"\\":return uu(),void(z="identifierNameEscape")}if(!H.JudgeUtil.isIdContinueChar(J))return eu("identifier",j);j+=uu()},identifierNameEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":case"‌":case"‍":break;default:if(!H.JudgeUtil.isIdContinueChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},string(){switch(J){case"\\":return uu(),void(j+=function(){const u=Y(),D=function(){switch(Y()){case"b":return uu(),"\b";case"f":return uu(),"\f";case"n":return uu(),"\n";case"r":return uu(),"\r";case"t":return uu(),"\t";case"v":return uu(),"\v"}return}();if(D)return D;switch(u){case"0":if(uu(),H.JudgeUtil.isDigit(Y()))throw Eu(x.Char,uu());return"\0";case"x":return uu(),function(){let u="",D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());if(u+=uu(),D=Y(),!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());return u+=uu(),String.fromCodePoint(parseInt(u,16))}();case"u":return uu(),ru();case"\n":case"\u2028":case"\u2029":return uu(),"";case"\r":return uu(),"\n"===Y()&&uu(),""}if(void 0===u||H.JudgeUtil.isDigitWithoutZero(u))throw Eu(x.Char,uu());return uu()}());case'"':case"'":if(J===q){const u=eu("string",j);return uu(),u}return void(j+=uu());case"\n":case"\r":case void 0:throw Eu(x.Char,uu());case"\u2028":case"\u2029":!function(u){console.warn(`JSON5: '${Fu(u)}' in strings is not valid ECMAScript; consider escaping.`)}(J)}j+=uu()}};function eu(u,D){return{type:u,value:D,line:$,column:k}}function tu(u){for(const D of u){if(Y()!==D)throw Eu(x.Char,uu());uu()}}function ru(){let u="",D=4;for(;D-- >0;){const D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());u+=uu()}return String.fromCodePoint(parseInt(u,16))}const nu={start(){if("eof"===M.type)throw Eu(x.EOF);iu()},beforePropertyName(){switch(M.type){case"identifier":case"string":return V=M.value,void(W="afterPropertyName");case"punctuator":return void Cu();case"eof":throw Eu(x.EOF)}},afterPropertyName(){if("eof"===M.type)throw Eu(x.EOF);W="beforePropertyValue"},beforePropertyValue(){if("eof"===M.type)throw Eu(x.EOF);iu()},afterPropertyValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforePropertyName");case"}":Cu()}},beforeArrayValue(){if("eof"===M.type)throw Eu(x.EOF);"punctuator"!==M.type||"]"!==M.value?iu():Cu()},afterArrayValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforeArrayValue");case"]":Cu()}},end(){}};function iu(){const u=function(){let u;switch(M.type){case"punctuator":switch(M.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=M.value}return u}();if(K&&"object"==typeof u&&(u._line=$,u._column=k),void 0===G)G=u;else{const D=U[U.length-1];Array.isArray(D)?K&&"object"!=typeof u?D.push({value:u,_line:$,_column:k}):D.push(u):D[V]=K&&"object"!=typeof u?{value:u,_line:$,_column:k}:u}!function(u){if(u&&"object"==typeof u)U.push(u),W=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}}(u)}function Cu(){U.pop();const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}function Fu(u){const D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){const D=u.charCodeAt(0).toString(16);return`\\x${`00${D}`.substring(D.length)}`}return u}function Eu(u,D){let e="";switch(u){case x.Char:e=void 0===D?`JSON5: invalid end of input at ${$}:${k}`:`JSON5: invalid character '${Fu(D)}' at ${$}:${k}`;break;case x.EOF:e=`JSON5: invalid end of input at ${$}:${k}`;break;case x.Identifier:k-=5,e=`JSON5: invalid identifier character at ${$}:${k}`}const t=new Au(e);return t.lineNumber=$,t.columnNumber=k,t}class Au extends SyntaxError{}var ou={},au=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),cu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),su=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&au(D,u,e);return cu(D,u),D},lu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(ou,"__esModule",{value:!0}),ou.isFileExists=ou.offlinePluginConversion=ou.executeCommand=ou.getNpmPath=ou.hasNpmPackInPaths=void 0;const Bu=r,du=lu(e),fu=su(u),_u=i,pu=l;ou.hasNpmPackInPaths=function(u,D){try{return require.resolve(u,{paths:[...D]}),!0}catch(u){return!1}},ou.getNpmPath=function(){const u=process.execPath;return fu.join(fu.dirname(u),_u.NPM_TOOL)},ou.executeCommand=function(u,D,e){0!==(0,Bu.spawnSync)(u,D,e).status&&(0,pu.logErrorAndExit)(`Error: ${u} ${D} execute failed.See above for details.`)},ou.offlinePluginConversion=function(u,D){return D.startsWith("file:")||D.endsWith(".tgz")?fu.resolve(u,_u.HVIGOR,D.replace("file:","")):D},ou.isFileExists=function(u){return du.default.existsSync(u)&&du.default.statSync(u).isFile()};var Ou=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),hu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),Pu=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&Ou(D,u,e);return hu(D,u),D},vu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(P,"__esModule",{value:!0});var gu=P.initProjectWorkSpace=void 0;const mu=Pu(e),Ru=vu(D),yu=Pu(u),Iu=v,Nu=i,bu=g,Su=l,wu=ou;let Hu,xu,Mu;function Tu(u,D,e){return void 0!==e.dependencies&&(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,D.dependencies[u])===yu.normalize(e.dependencies[u])}function Vu(){const u=yu.join(Mu,Nu.WORK_SPACE);if((0,Su.logInfoPrintConsole)("Hvigor cleaning..."),!mu.existsSync(u))return;const D=mu.readdirSync(u);if(!D||0===D.length)return;const e=yu.resolve(Mu,"node_modules","@ohos","hvigor","bin","hvigor.js");mu.existsSync(e)&&(0,wu.executeCommand)(process.argv[0],[e,"--stop-daemon"],{});try{D.forEach((D=>{mu.rmSync(yu.resolve(u,D),{recursive:!0})}))}catch(D){(0,Su.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${u}.`)}}gu=P.initProjectWorkSpace=function(){if(Hu=function(){const u=yu.resolve(Nu.HVIGOR_PROJECT_WRAPPER_HOME,Nu.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);mu.existsSync(u)||(0,Su.logErrorAndExit)(`Error: Hvigor config file ${u} does not exist.`);return(0,bu.parseJsonFile)(u)}(),Mu=function(u){let D;D=function(u){let D=u.hvigorVersion;if(D.startsWith("file:")||D.endsWith(".tgz"))return!1;const e=u.dependencies,t=Object.getOwnPropertyNames(e);for(const u of t){const D=e[u];if(D.startsWith("file:")||D.endsWith(".tgz"))return!1}if(1===t.length&&"@ohos/hvigor-ohos-plugin"===t[0])return D>"2.5.0";return!1}(u)?function(u){let D=`${Nu.HVIGOR_ENGINE_PACKAGE_NAME}@${u.hvigorVersion}`;const e=u.dependencies;if(e){Object.getOwnPropertyNames(e).sort().forEach((u=>{D+=`,${u}@${e[u]}`}))}return(0,Iu.hash)(D)}(u):(0,Iu.hash)(process.cwd());return yu.resolve(Ru.default.homedir(),".hvigor","project_caches",D)}(Hu),xu=function(){const u=yu.resolve(Mu,Nu.WORK_SPACE,Nu.DEFAULT_PACKAGE_JSON);return mu.existsSync(u)?(0,bu.parseJsonFile)(u):{dependencies:{}}}(),!(0,wu.hasNpmPackInPaths)(Nu.HVIGOR_ENGINE_PACKAGE_NAME,[yu.join(Mu,Nu.WORK_SPACE)])||(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion)!==xu.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]||!function(){function u(u){const D=null==u?void 0:u.dependencies;return void 0===D?0:Object.getOwnPropertyNames(D).length}const D=u(Hu),e=u(xu);if(D+1!==e)return!1;for(const u in null==Hu?void 0:Hu.dependencies)if(!(0,wu.hasNpmPackInPaths)(u,[yu.join(Mu,Nu.WORK_SPACE)])||!Tu(u,Hu,xu))return!1;return!0}()){Vu();try{!function(){(0,Su.logInfoPrintConsole)("Hvigor installing...");for(const u in Hu.dependencies)Hu.dependencies[u]&&(Hu.dependencies[u]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.dependencies[u]));const u={dependencies:{...Hu.dependencies}};u.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion);const D=yu.join(Mu,Nu.WORK_SPACE);try{mu.mkdirSync(D,{recursive:!0});const e=yu.resolve(D,Nu.DEFAULT_PACKAGE_JSON);mu.writeFileSync(e,JSON.stringify(u))}catch(u){(0,Su.logErrorAndExit)(u)}(function(){const u=["config","set","store-dir",Nu.HVIGOR_PNPM_STORE_PATH],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)})(),function(){const u=["install"],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)}(),(0,Su.logInfoPrintConsole)("Hvigor install success.")}()}catch(u){Vu()}}return Mu};var Gu={};!function(t){var C=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),F=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),E=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&C(D,u,e);return F(D,u),D},A=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(t,"__esModule",{value:!0}),t.executeInstallPnpm=t.isPnpmInstalled=t.environmentHandler=t.checkNpmConifg=t.PNPM_VERSION=void 0;const o=r,a=E(e),c=A(D),s=E(u),B=i,d=l,f=ou;t.PNPM_VERSION="7.30.0",t.checkNpmConifg=function(){const u=s.resolve(B.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),D=s.resolve(c.default.homedir(),".npmrc");if((0,f.isFileExists)(u)||(0,f.isFileExists)(D))return;const e=(0,f.getNpmPath)(),t=(0,o.spawnSync)(e,["config","get","prefix"],{cwd:B.HVIGOR_PROJECT_ROOT_DIR});if(0!==t.status||!t.stdout)return void(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const r=s.resolve(`${t.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,f.isFileExists)(r)||(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},t.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},t.isPnpmInstalled=function(){return!!a.existsSync(B.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,f.hasNpmPackInPaths)("pnpm",[B.HVIGOR_WRAPPER_TOOLS_HOME])},t.executeInstallPnpm=function(){(0,d.logInfoPrintConsole)(`Installing pnpm@${t.PNPM_VERSION}...`);const u=(0,f.getNpmPath)();!function(){const u=s.resolve(B.HVIGOR_WRAPPER_TOOLS_HOME,B.DEFAULT_PACKAGE_JSON);try{a.existsSync(B.HVIGOR_WRAPPER_TOOLS_HOME)||a.mkdirSync(B.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const D={dependencies:{}};D.dependencies[B.PNPM]=t.PNPM_VERSION,a.writeFileSync(u,JSON.stringify(D))}catch(D){(0,d.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${u} failed.`)}}(),(0,f.executeCommand)(u,["install","pnpm"],{cwd:B.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,d.logInfoPrintConsole)("Pnpm install success.")}}(Gu),function(){Gu.checkNpmConifg(),Gu.environmentHandler(),Gu.isPnpmInstalled()||Gu.executeInstallPnpm();const D=gu();_(u.join(D,i.WORK_SPACE))}(); \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/hvigorfile.ts b/performance/arkui/benchmark_pipeline/Benchmark/hvigorfile.ts new file mode 100644 index 00000000..f3cb9f1a --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/hvigorfile.ts @@ -0,0 +1,6 @@ +import { appTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/performance/arkui/benchmark_pipeline/Benchmark/hvigorw b/performance/arkui/benchmark_pipeline/Benchmark/hvigorw new file mode 100644 index 00000000..ff6a29a2 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/hvigorw @@ -0,0 +1,48 @@ +#!/bin/bash + +# ---------------------------------------------------------------------------- +# Hvigor startup script, version 1.0.0 +# +# Required ENV vars: +# ------------------ +# NODE_HOME - location of a Node home dir +# or +# Add /usr/local/nodejs/bin to the PATH environment variable +# ---------------------------------------------------------------------------- + +HVIGOR_APP_HOME="`pwd -P`" +HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js +warn() { + echo "" + echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +error() { + echo "" + echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m" +} + +fail() { + error "$@" + exit 1 +} + +# Determine node to start hvigor wrapper script +if [ -n "${NODE_HOME}" ];then + EXECUTABLE_NODE="${NODE_HOME}/bin/node" + if [ ! -x "$EXECUTABLE_NODE" ];then + fail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed" + fi +else + EXECUTABLE_NODE="node" + which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path" +fi + +# Check hvigor wrapper script +if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];then + fail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}" +fi + +# start hvigor-wrapper script +exec "${EXECUTABLE_NODE}" \ + "${HVIGOR_WRAPPER_SCRIPT}" "$@" diff --git a/performance/arkui/benchmark_pipeline/Benchmark/hvigorw.bat b/performance/arkui/benchmark_pipeline/Benchmark/hvigorw.bat new file mode 100644 index 00000000..d570007e --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/hvigorw.bat @@ -0,0 +1,64 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Hvigor startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +set WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js +set NODE_EXE=node.exe + +goto start + +:start +@rem Find node.exe +if defined NODE_HOME goto findNodeFromNodeHome + +%NODE_EXE% --version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:findNodeFromNodeHome +set NODE_HOME=%NODE_HOME:"=% +set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE% + +if exist "%NODE_EXE_PATH%" goto execute +echo. +echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH. +echo. +echo Please set the NODE_HOME variable in your environment to match the +echo location of your NodeJs installation. + +goto fail + +:execute +@rem Execute hvigor +"%NODE_EXE%" "%WRAPPER_MODULE_PATH%" %* + +if "%ERRORLEVEL%" == "0" goto hvigorwEnd + +:fail +exit /b 1 + +:hvigorwEnd +if "%OS%" == "Windows_NT" endlocal + +:end diff --git a/performance/arkui/benchmark_pipeline/Benchmark/oh-package-lock.json5 b/performance/arkui/benchmark_pipeline/Benchmark/oh-package-lock.json5 new file mode 100644 index 00000000..ddc8a54d --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/oh-package-lock.json5 @@ -0,0 +1,13 @@ +{ + "lockfileVersion": 1, + "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", + "specifiers": { + "@ohos/hypium@1.0.11": "@ohos/hypium@1.0.11" + }, + "packages": { + "@ohos/hypium@1.0.11": { + "resolved": "https://repo.harmonyos.com/ohpm/@ohos/hypium/-/hypium-1.0.11.tgz", + "integrity": "sha512-KawcLnv43C3QIYv1UbDnKCFX3MohtDxGuFvzlUxT/qf2DBilR56Ws6zrj90LdH6PjloJQwOPESuBQIHBACAK7w==" + } + } +} \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/oh-package.json5 b/performance/arkui/benchmark_pipeline/Benchmark/oh-package.json5 new file mode 100644 index 00000000..78080c8d --- /dev/null +++ b/performance/arkui/benchmark_pipeline/Benchmark/oh-package.json5 @@ -0,0 +1,12 @@ +{ + "license": "", + "devDependencies": { + "@ohos/hypium": "1.0.11" + }, + "author": "", + "name": "benchmark", + "description": "Please describe the basic information.", + "main": "", + "version": "1.0.0", + "dependencies": {} +} diff --git a/performance/arkui/benchmark_pipeline/benchmark.bat b/performance/arkui/benchmark_pipeline/benchmark.bat new file mode 100644 index 00000000..2ac9a63e --- /dev/null +++ b/performance/arkui/benchmark_pipeline/benchmark.bat @@ -0,0 +1,139 @@ +@echo off + +:: +set testname=test +set tagname=tag +set rownum=0 + +:: +echo Benchmarkģ +echo 1Columnа100buttonijһbuttonDispatchTouchEvent +echo 2Columnа100buttonʹԶijһbuttonDispatchTouchEvent +echo 3Ƕ100ColumnײΪbuttonbuttonDispatchTouchEvent +echo 4Ƕ100ColumnʹԶײΪbuttonbuttonDispatchTouchEvent +echo ------------------ +echo 5Columnа100buttonӦáFlushLayoutTask +echo 6Columnа100buttonʹԶӦáFlushLayoutTask +echo 7Ƕ100ColumnײΪbuttonӦáFlushLayoutTask +echo 8Ƕ100ColumnʹԶײΪbuttonӦáFlushLayoutTask +echo ------------------ +echo 9Columnа100buttonӦáFlushMessages +echo 10Columnа100buttonʹԶӦáFlushMessages +echo 11Ƕ100ColumnײΪbuttonӦáFlushMessages +echo 12Ƕ100ColumnʹԶײΪbuttonӦáFlushMessages +echo ------------------ +echo 13ҳ棬ֱ100imageҳ֮תתҳ1תҳ2FlushAnimation +echo ------------------ +echo 14ϰ100imageimagešѡЧӦáFlushRenderTask +echo ------------------ +echo 15Columnа100buttonbuttonıbutton֡FlushDirtyNodeUpdate +echo 16Columnа100buttonʹԶbuttonıbutton֡FlushDirtyNodeUpdate +echo ------------------ +echo 17Columnа100buttonbuttonΪɼHandleVisibleAreaChangeEvent +echo 18Columnа100buttonʹԶbuttonΪɼHandleVisibleAreaChangeEvent +echo ------------------ +echo 19Columnа100buttonbuttonıbuttonߡHandleOnAreaChangeEvent +echo 20Columnа100buttonʹԶbuttonıbuttonߡHandleOnAreaChangeEvent + + + +echo ------------------ +echo ------------------ +set /P mode=Benchmarkģţ + +set rownum=%mode% + +if %mode% equ 1 ( +set testname=benchmark01_click_button +set tagname=DispatchTouchEvent +) else if %mode% equ 2 ( +set testname=benchmark02_click_button +set tagname=DispatchTouchEvent +) else if %mode% equ 3 ( +set testname=benchmark03_click_button +set tagname=DispatchTouchEvent +) else if %mode% equ 4 ( +set testname=benchmark04_click_button +set tagname=DispatchTouchEvent +) else if %mode% equ 5 ( +set testname=benchmark01_start_app +set tagname=FlushLayoutTask +) else if %mode% equ 6 ( +set testname=benchmark02_start_app +set tagname=FlushLayoutTask +) else if %mode% equ 7 ( +set testname=benchmark03_start_app +set tagname=FlushLayoutTask +) else if %mode% equ 8 ( +set testname=benchmark04_start_app +set tagname=FlushLayoutTask +) else if %mode% equ 9 ( +set testname=benchmark01_start_app +set tagname=FlushMessages +) else if %mode% equ 10 ( +set testname=benchmark02_start_app +set tagname=FlushMessages +) else if %mode% equ 11 ( +set testname=benchmark03_start_app +set tagname=FlushMessages +) else if %mode% equ 12 ( +set testname=benchmark04_start_app +set tagname=FlushMessages +) else if %mode% equ 13 ( +set testname=benchmark05_push_page +set tagname=FlushAnimation +) else if %mode% equ 14 ( +set testname=benchmark06_start_app +set tagname=FlushRenderTask +) else if %mode% equ 15 ( +set testname=benchmark07_change_title +set tagname=FlushDirtyNodeUpdate +) else if %mode% equ 16 ( +set testname=benchmark08_change_title +set tagname=FlushDirtyNodeUpdate +) else if %mode% equ 17 ( +set testname=benchmark09_change_visible +set tagname=HandleVisibleAreaChangeEvent +) else if %mode% equ 18 ( +set testname=benchmark10_change_visible +set tagname=HandleVisibleAreaChangeEvent +) else if %mode% equ 19 ( +set testname=benchmark11_change_size +set tagname=HandleOnAreaChangeEvent +) else if %mode% equ 20 ( +set testname=benchmark12_change_size +set tagname=HandleOnAreaChangeEvent +) + +@echo on + +echo testname=%testname% +echo tagname=%tagname% +echo rownum=%rownum% + + +::ȡ +set ymd=%date:~0,4%%date:~5,2%%date:~8,2% +for /f "tokens=* delims=" %%a in ("%ymd%") do set ymd=%%a +::ȡСʱ9ǰ0 +if %time:~0,2% leq 9 (set hour=0%time:~1,1%) else (set hour=%time:~0,2%) +::ȡʱ +set minseco=%time:~3,2%%time:~6,2% +set hms=%hour%%minseco% +for /f "tokens=* delims=" %%a in ("%hms%") do set hms=%%a +::_ʱΪtraceļ +set tracefolder=trace_%ymd% +set filename=%testname%_%ymd%_%hms%.ftrace +if not exist %tracefolder% (mkdir %tracefolder%) +::Ļ600ǹر +hdc shell power-shell setmode 602 +::жٰװ +hdc app uninstall com.example.benchmark +hdc install Benchmark\entry\build\default\outputs\default\entry-default-signed.hap +hdc install Benchmark\entry\build\default\outputs\ohosTest\entry-ohosTest-signed.hap +::Զbytrace +hdc wait-for-device shell mount -o remount,rw / +hdc shell "setenforce 0" +start cmd /c test.bat %testname% +timeout -nobreak 3 +start cmd /c bytrace.bat %filename% %tracefolder% %tagname% %rownum% diff --git a/performance/arkui/benchmark_pipeline/bytrace.bat b/performance/arkui/benchmark_pipeline/bytrace.bat new file mode 100644 index 00000000..93151b74 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/bytrace.bat @@ -0,0 +1,10 @@ +::bytrace +hdc shell "bytrace -t 10 -b 40960 --overwrite ability ace graphic > /data/%filename%" +hdc shell "sed -i '1,2d' /data/%filename%" +hdc file recv /data/%filename% ./%tracefolder%/%filename% +:: +python3 traceParseFile.py --ftrace %tracefolder%/%filename% --tags %tagname% --ofile Ⱦ߱.xls --ofilePos %rownum%,6 + +::3µIJԴ +timeout -nobreak 3 +start cmd /c benchmark.bat \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/test.bat b/performance/arkui/benchmark_pipeline/test.bat new file mode 100644 index 00000000..4fcfd511 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/test.bat @@ -0,0 +1,2 @@ +::Զ +hdc shell aa test -b com.example.benchmark -m entry_test -s unittest OpenHarmonyTestRunner -s class IndexTest#%1 -s timeout 150000 \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/traceParseFile.py b/performance/arkui/benchmark_pipeline/traceParseFile.py new file mode 100644 index 00000000..59517a53 --- /dev/null +++ b/performance/arkui/benchmark_pipeline/traceParseFile.py @@ -0,0 +1,144 @@ +#!/usr/bin/python3 +import re +from xlutils.copy import * +from collections import deque +import argparse +import xlrd +import os + +description = "you should add parameter" +parser = argparse.ArgumentParser(description=description) + +##################参数设置################## +#要解析的ftrace文件 +ftraceFileLabel="ftrace" +#解析文件中哪些tag,逗号分割 +tagsLabel="tags" +#结果输出到的excel文件 +outExcelFileLabel="ofile" +#结果输出在excel文件中的位置 +outExcelFilePositionLabel="ofilePos" +tagDict={} +tagOri="" +ftraceFile="" +outExcelFile="" +outExcelFilePosition="" +parser.add_argument('--'+ftraceFileLabel,help = "The file of ftrace file") +parser.add_argument('--'+tagsLabel,help = "tags,such as FlushLayoutTask,FlushTouchEvents,FlushAnimation,FlushBuild,FlushLayout,FlushRender,FlushMessages") +parser.add_argument('--'+outExcelFileLabel,help = "Write the result to the file,it is a excel file") +parser.add_argument('--'+outExcelFilePositionLabel,help = "Write the result to position of the excel file") +args = parser.parse_args() + +##################参数解析################## +d = args.__dict__ +for key,value in d.items(): + if(key==ftraceFileLabel): + ftraceFile=value + if(key==tagsLabel): + tagOri=value + print("tags:",value) + for item in value.split(","): + tagDict[item]="" + if(key==outExcelFileLabel): + outExcelFile=value + if(key==outExcelFilePositionLabel): + outExcelFilePosition=value +print("ftraceFile:",ftraceFile) +print("tagDict:",tagDict) +print("outExcelFile:",outExcelFile) +print("outExcelFilePosition:",outExcelFilePosition) + +#ftraceFile="benchmark01_event_20231124_095849.ftrace" +#tagDict = {'FlushLayoutTask':'UITaskScheduler::FlushTask','FlushTouchEvents':'OnVsyncEvent','FlushAnimation':'OnVsyncEvent','FlushBuild':'OnVsyncEvent','FlushLayout':'OnVsyncEvent','FlushRender':'OnVsyncEvent','FlushMessages':'FlushVsync'} +print("show all tags and their parents") +print(tagDict.keys()) +#可以传入,针对这个项目设死即可 +taskAndId="benchmark" + +##################开始解析ftrace文件################## +#当前任务中,所有未处理的全部放到栈中 +currUnCompleteTagsQue = [] +#指定需要处理的,已完成的tag +completeTagsDict = {} +#读取读取文件 +with open(ftraceFile) as file: + for item in file: + #在ftrace中是多进程一起记录,故各个进程必须独立解析 + #初步判断是当前任务 + isThisTask=item.find(taskAndId)!=-1 + if(isThisTask): + #匹配task开始,解析各部分 + beginMatchObj = re.match( r'(.*) .* .* ....\s+(\d+.\d+): .*: B.*H:(.*)', item, re.M|re.I) + if beginMatchObj: + #tag开始时,进一步判断是当前任务,只有是当前任务数据才会处理 + bTask=beginMatchObj.group(1).strip() + if(bTask.find(taskAndId)!=-1): + bTag=beginMatchObj.group(3).strip() + bTimestamp=beginMatchObj.group(2) + #print(">>>>∧ TAG info[%s] timestamp:[%s],push to stack" % (bTag,bTimestamp)) + #当前task所有还未处理的tag,都保存下来 + currUnCompleteTagsQue.append([bTag,bTimestamp]) + else: + #匹配task结束,解析各部分 + endMatchObj = re.match( r'(.*) .* .* ....\s+(\d+.\d+): .*: E.*', item, re.M|re.I) + if endMatchObj: + + #tag收尾时,进一步判断是当前任务,只有是当前任务数据才会处理 + eTask=endMatchObj.group(1).strip() + if(eTask.find(taskAndId)!=-1): + #栈顶弹出tag信息,跟当前tag尾部匹配组合 + tagInfo=currUnCompleteTagsQue.pop() + + tagWithParam=tagInfo[0].strip() + startTimestamp=tagInfo[1] + endTimestamp=endMatchObj.group(2) + #print(" v<<<< TAG info[%s] timestamp:[%s], pop from stack" % (tagWithParam,endTimestamp)) + #tag过滤。只处理指定的tag + for tag,value in tagDict.items(): + if((tagWithParam.find(tag)==0)): + #在初始化列表中找到需要记录的{tag} + duration=round((float(endTimestamp)-float(startTimestamp))*1000*1000 ) + + #判断这个{tag}是否已经有其他帧的记录 + foundSameTag=False + for completeTag, completeDuration in completeTagsDict.items(): + #有其他帧记录的话,时长求和,更新该{tag}的时长 + if(completeTag == tag): + foundSameTag=True + + totalDuration=int(completeDuration)+duration + completeTagsDict[tag]=totalDuration + print("update TAG[%s] total time:%d μs, currduration:%d μs, oriDuration:%d μs " % (tag,totalDuration,duration,completeDuration)) + print("completeTagsDict:" ,completeTagsDict) + break + + if(foundSameTag is False): + #没有过这个{tag}记录的话,添加记录 + completeTagsDict[tag]=duration + print("add TAG[%s] duration:%d μs" % (tag,duration)) + print("completeTagsDict:", completeTagsDict) + break + +#相同tag时长求和 +print("result:",completeTagsDict) + +##################写结果到文件中################## +print("outExcelFile:",outExcelFile) +if(len(tagDict)==1): + workbook = xlrd.open_workbook(outExcelFile, formatting_info=True) + tempFileName="temp_xls_output_file.xls" + new_workbook = copy(workbook) + write_save = new_workbook.get_sheet(0) + outExcelFilePosArr=outExcelFilePosition.split(",") + + write_save.write(int(outExcelFilePosArr[0]), int(outExcelFilePosArr[1]), str(completeTagsDict[tagOri])+"μs") + + new_workbook.save(tempFileName) + workbook.release_resources() + del workbook + + os.remove(outExcelFile) + os.rename(tempFileName, outExcelFile) +else: + print("不符合tag只有一个的约定") +print("!!!parse end!!!") diff --git "a/performance/arkui/benchmark_pipeline/\346\270\262\346\237\223\347\256\241\347\272\277\346\212\245\345\221\212.xls" "b/performance/arkui/benchmark_pipeline/\346\270\262\346\237\223\347\256\241\347\272\277\346\212\245\345\221\212.xls" new file mode 100644 index 0000000000000000000000000000000000000000..739303c8839ef1cbc9eab8c9fa69120d0479e96e GIT binary patch literal 23040 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 P7zO|$!wYQx@7#X@$3S2V literal 0 HcmV?d00001 -- Gitee From bd2d14ff64630fb97cb97b0b66891a07b8324d2d Mon Sep 17 00:00:00 2001 From: likunhui Date: Wed, 6 Dec 2023 17:55:50 +0800 Subject: [PATCH 2/3] add copyright and tc for xts --- .../Benchmark/AppScope/app.json5 | 15 ++ .../Benchmark/build-profile.json5 | 17 +- .../Benchmark/entry/build-profile.json5 | 15 ++ .../Benchmark/entry/hvigorfile.ts | 15 ++ .../Benchmark/entry/oh-package.json5 | 15 ++ .../src/main/ets/entryability/EntryAbility.ts | 15 ++ .../entry/src/main/ets/pages/Benchmark01.ets | 14 ++ .../entry/src/main/ets/pages/Benchmark02.ets | 15 +- .../entry/src/main/ets/pages/Benchmark03.ets | 15 ++ .../entry/src/main/ets/pages/Benchmark04.ets | 14 ++ .../entry/src/main/ets/pages/Benchmark05.ets | 15 ++ .../entry/src/main/ets/pages/Benchmark052.ets | 15 ++ .../entry/src/main/ets/pages/Benchmark06.ets | 15 ++ .../entry/src/main/ets/pages/Benchmark07.ets | 14 ++ .../entry/src/main/ets/pages/Benchmark08.ets | 15 +- .../entry/src/main/ets/pages/Benchmark09.ets | 14 ++ .../entry/src/main/ets/pages/Benchmark10.ets | 15 ++ .../entry/src/main/ets/pages/Benchmark11.ets | 15 +- .../entry/src/main/ets/pages/Benchmark12.ets | 15 +- .../entry/src/main/ets/pages/Index.ets | 15 ++ .../Benchmark/entry/src/main/module.json5 | 15 ++ .../src/ohosTest/ets/test/Ability.test.ets | 15 ++ .../src/ohosTest/ets/test/Index.test.ets | 207 +++++++++++++++--- .../entry/src/ohosTest/ets/test/List.test.ets | 17 +- .../ohosTest/ets/testability/TestAbility.ets | 15 ++ .../ohosTest/ets/testability/pages/Index.ets | 15 ++ .../ets/testrunner/OpenHarmonyTestRunner.ts | 15 ++ .../Benchmark/entry/src/ohosTest/module.json5 | 15 ++ .../Benchmark/hvigor/hvigor-config.json5 | 15 ++ .../Benchmark/hvigor/hvigor-wrapper.js | 15 ++ .../Benchmark/hvigorfile.ts | 15 ++ .../benchmark_pipeline/Benchmark/hvigorw | 15 ++ .../benchmark_pipeline/Benchmark/hvigorw.bat | 13 ++ .../Benchmark/oh-package.json5 | 15 ++ .../arkui/benchmark_pipeline/benchmark.bat | 13 ++ .../arkui/benchmark_pipeline/bytrace.bat | 13 ++ performance/arkui/benchmark_pipeline/test.bat | 13 ++ ...1\347\272\277\346\212\245\345\221\212.xls" | Bin 23040 -> 0 bytes 38 files changed, 700 insertions(+), 39 deletions(-) delete mode 100644 "performance/arkui/benchmark_pipeline/\346\270\262\346\237\223\347\256\241\347\272\277\346\212\245\345\221\212.xls" diff --git a/performance/arkui/benchmark_pipeline/Benchmark/AppScope/app.json5 b/performance/arkui/benchmark_pipeline/Benchmark/AppScope/app.json5 index 9d060e47..a05ef489 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/AppScope/app.json5 +++ b/performance/arkui/benchmark_pipeline/Benchmark/AppScope/app.json5 @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + { "app": { "bundleName": "com.example.benchmark", diff --git a/performance/arkui/benchmark_pipeline/Benchmark/build-profile.json5 b/performance/arkui/benchmark_pipeline/Benchmark/build-profile.json5 index 15e0608e..adf9c2f8 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/build-profile.json5 +++ b/performance/arkui/benchmark_pipeline/Benchmark/build-profile.json5 @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + { "app": { "signingConfigs": [ @@ -20,7 +35,7 @@ "products": [ { "name": "default", -// "signingConfig": "default", + "signingConfig": "default", } ], "buildModeSet": [ diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/build-profile.json5 b/performance/arkui/benchmark_pipeline/Benchmark/entry/build-profile.json5 index 6877fc0c..71f45498 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/build-profile.json5 +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/build-profile.json5 @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + { "apiType": "stageMode", "buildOption": { diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/hvigorfile.ts b/performance/arkui/benchmark_pipeline/Benchmark/entry/hvigorfile.ts index c6edcd90..b25e77c7 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/hvigorfile.ts +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/hvigorfile.ts @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { hapTasks } from '@ohos/hvigor-ohos-plugin'; export default { diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/oh-package.json5 b/performance/arkui/benchmark_pipeline/Benchmark/entry/oh-package.json5 index 225946cb..3fbe67bb 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/oh-package.json5 +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/oh-package.json5 @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + { "license": "", "devDependencies": {}, diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/entryability/EntryAbility.ts b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/entryability/EntryAbility.ts index 1c7aa63a..9e89fa34 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/entryability/EntryAbility.ts +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/entryability/EntryAbility.ts @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import AbilityConstant from '@ohos.app.ability.AbilityConstant'; import hilog from '@ohos.hilog'; import UIAbility from '@ohos.app.ability.UIAbility'; diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark01.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark01.ets index cb50c878..dc0debdc 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark01.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark01.ets @@ -1,3 +1,17 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ @Entry @Component diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark02.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark02.ets index 5ecf9d51..9a83676d 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark02.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark02.ets @@ -1,4 +1,17 @@ - +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ @Component struct BenchmarkComponent02 { diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark03.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark03.ets index 5e8d5ded..7c5537ca 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark03.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark03.ets @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + @Entry @Component struct Benchmark03 { diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark04.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark04.ets index cb628009..51d183a9 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark04.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark04.ets @@ -1,3 +1,17 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ @Component struct BenchmarkComponent04 { diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark05.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark05.ets index c3b4d8be..7b1f98a3 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark05.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark05.ets @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import router from '@ohos.router'; @Entry diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark052.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark052.ets index 5fb36133..32f8878e 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark052.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark052.ets @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + @Entry @Component struct Benchmark052 { diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark06.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark06.ets index f2d22b9d..ad90a752 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark06.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark06.ets @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + @Entry @Component struct Benchmark06 { diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark07.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark07.ets index 8611cf96..a96a2865 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark07.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark07.ets @@ -1,3 +1,17 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ @Entry @Component diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark08.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark08.ets index b421c984..89aea730 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark08.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark08.ets @@ -1,4 +1,17 @@ - +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ @Component struct BenchmarkComponent08 { diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark09.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark09.ets index 2de2f6a6..d4dc77fa 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark09.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark09.ets @@ -1,3 +1,17 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ @Entry @Component diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark10.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark10.ets index 97c7daee..9719da6d 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark10.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark10.ets @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + @Component struct BenchmarkComponent10 { title: string = '' diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark11.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark11.ets index 8231ed97..6cad09ba 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark11.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark11.ets @@ -1,4 +1,17 @@ -import thermal from '@ohos.thermal'; +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ @Entry @Component diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark12.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark12.ets index 5577197e..225582b6 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark12.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Benchmark12.ets @@ -1,4 +1,17 @@ - +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ @Component struct BenchmarkComponent12 { diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Index.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Index.ets index 565705f6..a103b458 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Index.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/ets/pages/Index.ets @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import router from '@ohos.router'; @Entry diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/module.json5 b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/module.json5 index b2de8aa0..45c56e7f 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/module.json5 +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/main/module.json5 @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + { "module": { "name": "entry", diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Ability.test.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Ability.test.ets index 8aa37497..24cdb341 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Ability.test.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Ability.test.ets @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import hilog from '@ohos.hilog'; import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Index.test.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Index.test.ets index 70c9935a..755ce1f9 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Index.test.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Index.test.ets @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { describe, it, expect } from '@ohos/hypium' import abilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry' import Want from '@ohos.app.ability.Want' @@ -42,69 +57,197 @@ async function commonTestCase(pageBtnId: string, compId: string) { export default function IndexTest() { describe('IndexTest', () => { - // 用例1-点击某一按钮 + + /** + * @tc.desc : Benchmark case that click the button + * @tc.name : benchmark01_click_button + * @tc.number: Benchmark01 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark01_click_button', 0, async () => { - await commonTestCase('benchmark01', 'first_btn') + await commonTestCase('benchmark01', 'first_btn') // 用例1-点击某一按钮 }) - // 用例5、9-启动应用 + + /** + * @tc.desc : Benchmark case that start app + * @tc.name : benchmark01_click_button + * @tc.number: Benchmark01_0-6 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark01_start_app', 0, async () => { - await commonTestCase('benchmark01', '') + await commonTestCase('benchmark01', '') // 用例5、9-启动应用 }) - // 用例2-点击某一按钮 + + /** + * @tc.desc : Benchmark case that click the button + * @tc.name : benchmark02_click_button + * @tc.number: Benchmark02 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark02_click_button', 0, async () => { - await commonTestCase('benchmark02', 'first_btn') + await commonTestCase('benchmark02', 'first_btn') // 用例2-点击某一按钮 }) - // 用例6、10、15-启动应用 + + /** + * @tc.desc : Benchmark case that start app + * @tc.name : benchmark02_start_app + * @tc.number: Benchmark06_10-15 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark02_start_app', 0, async () => { - await commonTestCase('benchmark02', '') + await commonTestCase('benchmark02', '') // 用例6、10、15-启动应用 }) - // 用例3-点击button + + /** + * @tc.desc : Benchmark case that click the button + * @tc.name : benchmark03_click_button + * @tc.number: Benchmark03 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark03_click_button', 0, async () => { - await commonTestCase('benchmark03', 'only_btn') + await commonTestCase('benchmark03', 'only_btn') // 用例3-点击button }) - // 用例7、11-启动应用 + + /** + * @tc.desc : Benchmark case that start app + * @tc.name : benchmark03_start_app + * @tc.number: Benchmark07_11 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark03_start_app', 0, async () => { - await commonTestCase('benchmark03', '') + await commonTestCase('benchmark03', '') // 用例7、11-启动应用 }) - // 用例4-点击button + + /** + * @tc.desc : Benchmark case that click the button + * @tc.name : benchmark04_click_button + * @tc.number: Benchmark04 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark04_click_button', 0, async () => { - await commonTestCase('benchmark04', 'only_btn') + await commonTestCase('benchmark04', 'only_btn') // 用例4-点击button }) - // 用例8、12-启动应用 + + /** + * @tc.desc : Benchmark case that start app + * @tc.name : benchmark04_start_app + * @tc.number: Benchmark08_12 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark04_start_app', 0, async () => { - await commonTestCase('benchmark04', '') + await commonTestCase('benchmark04', '') // 用例8、12-启动应用 }) - // 用例13-页面1跳转页面2(有页面转场动画) + + /** + * @tc.desc : Benchmark case that push page + * @tc.name : benchmark05_push_page + * @tc.number: Benchmark13 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it("benchmark05_push_page", 0, async () => { - await commonTestCase('benchmark05', 'id_0') + await commonTestCase('benchmark05', 'id_0') // 用例13-页面1跳转页面2(有页面转场动画) }) - // 用例14-启动应用 + + /** + * @tc.desc : Benchmark case that start app + * @tc.name : benchmark06_start_app + * @tc.number: Benchmark14 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark06_start_app', 0, async () => { - await commonTestCase('benchmark06', '') + await commonTestCase('benchmark06', '') // 用例14-启动应用 }) - // 用例15-点击button改变button文字 + + /** + * @tc.desc : Benchmark case that change the title of button + * @tc.name : benchmark07_change_title + * @tc.number: Benchmark15 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark07_change_title', 0, async () => { - await commonTestCase('benchmark07', 'first_btn') + await commonTestCase('benchmark07', 'first_btn') // 用例15-点击button改变button文字 }) - // 用例16-点击button改变button文字 + + /** + * @tc.desc : Benchmark case that change the title of button + * @tc.name : benchmark08_change_title + * @tc.number: Benchmark16 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark08_change_title', 0, async () => { - await commonTestCase('benchmark08', 'first_btn') + await commonTestCase('benchmark08', 'first_btn') // 用例16-点击button改变button文字 }) - // 用例17-滑动到底部 + + /** + * @tc.desc : Benchmark case that scroll to bottom + * @tc.name : benchmark09_change_visible + * @tc.number: Benchmark17 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it("benchmark09_change_visible", 0, async () => { - await commonTestCase('benchmark09', '') + await commonTestCase('benchmark09', '') // 用例17-滑动到底部 }) - // 用例18-滑动到底部 + + /** + * @tc.desc : Benchmark case that scroll to bottom + * @tc.name : benchmark10_change_visible + * @tc.number: Benchmark18 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark10_change_visible', 0, async () => { - await commonTestCase('benchmark10', '') + await commonTestCase('benchmark10', '') // 用例18-滑动到底部 }) - // 用例19-点击button改变button宽高 + + /** + * @tc.desc : Benchmark case that change the size of button + * @tc.name : benchmark11_change_size + * @tc.number: Benchmark19 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark11_change_size', 0, async () => { - await commonTestCase('benchmark11', 'first_btn') + await commonTestCase('benchmark11', 'first_btn') // 用例19-点击button改变button宽高 }) - // 用例20-点击button改变button宽高 + + /** + * @tc.desc : Benchmark case that change the size of button + * @tc.name : benchmark12_change_size + * @tc.number: Benchmark20 + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('benchmark12_change_size', 0, async () => { - await commonTestCase('benchmark12', 'first_btn') + await commonTestCase('benchmark12', 'first_btn') // 用例20-点击button改变button宽高 }) }) diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/List.test.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/List.test.ets index c29efbaf..3e3c9f5f 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/List.test.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/List.test.ets @@ -1,7 +1,20 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import IndexTest from './Index.test' -import abilityTest from './Ability.test'; export default function testsuite() { - abilityTest(); IndexTest() } \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/TestAbility.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/TestAbility.ets index 9484761c..1092165b 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/TestAbility.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/TestAbility.ets @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import UIAbility from '@ohos.app.ability.UIAbility'; import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; import hilog from '@ohos.hilog'; diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/pages/Index.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/pages/Index.ets index 423b4276..86b9aec1 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/pages/Index.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testability/pages/Index.ets @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + @Entry @Component struct Index { diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts index 917d27a5..b8065f0b 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import hilog from '@ohos.hilog'; import TestRunner from '@ohos.application.testRunner'; import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'; diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/module.json5 b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/module.json5 index c031340a..aef2b62c 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/module.json5 +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/module.json5 @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + { "module": { "name": "entry_test", diff --git a/performance/arkui/benchmark_pipeline/Benchmark/hvigor/hvigor-config.json5 b/performance/arkui/benchmark_pipeline/Benchmark/hvigor/hvigor-config.json5 index 1a474900..efd98bc3 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/hvigor/hvigor-config.json5 +++ b/performance/arkui/benchmark_pipeline/Benchmark/hvigor/hvigor-config.json5 @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + { "hvigorVersion": "3.0.9", "dependencies": { diff --git a/performance/arkui/benchmark_pipeline/Benchmark/hvigor/hvigor-wrapper.js b/performance/arkui/benchmark_pipeline/Benchmark/hvigor/hvigor-wrapper.js index 372eae8e..f9d06f11 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/hvigor/hvigor-wrapper.js +++ b/performance/arkui/benchmark_pipeline/Benchmark/hvigor/hvigor-wrapper.js @@ -1 +1,16 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + "use strict";var u=require("path"),D=require("os"),e=require("fs"),t=require("crypto"),r=require("child_process"),n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},i={},C={},F=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(C,"__esModule",{value:!0}),C.maxPathLength=C.isMac=C.isLinux=C.isWindows=void 0;const E=F(D),A="Windows_NT",o="Darwin";function a(){return E.default.type()===A}function c(){return E.default.type()===o}C.isWindows=a,C.isLinux=function(){return"Linux"===E.default.type()},C.isMac=c,C.maxPathLength=function(){return c()?1016:a()?259:4095},function(e){var t=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),r=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),i=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&t(D,u,e);return r(D,u),D};Object.defineProperty(e,"__esModule",{value:!0}),e.WORK_SPACE=e.HVIGOR_PROJECT_WRAPPER_HOME=e.HVIGOR_PROJECT_ROOT_DIR=e.HVIGOR_PROJECT_CACHES_HOME=e.HVIGOR_PNPM_STORE_PATH=e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=e.PROJECT_CACHES=e.HVIGOR_WRAPPER_TOOLS_HOME=e.HVIGOR_USER_HOME=e.DEFAULT_PACKAGE_JSON=e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME=e.PNPM=e.HVIGOR=e.NPM_TOOL=e.PNPM_TOOL=e.HVIGOR_ENGINE_PACKAGE_NAME=void 0;const F=i(D),E=i(u),A=C;e.HVIGOR_ENGINE_PACKAGE_NAME="@ohos/hvigor",e.PNPM_TOOL=(0,A.isWindows)()?"pnpm.cmd":"pnpm",e.NPM_TOOL=(0,A.isWindows)()?"npm.cmd":"npm",e.HVIGOR="hvigor",e.PNPM="pnpm",e.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME="hvigor-config.json5",e.DEFAULT_PACKAGE_JSON="package.json",e.HVIGOR_USER_HOME=E.resolve(F.homedir(),".hvigor"),e.HVIGOR_WRAPPER_TOOLS_HOME=E.resolve(e.HVIGOR_USER_HOME,"wrapper","tools"),e.PROJECT_CACHES="project_caches",e.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH=E.resolve(e.HVIGOR_WRAPPER_TOOLS_HOME,"node_modules",".bin",e.PNPM_TOOL),e.HVIGOR_PNPM_STORE_PATH=E.resolve(e.HVIGOR_USER_HOME,"caches"),e.HVIGOR_PROJECT_CACHES_HOME=E.resolve(e.HVIGOR_USER_HOME,e.PROJECT_CACHES),e.HVIGOR_PROJECT_ROOT_DIR=process.cwd(),e.HVIGOR_PROJECT_WRAPPER_HOME=E.resolve(e.HVIGOR_PROJECT_ROOT_DIR,e.HVIGOR),e.WORK_SPACE="workspace"}(i);var s={},l={};Object.defineProperty(l,"__esModule",{value:!0}),l.logInfoPrintConsole=l.logErrorAndExit=void 0,l.logErrorAndExit=function(u){u instanceof Error?console.error(u.message):console.error(u),process.exit(-1)},l.logInfoPrintConsole=function(u){console.log(u)};var B=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),d=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),f=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&B(D,u,e);return d(D,u),D};Object.defineProperty(s,"__esModule",{value:!0});var _=s.executeBuild=void 0;const p=f(e),O=f(u),h=l;_=s.executeBuild=function(u){const D=O.resolve(u,"node_modules","@ohos","hvigor","bin","hvigor.js");try{const u=p.realpathSync(D);require(u)}catch(e){(0,h.logErrorAndExit)(`Error: ENOENT: no such file ${D},delete ${u} and retry.`)}};var P={},v={};!function(u){var D=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(u,"__esModule",{value:!0}),u.hashFile=u.hash=u.createHash=void 0;const r=D(t),i=D(e);u.createHash=(u="MD5")=>r.default.createHash(u);u.hash=(D,e)=>(0,u.createHash)(e).update(D).digest("hex");u.hashFile=(D,e)=>{if(i.default.existsSync(D))return(0,u.hash)(i.default.readFileSync(D,"utf-8"),e)}}(v);var g={},m={},R={};Object.defineProperty(R,"__esModule",{value:!0}),R.Unicode=void 0;class y{}R.Unicode=y,y.SPACE_SEPARATOR=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,y.ID_START=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,y.ID_CONTINUE=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,Object.defineProperty(m,"__esModule",{value:!0}),m.JudgeUtil=void 0;const I=R;m.JudgeUtil=class{static isIgnoreChar(u){return"string"==typeof u&&("\t"===u||"\v"===u||"\f"===u||" "===u||" "===u||"\ufeff"===u||"\n"===u||"\r"===u||"\u2028"===u||"\u2029"===u)}static isSpaceSeparator(u){return"string"==typeof u&&I.Unicode.SPACE_SEPARATOR.test(u)}static isIdStartChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||I.Unicode.ID_START.test(u))}static isIdContinueChar(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||"‌"===u||"‍"===u||I.Unicode.ID_CONTINUE.test(u))}static isDigitWithoutZero(u){return/[1-9]/.test(u)}static isDigit(u){return"string"==typeof u&&/[0-9]/.test(u)}static isHexDigit(u){return"string"==typeof u&&/[0-9A-Fa-f]/.test(u)}};var N=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(g,"__esModule",{value:!0}),g.parseJsonText=g.parseJsonFile=void 0;const b=N(e),S=N(D),w=N(u),H=m;var x;!function(u){u[u.Char=0]="Char",u[u.EOF=1]="EOF",u[u.Identifier=2]="Identifier"}(x||(x={}));let M,T,V,G,j,J,W="start",U=[],L=0,$=1,k=0,K=!1,z="default",q="'",Z=1;function X(u,D=!1){T=String(u),W="start",U=[],L=0,$=1,k=0,G=void 0,K=D;do{M=Q(),nu[W]()}while("eof"!==M.type);return G}function Q(){for(z="default",j="",q="'",Z=1;;){J=Y();const u=Du[z]();if(u)return u}}function Y(){if(T[L])return String.fromCodePoint(T.codePointAt(L))}function uu(){const u=Y();return"\n"===u?($++,k=0):u?k+=u.length:k++,u&&(L+=u.length),u}g.parseJsonFile=function(u,D=!1,e="utf-8"){const t=b.default.readFileSync(w.default.resolve(u),{encoding:e});try{return X(t,D)}catch(D){if(D instanceof SyntaxError){const e=D.message.split("at");if(2===e.length)throw new Error(`${e[0].trim()}${S.default.EOL}\t at ${u}:${e[1].trim()}`)}throw new Error(`${u} is not in valid JSON/JSON5 format.`)}},g.parseJsonText=X;const Du={default(){switch(J){case"/":return uu(),void(z="comment");case void 0:return uu(),eu("eof")}if(!H.JudgeUtil.isIgnoreChar(J)&&!H.JudgeUtil.isSpaceSeparator(J))return Du[W]();uu()},start(){z="value"},beforePropertyName(){switch(J){case"$":case"_":return j=uu(),void(z="identifierName");case"\\":return uu(),void(z="identifierNameStartEscape");case"}":return eu("punctuator",uu());case'"':case"'":return q=J,uu(),void(z="string")}if(H.JudgeUtil.isIdStartChar(J))return j+=uu(),void(z="identifierName");throw Eu(x.Char,uu())},afterPropertyName(){if(":"===J)return eu("punctuator",uu());throw Eu(x.Char,uu())},beforePropertyValue(){z="value"},afterPropertyValue(){switch(J){case",":case"}":return eu("punctuator",uu())}throw Eu(x.Char,uu())},beforeArrayValue(){if("]"===J)return eu("punctuator",uu());z="value"},afterArrayValue(){switch(J){case",":case"]":return eu("punctuator",uu())}throw Eu(x.Char,uu())},end(){throw Eu(x.Char,uu())},comment(){switch(J){case"*":return uu(),void(z="multiLineComment");case"/":return uu(),void(z="singleLineComment")}throw Eu(x.Char,uu())},multiLineComment(){switch(J){case"*":return uu(),void(z="multiLineCommentAsterisk");case void 0:throw Eu(x.Char,uu())}uu()},multiLineCommentAsterisk(){switch(J){case"*":return void uu();case"/":return uu(),void(z="default");case void 0:throw Eu(x.Char,uu())}uu(),z="multiLineComment"},singleLineComment(){switch(J){case"\n":case"\r":case"\u2028":case"\u2029":return uu(),void(z="default");case void 0:return uu(),eu("eof")}uu()},value(){switch(J){case"{":case"[":return eu("punctuator",uu());case"n":return uu(),tu("ull"),eu("null",null);case"t":return uu(),tu("rue"),eu("boolean",!0);case"f":return uu(),tu("alse"),eu("boolean",!1);case"-":case"+":return"-"===uu()&&(Z=-1),void(z="numerical");case".":case"0":case"I":case"N":return void(z="numerical");case'"':case"'":return q=J,uu(),j="",void(z="string")}if(void 0===J||!H.JudgeUtil.isDigitWithoutZero(J))throw Eu(x.Char,uu());z="numerical"},numerical(){switch(J){case".":return j=uu(),void(z="decimalPointLeading");case"0":return j=uu(),void(z="zero");case"I":return uu(),tu("nfinity"),eu("numeric",Z*(1/0));case"N":return uu(),tu("aN"),eu("numeric",NaN)}if(void 0!==J&&H.JudgeUtil.isDigitWithoutZero(J))return j=uu(),void(z="decimalInteger");throw Eu(x.Char,uu())},zero(){switch(J){case".":case"e":case"E":return void(z="decimal");case"x":case"X":return j+=uu(),void(z="hexadecimal")}return eu("numeric",0)},decimalInteger(){switch(J){case".":case"e":case"E":return void(z="decimal")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimal(){switch(J){case".":j+=uu(),z="decimalFraction";break;case"e":case"E":j+=uu(),z="decimalExponent"}},decimalPointLeading(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalFraction");throw Eu(x.Char,uu())},decimalFraction(){switch(J){case"e":case"E":return j+=uu(),void(z="decimalExponent")}if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},decimalExponent(){switch(J){case"+":case"-":return j+=uu(),void(z="decimalExponentSign")}if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentSign(){if(H.JudgeUtil.isDigit(J))return j+=uu(),void(z="decimalExponentInteger");throw Eu(x.Char,uu())},decimalExponentInteger(){if(!H.JudgeUtil.isDigit(J))return eu("numeric",Z*Number(j));j+=uu()},hexadecimal(){if(H.JudgeUtil.isHexDigit(J))return j+=uu(),void(z="hexadecimalInteger");throw Eu(x.Char,uu())},hexadecimalInteger(){if(!H.JudgeUtil.isHexDigit(J))return eu("numeric",Z*Number(j));j+=uu()},identifierNameStartEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":break;default:if(!H.JudgeUtil.isIdStartChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},identifierName(){switch(J){case"$":case"_":case"‌":case"‍":return void(j+=uu());case"\\":return uu(),void(z="identifierNameEscape")}if(!H.JudgeUtil.isIdContinueChar(J))return eu("identifier",j);j+=uu()},identifierNameEscape(){if("u"!==J)throw Eu(x.Char,uu());uu();const u=ru();switch(u){case"$":case"_":case"‌":case"‍":break;default:if(!H.JudgeUtil.isIdContinueChar(u))throw Eu(x.Identifier)}j+=u,z="identifierName"},string(){switch(J){case"\\":return uu(),void(j+=function(){const u=Y(),D=function(){switch(Y()){case"b":return uu(),"\b";case"f":return uu(),"\f";case"n":return uu(),"\n";case"r":return uu(),"\r";case"t":return uu(),"\t";case"v":return uu(),"\v"}return}();if(D)return D;switch(u){case"0":if(uu(),H.JudgeUtil.isDigit(Y()))throw Eu(x.Char,uu());return"\0";case"x":return uu(),function(){let u="",D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());if(u+=uu(),D=Y(),!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());return u+=uu(),String.fromCodePoint(parseInt(u,16))}();case"u":return uu(),ru();case"\n":case"\u2028":case"\u2029":return uu(),"";case"\r":return uu(),"\n"===Y()&&uu(),""}if(void 0===u||H.JudgeUtil.isDigitWithoutZero(u))throw Eu(x.Char,uu());return uu()}());case'"':case"'":if(J===q){const u=eu("string",j);return uu(),u}return void(j+=uu());case"\n":case"\r":case void 0:throw Eu(x.Char,uu());case"\u2028":case"\u2029":!function(u){console.warn(`JSON5: '${Fu(u)}' in strings is not valid ECMAScript; consider escaping.`)}(J)}j+=uu()}};function eu(u,D){return{type:u,value:D,line:$,column:k}}function tu(u){for(const D of u){if(Y()!==D)throw Eu(x.Char,uu());uu()}}function ru(){let u="",D=4;for(;D-- >0;){const D=Y();if(!H.JudgeUtil.isHexDigit(D))throw Eu(x.Char,uu());u+=uu()}return String.fromCodePoint(parseInt(u,16))}const nu={start(){if("eof"===M.type)throw Eu(x.EOF);iu()},beforePropertyName(){switch(M.type){case"identifier":case"string":return V=M.value,void(W="afterPropertyName");case"punctuator":return void Cu();case"eof":throw Eu(x.EOF)}},afterPropertyName(){if("eof"===M.type)throw Eu(x.EOF);W="beforePropertyValue"},beforePropertyValue(){if("eof"===M.type)throw Eu(x.EOF);iu()},afterPropertyValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforePropertyName");case"}":Cu()}},beforeArrayValue(){if("eof"===M.type)throw Eu(x.EOF);"punctuator"!==M.type||"]"!==M.value?iu():Cu()},afterArrayValue(){if("eof"===M.type)throw Eu(x.EOF);switch(M.value){case",":return void(W="beforeArrayValue");case"]":Cu()}},end(){}};function iu(){const u=function(){let u;switch(M.type){case"punctuator":switch(M.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=M.value}return u}();if(K&&"object"==typeof u&&(u._line=$,u._column=k),void 0===G)G=u;else{const D=U[U.length-1];Array.isArray(D)?K&&"object"!=typeof u?D.push({value:u,_line:$,_column:k}):D.push(u):D[V]=K&&"object"!=typeof u?{value:u,_line:$,_column:k}:u}!function(u){if(u&&"object"==typeof u)U.push(u),W=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}}(u)}function Cu(){U.pop();const u=U[U.length-1];W=u?Array.isArray(u)?"afterArrayValue":"afterPropertyValue":"end"}function Fu(u){const D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){const D=u.charCodeAt(0).toString(16);return`\\x${`00${D}`.substring(D.length)}`}return u}function Eu(u,D){let e="";switch(u){case x.Char:e=void 0===D?`JSON5: invalid end of input at ${$}:${k}`:`JSON5: invalid character '${Fu(D)}' at ${$}:${k}`;break;case x.EOF:e=`JSON5: invalid end of input at ${$}:${k}`;break;case x.Identifier:k-=5,e=`JSON5: invalid identifier character at ${$}:${k}`}const t=new Au(e);return t.lineNumber=$,t.columnNumber=k,t}class Au extends SyntaxError{}var ou={},au=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),cu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),su=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&au(D,u,e);return cu(D,u),D},lu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(ou,"__esModule",{value:!0}),ou.isFileExists=ou.offlinePluginConversion=ou.executeCommand=ou.getNpmPath=ou.hasNpmPackInPaths=void 0;const Bu=r,du=lu(e),fu=su(u),_u=i,pu=l;ou.hasNpmPackInPaths=function(u,D){try{return require.resolve(u,{paths:[...D]}),!0}catch(u){return!1}},ou.getNpmPath=function(){const u=process.execPath;return fu.join(fu.dirname(u),_u.NPM_TOOL)},ou.executeCommand=function(u,D,e){0!==(0,Bu.spawnSync)(u,D,e).status&&(0,pu.logErrorAndExit)(`Error: ${u} ${D} execute failed.See above for details.`)},ou.offlinePluginConversion=function(u,D){return D.startsWith("file:")||D.endsWith(".tgz")?fu.resolve(u,_u.HVIGOR,D.replace("file:","")):D},ou.isFileExists=function(u){return du.default.existsSync(u)&&du.default.statSync(u).isFile()};var Ou=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),hu=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),Pu=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&Ou(D,u,e);return hu(D,u),D},vu=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(P,"__esModule",{value:!0});var gu=P.initProjectWorkSpace=void 0;const mu=Pu(e),Ru=vu(D),yu=Pu(u),Iu=v,Nu=i,bu=g,Su=l,wu=ou;let Hu,xu,Mu;function Tu(u,D,e){return void 0!==e.dependencies&&(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,D.dependencies[u])===yu.normalize(e.dependencies[u])}function Vu(){const u=yu.join(Mu,Nu.WORK_SPACE);if((0,Su.logInfoPrintConsole)("Hvigor cleaning..."),!mu.existsSync(u))return;const D=mu.readdirSync(u);if(!D||0===D.length)return;const e=yu.resolve(Mu,"node_modules","@ohos","hvigor","bin","hvigor.js");mu.existsSync(e)&&(0,wu.executeCommand)(process.argv[0],[e,"--stop-daemon"],{});try{D.forEach((D=>{mu.rmSync(yu.resolve(u,D),{recursive:!0})}))}catch(D){(0,Su.logErrorAndExit)(`The hvigor build tool cannot be installed. Please manually clear the workspace directory and synchronize the project again.\n\n Workspace Path: ${u}.`)}}gu=P.initProjectWorkSpace=function(){if(Hu=function(){const u=yu.resolve(Nu.HVIGOR_PROJECT_WRAPPER_HOME,Nu.DEFAULT_HVIGOR_CONFIG_JSON_FILE_NAME);mu.existsSync(u)||(0,Su.logErrorAndExit)(`Error: Hvigor config file ${u} does not exist.`);return(0,bu.parseJsonFile)(u)}(),Mu=function(u){let D;D=function(u){let D=u.hvigorVersion;if(D.startsWith("file:")||D.endsWith(".tgz"))return!1;const e=u.dependencies,t=Object.getOwnPropertyNames(e);for(const u of t){const D=e[u];if(D.startsWith("file:")||D.endsWith(".tgz"))return!1}if(1===t.length&&"@ohos/hvigor-ohos-plugin"===t[0])return D>"2.5.0";return!1}(u)?function(u){let D=`${Nu.HVIGOR_ENGINE_PACKAGE_NAME}@${u.hvigorVersion}`;const e=u.dependencies;if(e){Object.getOwnPropertyNames(e).sort().forEach((u=>{D+=`,${u}@${e[u]}`}))}return(0,Iu.hash)(D)}(u):(0,Iu.hash)(process.cwd());return yu.resolve(Ru.default.homedir(),".hvigor","project_caches",D)}(Hu),xu=function(){const u=yu.resolve(Mu,Nu.WORK_SPACE,Nu.DEFAULT_PACKAGE_JSON);return mu.existsSync(u)?(0,bu.parseJsonFile)(u):{dependencies:{}}}(),!(0,wu.hasNpmPackInPaths)(Nu.HVIGOR_ENGINE_PACKAGE_NAME,[yu.join(Mu,Nu.WORK_SPACE)])||(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion)!==xu.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]||!function(){function u(u){const D=null==u?void 0:u.dependencies;return void 0===D?0:Object.getOwnPropertyNames(D).length}const D=u(Hu),e=u(xu);if(D+1!==e)return!1;for(const u in null==Hu?void 0:Hu.dependencies)if(!(0,wu.hasNpmPackInPaths)(u,[yu.join(Mu,Nu.WORK_SPACE)])||!Tu(u,Hu,xu))return!1;return!0}()){Vu();try{!function(){(0,Su.logInfoPrintConsole)("Hvigor installing...");for(const u in Hu.dependencies)Hu.dependencies[u]&&(Hu.dependencies[u]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.dependencies[u]));const u={dependencies:{...Hu.dependencies}};u.dependencies[Nu.HVIGOR_ENGINE_PACKAGE_NAME]=(0,wu.offlinePluginConversion)(Nu.HVIGOR_PROJECT_ROOT_DIR,Hu.hvigorVersion);const D=yu.join(Mu,Nu.WORK_SPACE);try{mu.mkdirSync(D,{recursive:!0});const e=yu.resolve(D,Nu.DEFAULT_PACKAGE_JSON);mu.writeFileSync(e,JSON.stringify(u))}catch(u){(0,Su.logErrorAndExit)(u)}(function(){const u=["config","set","store-dir",Nu.HVIGOR_PNPM_STORE_PATH],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)})(),function(){const u=["install"],D={cwd:yu.join(Mu,Nu.WORK_SPACE),stdio:["inherit","inherit","inherit"]};(0,wu.executeCommand)(Nu.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH,u,D)}(),(0,Su.logInfoPrintConsole)("Hvigor install success.")}()}catch(u){Vu()}}return Mu};var Gu={};!function(t){var C=n&&n.__createBinding||(Object.create?function(u,D,e,t){void 0===t&&(t=e);var r=Object.getOwnPropertyDescriptor(D,e);r&&!("get"in r?!D.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return D[e]}}),Object.defineProperty(u,t,r)}:function(u,D,e,t){void 0===t&&(t=e),u[t]=D[e]}),F=n&&n.__setModuleDefault||(Object.create?function(u,D){Object.defineProperty(u,"default",{enumerable:!0,value:D})}:function(u,D){u.default=D}),E=n&&n.__importStar||function(u){if(u&&u.__esModule)return u;var D={};if(null!=u)for(var e in u)"default"!==e&&Object.prototype.hasOwnProperty.call(u,e)&&C(D,u,e);return F(D,u),D},A=n&&n.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(t,"__esModule",{value:!0}),t.executeInstallPnpm=t.isPnpmInstalled=t.environmentHandler=t.checkNpmConifg=t.PNPM_VERSION=void 0;const o=r,a=E(e),c=A(D),s=E(u),B=i,d=l,f=ou;t.PNPM_VERSION="7.30.0",t.checkNpmConifg=function(){const u=s.resolve(B.HVIGOR_PROJECT_ROOT_DIR,".npmrc"),D=s.resolve(c.default.homedir(),".npmrc");if((0,f.isFileExists)(u)||(0,f.isFileExists)(D))return;const e=(0,f.getNpmPath)(),t=(0,o.spawnSync)(e,["config","get","prefix"],{cwd:B.HVIGOR_PROJECT_ROOT_DIR});if(0!==t.status||!t.stdout)return void(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.");const r=s.resolve(`${t.stdout}`.replace(/[\r\n]/gi,""),".npmrc");(0,f.isFileExists)(r)||(0,d.logErrorAndExit)("Error: The hvigor depends on the npmrc file. Configure the npmrc file first.")},t.environmentHandler=function(){process.env["npm_config_update-notifier"]="false"},t.isPnpmInstalled=function(){return!!a.existsSync(B.HVIGOR_WRAPPER_PNPM_SCRIPT_PATH)&&(0,f.hasNpmPackInPaths)("pnpm",[B.HVIGOR_WRAPPER_TOOLS_HOME])},t.executeInstallPnpm=function(){(0,d.logInfoPrintConsole)(`Installing pnpm@${t.PNPM_VERSION}...`);const u=(0,f.getNpmPath)();!function(){const u=s.resolve(B.HVIGOR_WRAPPER_TOOLS_HOME,B.DEFAULT_PACKAGE_JSON);try{a.existsSync(B.HVIGOR_WRAPPER_TOOLS_HOME)||a.mkdirSync(B.HVIGOR_WRAPPER_TOOLS_HOME,{recursive:!0});const D={dependencies:{}};D.dependencies[B.PNPM]=t.PNPM_VERSION,a.writeFileSync(u,JSON.stringify(D))}catch(D){(0,d.logErrorAndExit)(`Error: EPERM: operation not permitted,create ${u} failed.`)}}(),(0,f.executeCommand)(u,["install","pnpm"],{cwd:B.HVIGOR_WRAPPER_TOOLS_HOME,stdio:["inherit","inherit","inherit"],env:process.env}),(0,d.logInfoPrintConsole)("Pnpm install success.")}}(Gu),function(){Gu.checkNpmConifg(),Gu.environmentHandler(),Gu.isPnpmInstalled()||Gu.executeInstallPnpm();const D=gu();_(u.join(D,i.WORK_SPACE))}(); \ No newline at end of file diff --git a/performance/arkui/benchmark_pipeline/Benchmark/hvigorfile.ts b/performance/arkui/benchmark_pipeline/Benchmark/hvigorfile.ts index f3cb9f1a..2a4a8343 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/hvigorfile.ts +++ b/performance/arkui/benchmark_pipeline/Benchmark/hvigorfile.ts @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { appTasks } from '@ohos/hvigor-ohos-plugin'; export default { diff --git a/performance/arkui/benchmark_pipeline/Benchmark/hvigorw b/performance/arkui/benchmark_pipeline/Benchmark/hvigorw index ff6a29a2..daf5da7d 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/hvigorw +++ b/performance/arkui/benchmark_pipeline/Benchmark/hvigorw @@ -1,5 +1,20 @@ #!/bin/bash +# ---------------------------------------------------------------------------- +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ---------------------------------------------------------------------------- + # ---------------------------------------------------------------------------- # Hvigor startup script, version 1.0.0 # diff --git a/performance/arkui/benchmark_pipeline/Benchmark/hvigorw.bat b/performance/arkui/benchmark_pipeline/Benchmark/hvigorw.bat index d570007e..3c6a9de8 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/hvigorw.bat +++ b/performance/arkui/benchmark_pipeline/Benchmark/hvigorw.bat @@ -1,3 +1,16 @@ +:: Copyright (c) 2023 Huawei Device Co., Ltd. +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem diff --git a/performance/arkui/benchmark_pipeline/Benchmark/oh-package.json5 b/performance/arkui/benchmark_pipeline/Benchmark/oh-package.json5 index 78080c8d..b5021851 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/oh-package.json5 +++ b/performance/arkui/benchmark_pipeline/Benchmark/oh-package.json5 @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + { "license": "", "devDependencies": { diff --git a/performance/arkui/benchmark_pipeline/benchmark.bat b/performance/arkui/benchmark_pipeline/benchmark.bat index 2ac9a63e..baff670d 100644 --- a/performance/arkui/benchmark_pipeline/benchmark.bat +++ b/performance/arkui/benchmark_pipeline/benchmark.bat @@ -1,3 +1,16 @@ +:: Copyright (c) 2023 Huawei Device Co., Ltd. +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + @echo off :: diff --git a/performance/arkui/benchmark_pipeline/bytrace.bat b/performance/arkui/benchmark_pipeline/bytrace.bat index 93151b74..f884f67f 100644 --- a/performance/arkui/benchmark_pipeline/bytrace.bat +++ b/performance/arkui/benchmark_pipeline/bytrace.bat @@ -1,3 +1,16 @@ +:: Copyright (c) 2023 Huawei Device Co., Ltd. +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + ::bytrace hdc shell "bytrace -t 10 -b 40960 --overwrite ability ace graphic > /data/%filename%" hdc shell "sed -i '1,2d' /data/%filename%" diff --git a/performance/arkui/benchmark_pipeline/test.bat b/performance/arkui/benchmark_pipeline/test.bat index 4fcfd511..0e6c14a2 100644 --- a/performance/arkui/benchmark_pipeline/test.bat +++ b/performance/arkui/benchmark_pipeline/test.bat @@ -1,2 +1,15 @@ +:: Copyright (c) 2023 Huawei Device Co., Ltd. +:: Licensed under the Apache License, Version 2.0 (the "License"); +:: you may not use this file except in compliance with the License. +:: You may obtain a copy of the License at +:: +:: http://www.apache.org/licenses/LICENSE-2.0 +:: +:: Unless required by applicable law or agreed to in writing, software +:: distributed under the License is distributed on an "AS IS" BASIS, +:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +:: See the License for the specific language governing permissions and +:: limitations under the License. + ::Զ hdc shell aa test -b com.example.benchmark -m entry_test -s unittest OpenHarmonyTestRunner -s class IndexTest#%1 -s timeout 150000 \ No newline at end of file diff --git "a/performance/arkui/benchmark_pipeline/\346\270\262\346\237\223\347\256\241\347\272\277\346\212\245\345\221\212.xls" "b/performance/arkui/benchmark_pipeline/\346\270\262\346\237\223\347\256\241\347\272\277\346\212\245\345\221\212.xls" deleted file mode 100644 index 739303c8839ef1cbc9eab8c9fa69120d0479e96e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23040 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 P7zO|$!wYQx@7#X@$3S2V -- Gitee From bffbc9d34c5149a386e42b52cbd1343eda5668f7 Mon Sep 17 00:00:00 2001 From: likunhui Date: Wed, 6 Dec 2023 18:30:15 +0800 Subject: [PATCH 3/3] add assert --- .../src/ohosTest/ets/test/Ability.test.ets | 9 +++++++++ .../entry/src/ohosTest/ets/test/Index.test.ets | 18 ++++++++++++++++-- .../Benchmark/oh-package-lock.json5 | 15 +++++++++++++++ .../arkui/benchmark_pipeline/traceParseFile.py | 13 +++++++++++++ 4 files changed, 53 insertions(+), 2 deletions(-) diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Ability.test.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Ability.test.ets index 24cdb341..00b25c9b 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Ability.test.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Ability.test.ets @@ -37,6 +37,15 @@ export default function abilityTest() { // Presets a clear action, which is performed after all test cases of the test suite end. // This API supports only one parameter: clear action function. }) + + /** + * @tc.desc : AssertContain + * @tc.name : AssertContain + * @tc.number: AssertContain + * @tc.level : Level 2 + * @tc.size : MediumTest + * @tc.type : Function + */ it('assertContain', 0, () => { // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); diff --git a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Index.test.ets b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Index.test.ets index 755ce1f9..26606a13 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Index.test.ets +++ b/performance/arkui/benchmark_pipeline/Benchmark/entry/src/ohosTest/ets/test/Index.test.ets @@ -51,8 +51,6 @@ async function commonTestCase(pageBtnId: string, compId: string) { } // **当前页面跳转or显示有转场动画时间or按钮点击事件处理,需要延迟** await driver.delayMs(2000) - // 断言 - expect(1).assertEqual(1) } export default function IndexTest() { @@ -68,6 +66,7 @@ export default function IndexTest() { */ it('benchmark01_click_button', 0, async () => { await commonTestCase('benchmark01', 'first_btn') // 用例1-点击某一按钮 + expect(1).assertEqual(1) // 断言 }) /** @@ -80,6 +79,7 @@ export default function IndexTest() { */ it('benchmark01_start_app', 0, async () => { await commonTestCase('benchmark01', '') // 用例5、9-启动应用 + expect(1).assertEqual(1) // 断言 }) /** @@ -92,6 +92,7 @@ export default function IndexTest() { */ it('benchmark02_click_button', 0, async () => { await commonTestCase('benchmark02', 'first_btn') // 用例2-点击某一按钮 + expect(1).assertEqual(1) // 断言 }) /** @@ -104,6 +105,7 @@ export default function IndexTest() { */ it('benchmark02_start_app', 0, async () => { await commonTestCase('benchmark02', '') // 用例6、10、15-启动应用 + expect(1).assertEqual(1) // 断言 }) /** @@ -116,6 +118,7 @@ export default function IndexTest() { */ it('benchmark03_click_button', 0, async () => { await commonTestCase('benchmark03', 'only_btn') // 用例3-点击button + expect(1).assertEqual(1) // 断言 }) /** @@ -128,6 +131,7 @@ export default function IndexTest() { */ it('benchmark03_start_app', 0, async () => { await commonTestCase('benchmark03', '') // 用例7、11-启动应用 + expect(1).assertEqual(1) // 断言 }) /** @@ -140,6 +144,7 @@ export default function IndexTest() { */ it('benchmark04_click_button', 0, async () => { await commonTestCase('benchmark04', 'only_btn') // 用例4-点击button + expect(1).assertEqual(1) // 断言 }) /** @@ -152,6 +157,7 @@ export default function IndexTest() { */ it('benchmark04_start_app', 0, async () => { await commonTestCase('benchmark04', '') // 用例8、12-启动应用 + expect(1).assertEqual(1) // 断言 }) /** @@ -164,6 +170,7 @@ export default function IndexTest() { */ it("benchmark05_push_page", 0, async () => { await commonTestCase('benchmark05', 'id_0') // 用例13-页面1跳转页面2(有页面转场动画) + expect(1).assertEqual(1) // 断言 }) /** @@ -176,6 +183,7 @@ export default function IndexTest() { */ it('benchmark06_start_app', 0, async () => { await commonTestCase('benchmark06', '') // 用例14-启动应用 + expect(1).assertEqual(1) // 断言 }) /** @@ -188,6 +196,7 @@ export default function IndexTest() { */ it('benchmark07_change_title', 0, async () => { await commonTestCase('benchmark07', 'first_btn') // 用例15-点击button改变button文字 + expect(1).assertEqual(1) // 断言 }) /** @@ -200,6 +209,7 @@ export default function IndexTest() { */ it('benchmark08_change_title', 0, async () => { await commonTestCase('benchmark08', 'first_btn') // 用例16-点击button改变button文字 + expect(1).assertEqual(1) // 断言 }) /** @@ -212,6 +222,7 @@ export default function IndexTest() { */ it("benchmark09_change_visible", 0, async () => { await commonTestCase('benchmark09', '') // 用例17-滑动到底部 + expect(1).assertEqual(1) // 断言 }) /** @@ -224,6 +235,7 @@ export default function IndexTest() { */ it('benchmark10_change_visible', 0, async () => { await commonTestCase('benchmark10', '') // 用例18-滑动到底部 + expect(1).assertEqual(1) // 断言 }) /** @@ -236,6 +248,7 @@ export default function IndexTest() { */ it('benchmark11_change_size', 0, async () => { await commonTestCase('benchmark11', 'first_btn') // 用例19-点击button改变button宽高 + expect(1).assertEqual(1) // 断言 }) /** @@ -248,6 +261,7 @@ export default function IndexTest() { */ it('benchmark12_change_size', 0, async () => { await commonTestCase('benchmark12', 'first_btn') // 用例20-点击button改变button宽高 + expect(1).assertEqual(1) // 断言 }) }) diff --git a/performance/arkui/benchmark_pipeline/Benchmark/oh-package-lock.json5 b/performance/arkui/benchmark_pipeline/Benchmark/oh-package-lock.json5 index ddc8a54d..5ef54cfd 100644 --- a/performance/arkui/benchmark_pipeline/Benchmark/oh-package-lock.json5 +++ b/performance/arkui/benchmark_pipeline/Benchmark/oh-package-lock.json5 @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + { "lockfileVersion": 1, "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", diff --git a/performance/arkui/benchmark_pipeline/traceParseFile.py b/performance/arkui/benchmark_pipeline/traceParseFile.py index 59517a53..10b3ec15 100644 --- a/performance/arkui/benchmark_pipeline/traceParseFile.py +++ b/performance/arkui/benchmark_pipeline/traceParseFile.py @@ -1,3 +1,16 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + #!/usr/bin/python3 import re from xlutils.copy import * -- Gitee