Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Xts Acts
提交
36a866e6
X
Xts Acts
项目概览
OpenHarmony
/
Xts Acts
1 年多 前同步成功
通知
9
Star
22
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
Xts Acts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
36a866e6
编写于
7月 23, 2022
作者:
O
openharmony_ci
提交者:
Gitee
7月 23, 2022
浏览文件
操作
浏览文件
下载
差异文件
!4509 Adapt to the new framework_part25
Merge pull request !4509 from jiyong/local-20220723-0001
上级
3c0256fc
faa7a1e2
变更
20
隐藏空白更改
内联
并排
Showing
20 changed file
with
2809 addition
and
2609 deletion
+2809
-2609
multimedia/image/image_js_standard/image/BUILD.gn
multimedia/image/image_js_standard/image/BUILD.gn
+4
-2
multimedia/image/image_js_standard/image/Test.json
multimedia/image/image_js_standard/image/Test.json
+51
-55
multimedia/image/image_js_standard/image/src/main/config.json
...imedia/image/image_js_standard/image/src/main/config.json
+131
-103
multimedia/image/image_js_standard/image/src/main/js/MainAbility/app.js
...ge/image_js_standard/image/src/main/js/MainAbility/app.js
+30
-0
multimedia/image/image_js_standard/image/src/main/js/MainAbility/i18n/en-US.json
...js_standard/image/src/main/js/MainAbility/i18n/en-US.json
+5
-5
multimedia/image/image_js_standard/image/src/main/js/MainAbility/i18n/zh-CN.json
...js_standard/image/src/main/js/MainAbility/i18n/zh-CN.json
+5
-5
multimedia/image/image_js_standard/image/src/main/js/MainAbility/pages/index/index.css
...ndard/image/src/main/js/MainAbility/pages/index/index.css
+46
-46
multimedia/image/image_js_standard/image/src/main/js/MainAbility/pages/index/index.hml
...ndard/image/src/main/js/MainAbility/pages/index/index.hml
+5
-5
multimedia/image/image_js_standard/image/src/main/js/MainAbility/pages/index/index.js
...andard/image/src/main/js/MainAbility/pages/index/index.js
+28
-40
multimedia/image/image_js_standard/image/src/main/js/TestAbility/app.js
...ge/image_js_standard/image/src/main/js/TestAbility/app.js
+23
-23
multimedia/image/image_js_standard/image/src/main/js/TestAbility/i18n/en-US.json
...js_standard/image/src/main/js/TestAbility/i18n/en-US.json
+8
-0
multimedia/image/image_js_standard/image/src/main/js/TestAbility/i18n/zh-CN.json
...js_standard/image/src/main/js/TestAbility/i18n/zh-CN.json
+8
-0
multimedia/image/image_js_standard/image/src/main/js/TestAbility/pages/index/index.css
...ndard/image/src/main/js/TestAbility/pages/index/index.css
+30
-0
multimedia/image/image_js_standard/image/src/main/js/TestAbility/pages/index/index.hml
...ndard/image/src/main/js/TestAbility/pages/index/index.hml
+5
-0
multimedia/image/image_js_standard/image/src/main/js/TestAbility/pages/index/index.js
...andard/image/src/main/js/TestAbility/pages/index/index.js
+26
-0
multimedia/image/image_js_standard/image/src/main/js/TestRunner/OpenHarmonyTestRunner.js
...ard/image/src/main/js/TestRunner/OpenHarmonyTestRunner.js
+59
-0
multimedia/image/image_js_standard/image/src/main/js/test/List.test.js
...age/image_js_standard/image/src/main/js/test/List.test.js
+19
-16
multimedia/image/image_js_standard/image/src/main/js/test/image.test.js
...ge/image_js_standard/image/src/main/js/test/image.test.js
+1690
-1689
multimedia/image/image_js_standard/image/src/main/js/test/testImg.js
...image/image_js_standard/image/src/main/js/test/testImg.js
+609
-609
multimedia/image/image_js_standard/image/src/main/resources/base/element/string.json
...tandard/image/src/main/resources/base/element/string.json
+27
-11
未找到文件。
multimedia/image/image_js_standard/image/BUILD.gn
浏览文件 @
36a866e6
...
...
@@ -9,7 +9,7 @@
# 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.
# limitations under the License.
import("//test/xts/tools/build/suite.gni")
...
...
@@ -23,7 +23,9 @@ ohos_js_hap_suite("image_js_hap") {
hap_name = "ActsImageJsTest"
}
ohos_js_assets("image_js_assets") {
source_dir = "./src/main/js/default"
js2abc = true
hap_profile = "./src/main/config.json"
source_dir = "./src/main/js"
}
ohos_resources("image_resources") {
sources = [ "./src/main/resources" ]
...
...
multimedia/image/image_js_standard/image/Test.json
浏览文件 @
36a866e6
{
"description"
:
"Configuration for Image Tests"
,
"driver"
:
{
"type"
:
"JSUnitTest"
,
"test-timeout"
:
"300000"
,
"package"
:
"ohos.acts.multimedia.image"
,
"shell-timeout"
:
"120000"
},
"kits"
:
[
{
"test-file-name"
:
[
"ActsImageJsTest.hap"
],
"type"
:
"AppInstallKit"
,
"cleanup-apps"
:
true
},
{
"type"
:
"ShellKit"
,
"run-command"
:
[
"mkdir /data/app/el2/100/base/ohos.acts.multimedia.image/files"
,
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files"
]
},
{
"type"
:
"PushKit"
,
"pre-push"
:
[
],
"push"
:
[
"./resource/image/test.bmp ->/data/app/el2/100/base/ohos.acts.multimedia.image/files"
,
"./resource/image/test.png ->/data/app/el2/100/base/ohos.acts.multimedia.image/files"
,
"./resource/image/test.123 ->/data/app/el2/100/base/ohos.acts.multimedia.image/files"
,
"./resource/image/test.gif ->/data/app/el2/100/base/ohos.acts.multimedia.image/files"
,
"./resource/image/test.jpg ->/data/app/el2/100/base/ohos.acts.multimedia.image/files"
,
"./resource/image/moving_test.gif ->/data/app/el2/100/base/ohos.acts.multimedia.image/files"
]
},
{
"type"
:
"ShellKit"
,
"run-command"
:
[
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files/test.bmp"
,
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files/test.png"
,
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files/test.123"
,
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files/test.gif"
,
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files/test.jpg"
,
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files/moving_test.gif"
],
"teardown-command"
:[
]
}
]
}
{
"description"
:
"Configuration for Image Tests"
,
"driver"
:
{
"type"
:
"OHJSUnitTest"
,
"test-timeout"
:
"300000"
,
"shell-timeout"
:
"300000"
,
"bundle-name"
:
"ohos.acts.multimedia.image"
,
"package-name"
:
"ohos.acts.multimedia.image"
,
"testcase-timeout"
:
60000
},
"kits"
:
[
{
"test-file-name"
:
[
"ActsImageJsTest.hap"
],
"type"
:
"AppInstallKit"
,
"cleanup-apps"
:
true
},
{
"type"
:
"ShellKit"
,
"run-command"
:
[
"mkdir /data/app/el2/100/base/ohos.acts.multimedia.image/files"
,
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files"
]
},
{
"type"
:
"PushKit"
,
"pre-push"
:
[],
"push"
:
[
"./resource/image/test.bmp ->/data/app/el2/100/base/ohos.acts.multimedia.image/files"
,
"./resource/image/test.png ->/data/app/el2/100/base/ohos.acts.multimedia.image/files"
,
"./resource/image/test.123 ->/data/app/el2/100/base/ohos.acts.multimedia.image/files"
,
"./resource/image/test.gif ->/data/app/el2/100/base/ohos.acts.multimedia.image/files"
,
"./resource/image/test.jpg ->/data/app/el2/100/base/ohos.acts.multimedia.image/files"
,
"./resource/image/moving_test.gif ->/data/app/el2/100/base/ohos.acts.multimedia.image/files"
]
},
{
"type"
:
"ShellKit"
,
"run-command"
:
[
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files/test.bmp"
,
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files/test.png"
,
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files/test.123"
,
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files/test.gif"
,
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files/test.jpg"
,
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.image/files/moving_test.gif"
],
"teardown-command"
:
[]
}
]
}
\ No newline at end of file
multimedia/image/image_js_standard/image/src/main/config.json
浏览文件 @
36a866e6
{
"app"
:
{
"apiVersion"
:
{
"compatible"
:
6
,
"releaseType"
:
"Beta1"
,
"target"
:
7
},
"vendor"
:
"acts"
,
"bundleName"
:
"ohos.acts.multimedia.image"
,
"version"
:
{
"code"
:
1000000
,
"name"
:
"1.0.0"
}
},
"deviceConfig"
:
{
"default"
:
{
"debug"
:
true
}
},
"module"
:
{
"abilities"
:
[
{
"iconId"
:
16777218
,
"skills"
:
[
{
"entities"
:
[
"entity.system.home"
],
"actions"
:
[
"action.system.home"
]
}
],
"descriptionId"
:
16777217
,
"visible"
:
true
,
"labelId"
:
16777216
,
"icon"
:
"$media:icon"
,
"name"
:
"ohos.acts.multimedia.image.MainAbility"
,
"description"
:
"$string:mainability_description"
,
"label"
:
"$string:entry_MainAbility"
,
"type"
:
"page"
,
"homeAbility"
:
true
,
"launchType"
:
"standard"
}
],
"deviceType"
:
[
"phone"
,
"tablet"
,
"tv"
,
"wearable"
],
"mainAbility"
:
"ohos.acts.multimedia.image.MainAbility"
,
"distro"
:
{
"moduleType"
:
"entry"
,
"installationFree"
:
false
,
"deliveryWithInstall"
:
true
,
"moduleName"
:
"entry"
},
"reqPermissions"
:
[
{
"name"
:
"ohos.permission.GET_BUNDLE_INFO"
,
"reason"
:
"use ohos.permission.GET_BUNDLE_INFO"
},
{
"name"
:
"ohos.permission.GET_BUNDLE_INFO_PRIVILEGED"
,
"reason"
:
"use ohos.permission.GET_BUNDLE_INFO_PRIVILEGED"
},
{
"name"
:
"ohos.permission.GRANT_SENSITIVE_PERMISSIONS"
,
"reason"
:
"use ohos.permission.GRANT_SENSITIVE_PERMISSIONS"
},
{
"name"
:
"ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"
,
"reason"
:
"use ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"
},
{
"name"
:
"ohos.permission.MEDIA_LOCATION"
,
"reason"
:
"use ohos.permission.MEDIA_LOCATION"
},
{
"name"
:
"ohos.permission.READ_MEDIA"
,
"reason"
:
"use ohos.permission.READ_MEDIA"
},
{
"name"
:
"ohos.permission.WRITE_MEDIA"
,
"reason"
:
"use ohos.permission.WRITE_MEDIA"
}
],
"package"
:
"ohos.acts.multimedia.image"
,
"name"
:
".MyApplication"
,
"js"
:
[
{
"pages"
:
[
"pages/index/index"
],
"name"
:
"default"
,
"window"
:
{
"designWidth"
:
720
,
"autoDesignWidth"
:
true
}
}
]
}
{
"app"
:
{
"apiVersion"
:
{
"compatible"
:
6
,
"releaseType"
:
"Beta1"
,
"target"
:
7
},
"vendor"
:
"acts"
,
"bundleName"
:
"ohos.acts.multimedia.image"
,
"version"
:
{
"code"
:
1000000
,
"name"
:
"1.0.0"
}
},
"deviceConfig"
:
{
"default"
:
{
"debug"
:
true
}
},
"module"
:
{
"abilities"
:
[
{
"skills"
:
[
{
"entities"
:
[
"entity.system.home"
],
"actions"
:
[
"action.system.home"
]
}
],
"orientation"
:
"unspecified"
,
"formsEnabled"
:
false
,
"name"
:
".MainAbility"
,
"srcLanguage"
:
"js"
,
"srcPath"
:
"MainAbility"
,
"icon"
:
"$media:icon"
,
"description"
:
"$string:MainAbility_desc"
,
"label"
:
"$string:MainAbility_label"
,
"type"
:
"page"
,
"visible"
:
true
,
"launchType"
:
"standard"
},
{
"orientation"
:
"unspecified"
,
"formsEnabled"
:
false
,
"name"
:
".TestAbility"
,
"srcLanguage"
:
"js"
,
"srcPath"
:
"TestAbility"
,
"icon"
:
"$media:icon"
,
"description"
:
"$string:TestAbility_desc"
,
"label"
:
"$string:TestAbility_label"
,
"type"
:
"page"
,
"visible"
:
true
,
"launchType"
:
"standard"
}
],
"deviceType"
:
[
"phone"
,
"tablet"
,
"tv"
,
"wearable"
],
"mainAbility"
:
".MainAbility"
,
"distro"
:
{
"moduleType"
:
"entry"
,
"installationFree"
:
false
,
"deliveryWithInstall"
:
true
,
"moduleName"
:
"entry"
},
"reqPermissions"
:
[
{
"name"
:
"ohos.permission.GET_BUNDLE_INFO"
,
"reason"
:
"use ohos.permission.GET_BUNDLE_INFO"
},
{
"name"
:
"ohos.permission.GET_BUNDLE_INFO_PRIVILEGED"
,
"reason"
:
"use ohos.permission.GET_BUNDLE_INFO_PRIVILEGED"
},
{
"name"
:
"ohos.permission.GRANT_SENSITIVE_PERMISSIONS"
,
"reason"
:
"use ohos.permission.GRANT_SENSITIVE_PERMISSIONS"
},
{
"name"
:
"ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"
,
"reason"
:
"use ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"
},
{
"name"
:
"ohos.permission.MEDIA_LOCATION"
,
"reason"
:
"use ohos.permission.MEDIA_LOCATION"
},
{
"name"
:
"ohos.permission.READ_MEDIA"
,
"reason"
:
"use ohos.permission.READ_MEDIA"
},
{
"name"
:
"ohos.permission.WRITE_MEDIA"
,
"reason"
:
"use ohos.permission.WRITE_MEDIA"
}
],
"package"
:
"ohos.acts.multimedia.image"
,
"name"
:
".entry"
,
"js"
:
[
{
"pages"
:
[
"pages/index/index"
],
"name"
:
"default"
,
"window"
:
{
"designWidth"
:
720
,
"autoDesignWidth"
:
true
}
},
{
"pages"
:
[
"pages/index/index"
],
"name"
:
".TestAbility"
,
"window"
:
{
"designWidth"
:
720
,
"autoDesignWidth"
:
false
}
}
],
"testRunner"
:
{
"name"
:
"OpenHarmonyTestRunner"
,
"srcPath"
:
"TestRunner"
},
"srcPath"
:
""
}
}
\ No newline at end of file
multimedia/image/image_js_standard/image/src/main/js/MainAbility/app.js
0 → 100644
浏览文件 @
36a866e6
/*
* Copyright (C) 2021 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
AbilityDelegatorRegistry
from
'
@ohos.application.abilityDelegatorRegistry
'
import
{
Hypium
}
from
'
@ohos/hypium
'
import
testsuite
from
'
../test/List.test
'
export
default
{
onCreate
()
{
console
.
info
(
'
TestApplication onCreate
'
)
var
abilityDelegator
=
AbilityDelegatorRegistry
.
getAbilityDelegator
()
var
abilityDelegatorArguments
=
AbilityDelegatorRegistry
.
getArguments
()
console
.
info
(
'
start run testcase!!!
'
)
Hypium
.
hypiumTest
(
abilityDelegator
,
abilityDelegatorArguments
,
testsuite
)
},
onDestroy
()
{
console
.
info
(
"
TestApplication onDestroy
"
);
}
};
multimedia/image/image_js_standard/image/src/main/js/
default
/i18n/en-US.json
→
multimedia/image/image_js_standard/image/src/main/js/
MainAbility
/i18n/en-US.json
浏览文件 @
36a866e6
{
"strings"
:
{
"hello"
:
"Hello"
,
"world"
:
"World"
}
{
"strings"
:
{
"hello"
:
"Hello"
,
"world"
:
"World"
}
}
\ No newline at end of file
multimedia/image/image_js_standard/image/src/main/js/
default
/i18n/zh-CN.json
→
multimedia/image/image_js_standard/image/src/main/js/
MainAbility
/i18n/zh-CN.json
浏览文件 @
36a866e6
{
"strings"
:
{
"hello"
:
"您好"
,
"world"
:
"世界"
}
{
"strings"
:
{
"hello"
:
"您好"
,
"world"
:
"世界"
}
}
\ No newline at end of file
multimedia/image/image_js_standard/image/src/main/js/
default
/pages/index/index.css
→
multimedia/image/image_js_standard/image/src/main/js/
MainAbility
/pages/index/index.css
浏览文件 @
36a866e6
.container
{
flex-direction
:
column
;
justify-content
:
center
;
align-items
:
center
;
width
:
100%
;
height
:
100%
;
}
.title
{
font-size
:
40px
;
color
:
#000000
;
opacity
:
0.9
;
}
@media
screen
and
(
device-type
:
tablet
)
and
(
orientation
:
landscape
)
{
.title
{
font-size
:
100px
;
}
}
@media
screen
and
(
device-type
:
wearable
)
{
.title
{
font-size
:
28px
;
color
:
#FFFFFF
;
}
}
@media
screen
and
(
device-type
:
tv
)
{
.container
{
background-image
:
url("/common/images/Wallpaper.png")
;
background-size
:
cover
;
background-repeat
:
no-repeat
;
background-position
:
center
;
}
.title
{
font-size
:
100px
;
color
:
#FFFFFF
;
}
}
@media
screen
and
(
device-type
:
phone
)
and
(
orientation
:
landscape
)
{
.title
{
font-size
:
60px
;
}
}
.container
{
flex-direction
:
column
;
justify-content
:
center
;
align-items
:
center
;
width
:
100%
;
height
:
100%
;
}
.title
{
font-size
:
40px
;
color
:
#000000
;
opacity
:
0.9
;
}
@media
screen
and
(
device-type
:
tablet
)
and
(
orientation
:
landscape
)
{
.title
{
font-size
:
100px
;
}
}
@media
screen
and
(
device-type
:
wearable
)
{
.title
{
font-size
:
28px
;
color
:
#FFFFFF
;
}
}
@media
screen
and
(
device-type
:
tv
)
{
.container
{
background-image
:
url("/common/images/Wallpaper.png")
;
background-size
:
cover
;
background-repeat
:
no-repeat
;
background-position
:
center
;
}
.title
{
font-size
:
100px
;
color
:
#FFFFFF
;
}
}
@media
screen
and
(
device-type
:
phone
)
and
(
orientation
:
landscape
)
{
.title
{
font-size
:
60px
;
}
}
multimedia/image/image_js_standard/image/src/main/js/
default
/pages/index/index.hml
→
multimedia/image/image_js_standard/image/src/main/js/
MainAbility
/pages/index/index.hml
浏览文件 @
36a866e6
<div class="container">
<text class="title">
{{ $t('strings.hello') }} {{ title }}
</text>
</div>
<div class="container">
<text class="title">
{{ $t('strings.hello') }} {{ title }}
</text>
</div>
multimedia/image/image_js_standard/image/src/main/js/
default
/pages/index/index.js
→
multimedia/image/image_js_standard/image/src/main/js/
MainAbility
/pages/index/index.js
浏览文件 @
36a866e6
/*
* Copyright (C) 2021 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
{
Core
,
ExpectExtend
}
from
'
deccjsunit/index
'
export
default
{
data
:
{
title
:
""
},
onInit
()
{
this
.
title
=
this
.
$t
(
'
strings.world
'
);
},
onShow
()
{
console
.
info
(
'
onShow finish
'
)
const
core
=
Core
.
getInstance
()
const
expectExtend
=
new
ExpectExtend
({
'
id
'
:
'
extend
'
})
core
.
addService
(
'
expect
'
,
expectExtend
)
core
.
init
()
const
configService
=
core
.
getDefaultService
(
'
config
'
)
this
.
timeout
=
60000
configService
.
setConfig
(
this
)
require
(
'
../../../test/List.test
'
)
core
.
execute
()
},
onReady
()
{
},
/*
* Copyright (C) 2021 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.
*/
export
default
{
data
:
{
title
:
""
},
onInit
()
{
this
.
title
=
this
.
$t
(
'
strings.world
'
);
},
onShow
()
{
console
.
info
(
'
onShow finish
'
)
},
onReady
()
{
},
}
\ No newline at end of file
multimedia/image/image_js_standard/image/src/main/js/
default
/app.js
→
multimedia/image/image_js_standard/image/src/main/js/
TestAbility
/app.js
浏览文件 @
36a866e6
/*
* Copyright (
C) 2021 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.
*/
export
default
{
onCreate
()
{
console
.
info
(
'
AceApplication onCreate
'
);
},
onDestroy
()
{
console
.
info
(
'
AceApplication onDestroy
'
);
}
};
/*
* Copyright (
c) 2022 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.
*/
export
default
{
onCreate
()
{
console
.
info
(
'
AceApplication onCreate
'
);
},
onDestroy
()
{
console
.
info
(
'
AceApplication onDestroy
'
);
}
};
\ No newline at end of file
multimedia/image/image_js_standard/image/src/main/js/TestAbility/i18n/en-US.json
0 → 100644
浏览文件 @
36a866e6
{
"strings"
:
{
"hello"
:
"Hello"
,
"world"
:
"World"
},
"Files"
:
{
}
}
\ No newline at end of file
multimedia/image/image_js_standard/image/src/main/js/TestAbility/i18n/zh-CN.json
0 → 100644
浏览文件 @
36a866e6
{
"strings"
:
{
"hello"
:
"您好"
,
"world"
:
"世界"
},
"Files"
:
{
}
}
\ No newline at end of file
multimedia/image/image_js_standard/image/src/main/js/TestAbility/pages/index/index.css
0 → 100644
浏览文件 @
36a866e6
.container
{
display
:
flex
;
flex-direction
:
column
;
justify-content
:
center
;
align-items
:
center
;
left
:
0px
;
top
:
0px
;
width
:
100%
;
height
:
100%
;
}
.title
{
font-size
:
60px
;
text-align
:
center
;
width
:
100%
;
height
:
40%
;
margin
:
10px
;
}
@media
screen
and
(
device-type
:
phone
)
and
(
orientation
:
landscape
)
{
.title
{
font-size
:
60px
;
}
}
@media
screen
and
(
device-type
:
tablet
)
and
(
orientation
:
landscape
)
{
.title
{
font-size
:
100px
;
}
}
\ No newline at end of file
multimedia/image/image_js_standard/image/src/main/js/TestAbility/pages/index/index.hml
0 → 100644
浏览文件 @
36a866e6
<div class="container">
<text class="title">
{{ $t('strings.hello') }} {{ title }}
</text>
</div>
multimedia/image/image_js_standard/image/src/main/js/TestAbility/pages/index/index.js
0 → 100644
浏览文件 @
36a866e6
/*
* Copyright (c) 2022 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.
*/
export
default
{
data
:
{
title
:
""
},
onInit
()
{
this
.
title
=
this
.
$t
(
'
strings.world
'
);
}
}
multimedia/image/image_js_standard/image/src/main/js/TestRunner/OpenHarmonyTestRunner.js
0 → 100644
浏览文件 @
36a866e6
/*
* Copyright (c) 2022 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
AbilityDelegatorRegistry
from
'
@ohos.application.abilityDelegatorRegistry
'
function
translateParamsToString
(
parameters
)
{
const
keySet
=
new
Set
([
'
-s class
'
,
'
-s notClass
'
,
'
-s suite
'
,
'
-s itName
'
,
'
-s level
'
,
'
-s testType
'
,
'
-s size
'
,
'
-s timeout
'
,
'
-s package
'
,
'
-s dryRun
'
])
let
targetParams
=
''
;
for
(
const
key
in
parameters
)
{
if
(
keySet
.
has
(
key
))
{
targetParams
+=
'
'
+
key
+
'
'
+
parameters
[
key
]
}
}
return
targetParams
.
trim
()
}
export
default
{
onPrepare
()
{
console
.
info
(
'
OpenHarmonyTestRunner OnPrepare
'
)
},
onRun
()
{
console
.
log
(
'
OpenHarmonyTestRunner onRun run
'
)
var
abilityDelegatorArguments
=
AbilityDelegatorRegistry
.
getArguments
()
var
abilityDelegator
=
AbilityDelegatorRegistry
.
getAbilityDelegator
()
var
testAbilityName
=
abilityDelegatorArguments
.
parameters
[
'
-p
'
]
+
'
.MainAbility
'
var
cmd
=
'
aa start -d 0 -a
'
+
testAbilityName
+
'
-b
'
+
abilityDelegatorArguments
.
bundleName
cmd
+=
'
'
+
translateParamsToString
(
abilityDelegatorArguments
.
parameters
)
var
debug
=
abilityDelegatorArguments
.
parameters
[
"
-D
"
]
console
.
info
(
'
debug value :
'
+
debug
)
if
(
debug
==
'
true
'
)
{
cmd
+=
'
-D
'
}
console
.
info
(
'
cmd :
'
+
cmd
)
abilityDelegator
.
executeShellCommand
(
cmd
,
(
err
,
data
)
=>
{
console
.
info
(
'
executeShellCommand : err :
'
+
JSON
.
stringify
(
err
));
console
.
info
(
'
executeShellCommand : data :
'
+
data
.
stdResult
);
console
.
info
(
'
executeShellCommand : data :
'
+
data
.
exitCode
);
})
}
};
multimedia/image/image_js_standard/image/src/main/js/test/List.test.js
浏览文件 @
36a866e6
/*
* Copyright (C) 2021 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.
*/
require
(
'
./image.test.js
'
)
\ No newline at end of file
/*
* Copyright (C) 2021 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
Image_test
from
'
./image.test.js
'
export
default
function
testsuite
()
{
Image_test
()
}
multimedia/image/image_js_standard/image/src/main/js/test/image.test.js
浏览文件 @
36a866e6
/*
* Copyright (C) 2021 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
image
from
'
@ohos.multimedia.image
'
import
fileio
from
'
@ohos.fileio
'
import
{
describe
,
beforeAll
,
beforeEach
,
afterEach
,
afterAll
,
it
,
expect
}
from
'
deccjsunit/index
'
import
{
testPng
,
testJpg
}
from
'
./testImg
'
import
abilityAccessCtrl
from
'
@ohos.abilityAccessCtrl
'
import
bundle
from
'
@ohos.bundle
'
describe
(
'
Image
'
,
function
()
{
var
pathJpg
=
'
/data/storage/el2/base/files/test.jpg
'
;
var
pathBmp
=
'
/data/storage/el2/base/files/test.bmp
'
;
var
pathGif
=
'
/data/storage/el2/base/files/test.gif
'
;
var
pathPng
=
'
/data/storage/el2/base/files/test.png
'
;
var
pathMovingGif
=
'
/data/storage/el2/base/files/moving_test.gif
'
;
let
globalpixelmap
;
beforeAll
(
async
function
()
{
await
applyPermission
();
console
.
info
(
'
beforeAll case
'
);
})
beforeEach
(
function
()
{
console
.
info
(
'
beforeEach case
'
);
})
afterEach
(
async
function
()
{
if
(
globalpixelmap
!=
undefined
)
{
console
.
info
(
'
globalpixelmap release start
'
);
try
{
await
globalpixelmap
.
release
();
}
catch
(
error
)
{
console
.
info
(
'
globalpixelmap release fail
'
);
}
}
console
.
info
(
'
afterEach case
'
);
})
afterAll
(
async
function
()
{
console
.
info
(
'
afterAll case
'
);
})
async
function
applyPermission
()
{
let
appInfo
=
await
bundle
.
getApplicationInfo
(
'
ohos.acts.multimedia.image
'
,
0
,
100
);
let
atManager
=
abilityAccessCtrl
.
createAtManager
();
if
(
atManager
!=
null
)
{
let
tokenID
=
appInfo
.
accessTokenId
;
console
.
info
(
'
[permission]case accessTokenId is
'
+
tokenID
);
let
permissionName1
=
'
ohos.permission.MEDIA_LOCATION
'
;
let
permissionName2
=
'
ohos.permission.READ_MEDIA
'
;
let
permissionName3
=
'
ohos.permission.WRITE_MEDIA
'
;
await
atManager
.
grantUserGrantedPermission
(
tokenID
,
permissionName1
).
then
((
result
)
=>
{
console
.
info
(
'
[permission]case grantUserGrantedPermission success:
'
+
result
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
[permission]case grantUserGrantedPermission failed:
'
+
err
);
});
await
atManager
.
grantUserGrantedPermission
(
tokenID
,
permissionName2
).
then
((
result
)
=>
{
console
.
info
(
'
[permission]case grantUserGrantedPermission success:
'
+
result
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
[permission]case grantUserGrantedPermission failed:
'
+
err
);
});
await
atManager
.
grantUserGrantedPermission
(
tokenID
,
permissionName3
).
then
((
result
)
=>
{
console
.
info
(
'
[permission]case grantUserGrantedPermission success:
'
+
result
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
[permission]case grantUserGrantedPermission failed:
'
+
err
);
});
}
else
{
console
.
info
(
'
[permission]case apply permission failed,createAtManager failed
'
);
}
}
/**
* @tc.number : TC_041
* @tc.name : createImageSource(uri)-jpg
* @tc.desc : 1.set uri
* 2.call createImageSource(uri)
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_041
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
expect
(
imageSourceApi
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_041 success
'
);
fileio
.
closeSync
(
fdNumber
);
done
();
}
catch
(
error
)
{
console
.
info
(
'
TC_041 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_041-1
* @tc.name : createImageSource(uri)-bmp
* @tc.desc : 1.seturi
* 2.call createImageSource(uri)
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_041-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
expect
(
imageSourceApi
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_041-1 success
'
);
done
();
}
catch
(
error
)
{
console
.
info
(
'
TC_041-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_041-2
* @tc.name : createImageSource(uri)-gif
* @tc.desc : 1.seturi
* 2.call createImageSource(uri)
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_041-2
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
expect
(
imageSourceApi
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_041-2 success
'
);
done
();
}
catch
(
error
)
{
console
.
info
(
'
TC_041-2 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_041-3
* @tc.name : createImageSource(uri)-png
* @tc.desc : 1.seturi
* 2.call createImageSource(uri)
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_041-3
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
expect
(
imageSourceApi
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_041-3 success
'
);
done
();
}
catch
(
error
)
{
console
.
info
(
'
TC_041-3 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_041-4
* @tc.name : createImageSource(uri)-wrong suffix file
* @tc.desc : 1.call createImageSource(uri)
* 2.Incoming wrong suffix file
* 3.imagesource null
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_041-4
'
,
0
,
async
function
(
done
)
{
const
imageSourceApi
=
image
.
createImageSource
(
'
file:///data/local/tmp/test.123
'
);
expect
(
imageSourceApi
==
undefined
).
assertTrue
();
console
.
info
(
'
TC_041-4 success
'
);
done
();
})
/**
* @tc.number : TC_041-5
* @tc.name : createImageSource(uri)-wrong uri
* @tc.desc : 1.call createImageSource(uri)
* 2.set wrong uri
* 3.return null
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_041-5
'
,
0
,
async
function
(
done
)
{
try
{
const
imageSourceApi
=
image
.
createImageSource
(
'
file:///multimedia/test.jpg
'
);
expect
(
imageSourceApi
==
undefined
).
assertTrue
();
console
.
info
(
'
TC_041-5 success
'
);
done
();
}
catch
(
error
)
{
console
.
info
(
'
TC_041-5 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_042
* @tc.name : createImageSource(fd)
* @tc.desc : 1.call createImageSource
* 2.set fd
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_042
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_042 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
((
err
,
imageInfo
)
=>
{
if
(
err
)
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_042 err:
'
+
err
);
done
();
return
}
if
(
imageInfo
!=
undefined
)
{
expect
(
true
).
assertTrue
();
fileio
.
closeSync
(
fdNumber
);
done
();
}
else
{
console
.
info
(
'
TC_042 failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_042 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_042-1
* @tc.name : createImageSource(fd) fd<0
* @tc.desc : 1.call createImageSource
* 2.set wrong fd
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_042-1
'
,
0
,
async
function
(
done
)
{
const
imageSourceApi
=
image
.
createImageSource
(
-
2
);
expect
(
imageSourceApi
==
undefined
).
assertTrue
();
console
.
info
(
'
TC_042-1 success
'
);
done
();
})
/**
* @tc.number : TC_043
* @tc.name : createImageSource(data)
* @tc.desc : 1.setdata
* 2.createImageSource
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_043
'
,
0
,
async
function
(
done
)
{
const
data
=
testJpg
.
buffer
;
const
imageSourceApi
=
image
.
createImageSource
(
data
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_043 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
((
err
,
imageInfo
)
=>
{
console
.
info
(
'
TC_043 imageInfo
'
);
expect
(
imageInfo
!=
undefined
).
assertTrue
();
done
();
})
}
})
/**
* @tc.number : TC_043-1
* @tc.name : createImageSource(data) buffer:0
* @tc.desc : 1.setdata
* 2.createImageSource
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_043-1
'
,
0
,
async
function
(
done
)
{
const
data
=
new
ArrayBuffer
(
0
);
const
imageSourceApi
=
image
.
createImageSource
(
data
);
expect
(
imageSourceApi
==
undefined
).
assertTrue
();
console
.
info
(
'
TC_043-1 success
'
);
done
();
})
/**
* @tc.number : TC_044
* @tc.name : release-imagesource-promise-jpg
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_044
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_044 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
().
then
(()
=>
{
console
.
info
(
'
TC_044 success
'
);
expect
(
true
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
info
(
'
TC_044 error
'
);
expect
(
false
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_044 err:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_044-1
* @tc.name : release-imagesource-callback-jpg
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_044-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_044-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
(()
=>
{
console
.
info
(
'
TC_044-1 Success
'
);
expect
(
true
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_044-1 err:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_045
* @tc.name : getImageInfo(callback: AsyncCallback<ImageInfo>)-jpg
* @tc.desc : 1.create imageSource
* 2.imageSourcecall getImageInfo(ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_045
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_045 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
((
err
,
imageInfo
)
=>
{
if
(
err
)
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_045 err:
'
+
err
);
done
();
return
}
if
(
imageInfo
!=
undefined
)
{
console
.
info
(
'
TC_045 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_045 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
expect
(
true
).
assertTrue
();
fileio
.
closeSync
(
fdNumber
);
done
();
}
else
{
console
.
info
(
'
TC_045 failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_045 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_045-1
* @tc.name : getImageInfo(callback: AsyncCallback<ImageInfo>)-bmp
* @tc.desc : 1.create imageSource
* 2.imageSourcecall getImageInfo(ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_045-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_045-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
((
err
,
imageInfo
)
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_045-1 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_045-1 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_045-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_045-2
* @tc.name : getImageInfo(callback: AsyncCallback<ImageInfo>)-png
* @tc.desc : 1.create imageSource
* 2.imageSourcecall getImageInfo(ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_045-2
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_045-2 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
((
err
,
imageInfo
)
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_045-2 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_045-2 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_045-2 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_045-3
* @tc.name : getImageInfo(callback: AsyncCallback<ImageInfo>)-gif
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_045-3
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_045-3 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
((
err
,
imageInfo
)
=>
{
if
(
err
)
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_045-3 error
'
+
err
);
done
();
return
}
if
(
imageInfo
!=
undefined
&&
imageInfo
!=
null
)
{
expect
(
true
).
assertTrue
();
console
.
info
(
'
TC_045-3 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_045-3 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
console
.
info
(
'
TC_045-3 success
'
)
done
();
}
else
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_045-3 failed
'
)
done
();
}
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_045-3 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_046
* @tc.name : getImageInfo(index: number, callback: AsyncCallback<ImageInfo>)-jpg
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_046
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_046 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
,
(
err
,
imageInfo
)
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_046 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_046 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_046 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_046-1
* @tc.name : getImageInfo(index: number, callback: AsyncCallback<ImageInfo>)-bmp
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_046-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_046-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
,
(
err
,
imageInfo
)
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_046-1 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_046-1 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_046-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number: TC_046-2
* @tc.name : getImageInfo(index: number, callback: AsyncCallback<ImageInfo>)-png
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_046-2
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_046-2 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
,
(
err
,
imageInfo
)
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_046-2 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_046-2 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
})
}
}
catch
{
console
.
info
(
'
TC_046-2 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number: TC_046-3
* @tc.name : getImageInfo(index: number, callback: AsyncCallback<ImageInfo>)-gif
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_046-3
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_046-3 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
,
(
err
,
imageInfo
)
=>
{
if
(
err
)
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_046-3 error
'
+
err
);
done
();
return
}
if
(
imageInfo
!=
undefined
&&
imageInfo
!=
null
)
{
expect
(
true
).
assertTrue
();
console
.
info
(
'
TC_046-3 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_046-3 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
console
.
info
(
'
TC_046-3 success
'
)
done
();
}
else
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_046-3 failed
'
)
done
();
}
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_046-3 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number: TC_046-4
* @tc.name : getImageInfo(index: number, callback: AsyncCallback<ImageInfo>)-gif(frame:1)-index:1
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_046-4
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_046-4 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
1
,
(
err
,
imageInfo
)
=>
{
if
(
imageInfo
==
undefined
)
{
expect
(
true
).
assertTrue
();
done
();
}
else
{
expect
(
false
).
assertTrue
();
done
();
}
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_046-4 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number: TC_046-5
* @tc.name : getImageInfo(index: number, callback: AsyncCallback<ImageInfo>)-gif-index:-1
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_046-5
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_046-5 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
-
1
,
(
err
,
imageInfo
)
=>
{
expect
(
imageInfo
==
undefined
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_046-5 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_047
* @tc.name : getImageInfo(index?: number): Promise<ImageInfo>-jpg
* @tc.desc : 1.create imagesource
* 2.call getImageInfo(index)
* 3.callbackcall ,return imageinfo
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_047
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_047 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
)
.
then
(
imageInfo
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_047 imageInfo
'
);
console
.
info
(
'
imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_047 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_047 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_047-1
* @tc.name : getImageInfo(index?: number): Promise<ImageInfo>-bmp
* @tc.desc : 1.create imagesource
* 2.call getImageInfo(index)
* 3.callbackcall ,return imageinfo
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_047-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_047-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
)
.
then
(
imageInfo
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_047-1 imageInfo
'
);
console
.
info
(
'
imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_047-1 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_047-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_047-2
* @tc.name : getImageInfo(index?: number): Promise<ImageInfo>-png
* @tc.desc : 1.create imagesource
* 2.call getImageInfo(index)
* 3.callbackcall ,return imageinfo
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_047-2
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_047-2 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
)
.
then
(
imageInfo
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_047-2 imageInfo
'
);
console
.
info
(
'
imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_047-2 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_047-2 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_047-3
* @tc.name : getImageInfo(index?: number): Promise<ImageInfo>-gif
* @tc.desc : 1.create imagesource
* 2.call getImageInfo(index)
* 3.callbackcall ,return imageinfo
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_047-3
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_047-3 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
)
.
then
(
imageInfo
=>
{
if
(
imageInfo
!=
undefined
&&
imageInfo
!=
null
)
{
expect
(
true
).
assertTrue
();
console
.
info
(
'
TC_047-3 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_047-3 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
}
else
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_047-3 failed
'
);
done
();
}
}).
catch
(
error
=>
{
console
.
log
(
'
TC_047-3 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_047-3 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number: TC_047-4
* @tc.name : getImageInfo(index?: number): Promise<ImageInfo>-gif(frame:1)-index:1
* @tc.desc : 1.create imagesource
* 2.call getImageInfo(index=1)
* 3.callback return imageinfo undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_047-4
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_047-4 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
1
)
.
then
(()
=>
{
console
.
log
(
'
TC_047-4 failed
'
);
expect
().
assertFail
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_047-4 success
'
);
expect
(
true
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_047-4 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_047-5
* @tc.name : getImageInfo(index?: number): Promise<ImageInfo>-gif-index:-1
* @tc.desc : 1.create imagesource
* 2.call getImageInfo(index=-1)
* 3.callback return imageinfo undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_047-5
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_047-5 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
-
1
)
.
then
(()
=>
{
console
.
log
(
'
TC_047-5 failed
'
);
expect
().
assertFail
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_047-5 success
'
);
expect
(
true
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_047-5 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_050-14
* @tc.name : createPixelMap-promise-jpg
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_050-14
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_050-14 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
().
then
(
pixelmap
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_050-14 success
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_050-14 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_050-14 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_050-15
* @tc.name : createPixelMap-callback-jpg
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return null
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_050-15
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_050-15 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
((
err
,
pixelmap
)
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_050-15 success
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_050-15 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_053
* @tc.name : createIncrementalSource-updateData-png
* @tc.desc : 1.create imagesource
* 2.update data
* 3.create pixelmap
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_053
'
,
0
,
async
function
(
done
)
{
try
{
let
testimagebuffer
=
testPng
;
console
.
info
(
'
TC_053 0003
'
+
testimagebuffer
.
length
);
let
bufferSize
=
testimagebuffer
.
length
;
let
offset
=
0
;
const
incSouce
=
image
.
createIncrementalSource
(
new
ArrayBuffer
(
1
));
let
ret
;
let
isFinished
=
false
;
while
(
offset
<
testimagebuffer
.
length
)
{
console
.
info
(
'
TC_053 0006
'
+
testimagebuffer
.
length
);
var
oneStep
=
testimagebuffer
.
slice
(
offset
,
offset
+
bufferSize
);
console
.
info
(
'
TC_053 0007
'
+
oneStep
.
length
);
if
(
oneStep
.
length
<
bufferSize
)
{
isFinished
=
true
;
}
ret
=
await
incSouce
.
updateData
(
oneStep
,
isFinished
,
0
,
oneStep
.
length
);
if
(
!
ret
)
{
console
.
info
(
'
TC_053 updateData failed
'
);
expect
(
ret
).
assertTrue
();
break
;
}
offset
=
offset
+
oneStep
.
length
;
console
.
info
(
'
TC_053 0011
'
+
offset
);
}
if
(
ret
)
{
console
.
info
(
'
TC_053 updateData success
'
);
let
decodingOptions
=
{
sampleSize
:
1
};
incSouce
.
createPixelMap
(
decodingOptions
,
(
err
,
pixelmap
)
=>
{
console
.
info
(
'
TC_053 0014
'
+
pixelmap
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
})
}
else
{
done
();
}
}
catch
(
error
)
{
console
.
info
(
'
TC_053 updateData failed
'
+
error
);
}
})
/**
* @tc.number : TC_053-1
* @tc.name : createIncrementalSource-updateData-jpg
* @tc.desc : 1.create imagesource
* 2.update data
* 3.create pixelmap
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_053-1
'
,
0
,
async
function
(
done
)
{
try
{
let
testimagebuffer
=
testJpg
;
console
.
info
(
'
TC_053-1 0003
'
+
testimagebuffer
.
length
);
let
bufferSize
=
testimagebuffer
.
length
;
let
offset
=
0
;
const
incSouce
=
image
.
createIncrementalSource
(
new
ArrayBuffer
(
1
));
let
isFinished
=
false
;
let
ret
;
while
(
offset
<
testimagebuffer
.
length
)
{
console
.
info
(
'
TC_053-1 0006
'
+
testimagebuffer
.
length
);
var
oneStep
=
testimagebuffer
.
slice
(
offset
,
offset
+
bufferSize
);
console
.
info
(
'
TC_053-1 0007
'
+
oneStep
.
length
);
if
(
oneStep
.
length
<
bufferSize
)
{
isFinished
=
true
;
}
ret
=
await
incSouce
.
updateData
(
oneStep
,
isFinished
,
0
,
oneStep
.
length
);
if
(
!
ret
)
{
console
.
info
(
'
TC_053-1 updateData failed
'
);
expect
(
ret
).
assertTrue
();
break
;
}
offset
=
offset
+
oneStep
.
length
;
console
.
info
(
'
TC_053-1 0011
'
+
offset
);
}
if
(
ret
)
{
console
.
info
(
'
TC_053-1 updateData success
'
);
let
decodingOptions
=
{
sampleSize
:
1
};
incSouce
.
createPixelMap
(
decodingOptions
,
(
err
,
pixelmap
)
=>
{
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
})
}
else
{
done
();
}
}
catch
(
error
)
{
console
.
info
(
'
TC_053-1 updateData failed
'
+
error
);
}
})
/**
* @tc.number : TC_064
* @tc.name : release ImageSource - promise - png
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_064
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_064 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
().
then
(()
=>
{
console
.
info
(
'
TC_064 success
'
);
expect
(
true
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_064 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_064 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_064-1
* @tc.name : release ImageSource - callback - png
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_064-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_064-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
(
async
(
err
)
=>
{
if
(
err
)
{
console
.
info
(
'
TC_064-1 err:
'
+
err
);
expect
(
false
).
assertTrue
();
done
();
return
}
console
.
info
(
'
TC_064-1 Success
'
);
expect
(
true
).
assertTrue
();
expect
(
true
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_064-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_065
* @tc.name : release ImageSource - promise - bmp
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_065
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_065 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
().
then
(()
=>
{
console
.
info
(
'
TC_065 success
'
);
expect
(
true
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_065 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_065 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_065-1
* @tc.name : release ImageSource - callback - bmp
* @tc.desc : 1.create ImageSource
* 2.create SourceStream
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_065-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_065-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
(
async
()
=>
{
console
.
info
(
'
TC_065-1 Success
'
);
expect
(
true
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_065-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_066
* @tc.name : release ImageSource - promise - gif
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_066
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_066 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
().
then
(()
=>
{
console
.
info
(
'
TC_066 success
'
);
expect
(
true
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_066 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_066 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_066-1
* @tc.name : release ImageSource - callback - gif
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_066-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_066-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
(()
=>
{
console
.
info
(
'
TC_066-1 Success
'
);
expect
(
true
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_066-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_067-14
* @tc.name : createPixelMap-promise-gif
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_067-14
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathMovingGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_067-14 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
().
then
(
pixelmap
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_067-14 success
'
);
expect
(
pixelmap
!==
undefined
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_067-14 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_067-14 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_067-15
* @tc.name : createPixelMap-pcallback-gif
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return null
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_067-15
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathMovingGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_067-15 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
((
err
,
pixelmap
)
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_067-15 success
'
);
expect
(
pixelmap
!==
undefined
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_067-15 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_068-14
* @tc.name : createPixelMap-promise-bmp
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_068-14
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_068-14 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
().
then
(
pixelmap
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_068-14 success
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_068-14 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_068-14 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_068-15
* @tc.name : createPixelMap-callback-bmp
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_068-15
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_068-15 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
((
err
,
pixelmap
)
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_068-15 success
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_068-15 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_163-14
* @tc.name : createPixelMap-promise-png
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_163-14
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_163-14 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
().
then
(
pixelmap
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_163-14 success
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_163-14 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_163-14 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_163-15
* @tc.name : createPixelMap-callback-png
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return null
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_163-15
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_163-15 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
((
err
,
pixelmap
)
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_163-15 success
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_163-15 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_164
* @tc.name : imagesource supportedFormats
* @tc.desc : 1.create imagesource
* 2.call supportedFormats
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_164
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_164 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
expect
(
imageSourceApi
.
supportedFormats
!=
undefined
).
assertTrue
();
console
.
info
(
imageSourceApi
.
supportedFormats
);
console
.
info
(
'
TC_164 success
'
);
done
();
}
}
catch
(
error
)
{
console
.
info
(
'
TC_164 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_166
* @tc.name : imagepacker supportedFormats
* @tc.desc : 1.create imagepacker
* 2.call supportedFormats
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_166
'
,
0
,
async
function
(
done
)
{
const
imagePackerApi
=
image
.
createImagePacker
();
if
(
imagePackerApi
==
undefined
)
{
console
.
info
(
'
TC_166 create image packer failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
expect
(
imagePackerApi
.
supportedFormats
!=
undefined
).
assertTrue
();
console
.
info
(
imagePackerApi
.
supportedFormats
);
console
.
info
(
'
TC_166 success
'
);
done
();
}
})
/**
* @tc.number : TC_168
* @tc.name : isEditable
* @tc.desc : 1.create pixelmap
* 2.call isEditable
* 3.return true
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_168
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
3
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
,
(
error
,
pixelmap
)
=>
{
if
(
pixelmap
==
undefined
)
{
console
.
info
(
'
TC_168 create pixelmap failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
expect
(
pixelmap
.
isEditable
==
true
).
assertTrue
();
console
.
info
(
'
TC_168 success
'
);
done
();
}
})
})
})
\ No newline at end of file
/*
* Copyright (C) 2021 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
image
from
'
@ohos.multimedia.image
'
import
fileio
from
'
@ohos.fileio
'
import
{
describe
,
beforeAll
,
beforeEach
,
afterEach
,
afterAll
,
it
,
expect
}
from
'
@ohos/hypium
'
import
{
testPng
,
testJpg
}
from
'
./testImg
'
import
abilityAccessCtrl
from
'
@ohos.abilityAccessCtrl
'
import
bundle
from
'
@ohos.bundle
'
export
default
function
Image_test
()
{
describe
(
'
Image_test
'
,
function
()
{
var
pathJpg
=
'
/data/storage/el2/base/files/test.jpg
'
;
var
pathBmp
=
'
/data/storage/el2/base/files/test.bmp
'
;
var
pathGif
=
'
/data/storage/el2/base/files/test.gif
'
;
var
pathPng
=
'
/data/storage/el2/base/files/test.png
'
;
var
pathMovingGif
=
'
/data/storage/el2/base/files/moving_test.gif
'
;
let
globalpixelmap
;
beforeAll
(
async
function
()
{
await
applyPermission
();
console
.
info
(
'
beforeAll case
'
);
})
beforeEach
(
function
()
{
console
.
info
(
'
beforeEach case
'
);
})
afterEach
(
async
function
()
{
if
(
globalpixelmap
!=
undefined
)
{
console
.
info
(
'
globalpixelmap release start
'
);
try
{
await
globalpixelmap
.
release
();
}
catch
(
error
)
{
console
.
info
(
'
globalpixelmap release fail
'
);
}
}
console
.
info
(
'
afterEach case
'
);
})
afterAll
(
async
function
()
{
console
.
info
(
'
afterAll case
'
);
})
async
function
applyPermission
()
{
let
appInfo
=
await
bundle
.
getApplicationInfo
(
'
ohos.acts.multimedia.image
'
,
0
,
100
);
let
atManager
=
abilityAccessCtrl
.
createAtManager
();
if
(
atManager
!=
null
)
{
let
tokenID
=
appInfo
.
accessTokenId
;
console
.
info
(
'
[permission]case accessTokenId is
'
+
tokenID
);
let
permissionName1
=
'
ohos.permission.MEDIA_LOCATION
'
;
let
permissionName2
=
'
ohos.permission.READ_MEDIA
'
;
let
permissionName3
=
'
ohos.permission.WRITE_MEDIA
'
;
await
atManager
.
grantUserGrantedPermission
(
tokenID
,
permissionName1
).
then
((
result
)
=>
{
console
.
info
(
'
[permission]case grantUserGrantedPermission success:
'
+
result
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
[permission]case grantUserGrantedPermission failed:
'
+
err
);
});
await
atManager
.
grantUserGrantedPermission
(
tokenID
,
permissionName2
).
then
((
result
)
=>
{
console
.
info
(
'
[permission]case grantUserGrantedPermission success:
'
+
result
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
[permission]case grantUserGrantedPermission failed:
'
+
err
);
});
await
atManager
.
grantUserGrantedPermission
(
tokenID
,
permissionName3
).
then
((
result
)
=>
{
console
.
info
(
'
[permission]case grantUserGrantedPermission success:
'
+
result
);
}).
catch
((
err
)
=>
{
console
.
info
(
'
[permission]case grantUserGrantedPermission failed:
'
+
err
);
});
}
else
{
console
.
info
(
'
[permission]case apply permission failed,createAtManager failed
'
);
}
}
/**
* @tc.number : TC_041
* @tc.name : createImageSource(uri)-jpg
* @tc.desc : 1.set uri
* 2.call createImageSource(uri)
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_041
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
expect
(
imageSourceApi
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_041 success
'
);
fileio
.
closeSync
(
fdNumber
);
done
();
}
catch
(
error
)
{
console
.
info
(
'
TC_041 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_041-1
* @tc.name : createImageSource(uri)-bmp
* @tc.desc : 1.seturi
* 2.call createImageSource(uri)
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_041-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
expect
(
imageSourceApi
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_041-1 success
'
);
done
();
}
catch
(
error
)
{
console
.
info
(
'
TC_041-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_041-2
* @tc.name : createImageSource(uri)-gif
* @tc.desc : 1.seturi
* 2.call createImageSource(uri)
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_041-2
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
expect
(
imageSourceApi
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_041-2 success
'
);
done
();
}
catch
(
error
)
{
console
.
info
(
'
TC_041-2 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_041-3
* @tc.name : createImageSource(uri)-png
* @tc.desc : 1.seturi
* 2.call createImageSource(uri)
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_041-3
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
expect
(
imageSourceApi
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_041-3 success
'
);
done
();
}
catch
(
error
)
{
console
.
info
(
'
TC_041-3 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_041-4
* @tc.name : createImageSource(uri)-wrong suffix file
* @tc.desc : 1.call createImageSource(uri)
* 2.Incoming wrong suffix file
* 3.imagesource null
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_041-4
'
,
0
,
async
function
(
done
)
{
const
imageSourceApi
=
image
.
createImageSource
(
'
file:///data/local/tmp/test.123
'
);
expect
(
imageSourceApi
==
undefined
).
assertTrue
();
console
.
info
(
'
TC_041-4 success
'
);
done
();
})
/**
* @tc.number : TC_041-5
* @tc.name : createImageSource(uri)-wrong uri
* @tc.desc : 1.call createImageSource(uri)
* 2.set wrong uri
* 3.return null
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_041-5
'
,
0
,
async
function
(
done
)
{
try
{
const
imageSourceApi
=
image
.
createImageSource
(
'
file:///multimedia/test.jpg
'
);
expect
(
imageSourceApi
==
undefined
).
assertTrue
();
console
.
info
(
'
TC_041-5 success
'
);
done
();
}
catch
(
error
)
{
console
.
info
(
'
TC_041-5 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_042
* @tc.name : createImageSource(fd)
* @tc.desc : 1.call createImageSource
* 2.set fd
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_042
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_042 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
((
err
,
imageInfo
)
=>
{
if
(
err
)
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_042 err:
'
+
err
);
done
();
return
}
if
(
imageInfo
!=
undefined
)
{
expect
(
true
).
assertTrue
();
fileio
.
closeSync
(
fdNumber
);
done
();
}
else
{
console
.
info
(
'
TC_042 failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_042 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_042-1
* @tc.name : createImageSource(fd) fd<0
* @tc.desc : 1.call createImageSource
* 2.set wrong fd
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_042-1
'
,
0
,
async
function
(
done
)
{
const
imageSourceApi
=
image
.
createImageSource
(
-
2
);
expect
(
imageSourceApi
==
undefined
).
assertTrue
();
console
.
info
(
'
TC_042-1 success
'
);
done
();
})
/**
* @tc.number : TC_043
* @tc.name : createImageSource(data)
* @tc.desc : 1.setdata
* 2.createImageSource
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_043
'
,
0
,
async
function
(
done
)
{
const
data
=
testJpg
.
buffer
;
const
imageSourceApi
=
image
.
createImageSource
(
data
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_043 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
((
err
,
imageInfo
)
=>
{
console
.
info
(
'
TC_043 imageInfo
'
);
expect
(
imageInfo
!=
undefined
).
assertTrue
();
done
();
})
}
})
/**
* @tc.number : TC_043-1
* @tc.name : createImageSource(data) buffer:0
* @tc.desc : 1.setdata
* 2.createImageSource
* 3.return imagesource
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_043-1
'
,
0
,
async
function
(
done
)
{
const
data
=
new
ArrayBuffer
(
0
);
const
imageSourceApi
=
image
.
createImageSource
(
data
);
expect
(
imageSourceApi
==
undefined
).
assertTrue
();
console
.
info
(
'
TC_043-1 success
'
);
done
();
})
/**
* @tc.number : TC_044
* @tc.name : release-imagesource-promise-jpg
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_044
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_044 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
().
then
(()
=>
{
console
.
info
(
'
TC_044 success
'
);
expect
(
true
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
info
(
'
TC_044 error
'
);
expect
(
false
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_044 err:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_044-1
* @tc.name : release-imagesource-callback-jpg
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_044-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_044-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
(()
=>
{
console
.
info
(
'
TC_044-1 Success
'
);
expect
(
true
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_044-1 err:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_045
* @tc.name : getImageInfo(callback: AsyncCallback<ImageInfo>)-jpg
* @tc.desc : 1.create imageSource
* 2.imageSourcecall getImageInfo(ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_045
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_045 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
((
err
,
imageInfo
)
=>
{
if
(
err
)
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_045 err:
'
+
err
);
done
();
return
}
if
(
imageInfo
!=
undefined
)
{
console
.
info
(
'
TC_045 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_045 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
expect
(
true
).
assertTrue
();
fileio
.
closeSync
(
fdNumber
);
done
();
}
else
{
console
.
info
(
'
TC_045 failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_045 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_045-1
* @tc.name : getImageInfo(callback: AsyncCallback<ImageInfo>)-bmp
* @tc.desc : 1.create imageSource
* 2.imageSourcecall getImageInfo(ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_045-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_045-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
((
err
,
imageInfo
)
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_045-1 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_045-1 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_045-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_045-2
* @tc.name : getImageInfo(callback: AsyncCallback<ImageInfo>)-png
* @tc.desc : 1.create imageSource
* 2.imageSourcecall getImageInfo(ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_045-2
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_045-2 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
((
err
,
imageInfo
)
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_045-2 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_045-2 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_045-2 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_045-3
* @tc.name : getImageInfo(callback: AsyncCallback<ImageInfo>)-gif
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_045-3
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_045-3 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
((
err
,
imageInfo
)
=>
{
if
(
err
)
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_045-3 error
'
+
err
);
done
();
return
}
if
(
imageInfo
!=
undefined
&&
imageInfo
!=
null
)
{
expect
(
true
).
assertTrue
();
console
.
info
(
'
TC_045-3 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_045-3 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
console
.
info
(
'
TC_045-3 success
'
)
done
();
}
else
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_045-3 failed
'
)
done
();
}
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_045-3 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_046
* @tc.name : getImageInfo(index: number, callback: AsyncCallback<ImageInfo>)-jpg
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_046
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_046 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
,
(
err
,
imageInfo
)
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_046 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_046 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_046 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_046-1
* @tc.name : getImageInfo(index: number, callback: AsyncCallback<ImageInfo>)-bmp
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_046-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_046-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
,
(
err
,
imageInfo
)
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_046-1 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_046-1 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_046-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number: TC_046-2
* @tc.name : getImageInfo(index: number, callback: AsyncCallback<ImageInfo>)-png
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_046-2
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_046-2 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
,
(
err
,
imageInfo
)
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_046-2 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_046-2 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
})
}
}
catch
{
console
.
info
(
'
TC_046-2 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number: TC_046-3
* @tc.name : getImageInfo(index: number, callback: AsyncCallback<ImageInfo>)-gif
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_046-3
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_046-3 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
,
(
err
,
imageInfo
)
=>
{
if
(
err
)
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_046-3 error
'
+
err
);
done
();
return
}
if
(
imageInfo
!=
undefined
&&
imageInfo
!=
null
)
{
expect
(
true
).
assertTrue
();
console
.
info
(
'
TC_046-3 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_046-3 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
console
.
info
(
'
TC_046-3 success
'
)
done
();
}
else
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_046-3 failed
'
)
done
();
}
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_046-3 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number: TC_046-4
* @tc.name : getImageInfo(index: number, callback: AsyncCallback<ImageInfo>)-gif(frame:1)-index:1
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_046-4
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_046-4 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
1
,
(
err
,
imageInfo
)
=>
{
if
(
imageInfo
==
undefined
)
{
expect
(
true
).
assertTrue
();
done
();
}
else
{
expect
(
false
).
assertTrue
();
done
();
}
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_046-4 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number: TC_046-5
* @tc.name : getImageInfo(index: number, callback: AsyncCallback<ImageInfo>)-gif-index:-1
* @tc.desc : 1.create ImageInfo
* 2.call getImageInfo(index, ImageInfo)
* 3.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_046-5
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_046-5 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
-
1
,
(
err
,
imageInfo
)
=>
{
expect
(
imageInfo
==
undefined
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_046-5 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_047
* @tc.name : getImageInfo(index?: number): Promise<ImageInfo>-jpg
* @tc.desc : 1.create imagesource
* 2.call getImageInfo(index)
* 3.callbackcall ,return imageinfo
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_047
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_047 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
)
.
then
(
imageInfo
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_047 imageInfo
'
);
console
.
info
(
'
imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_047 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_047 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_047-1
* @tc.name : getImageInfo(index?: number): Promise<ImageInfo>-bmp
* @tc.desc : 1.create imagesource
* 2.call getImageInfo(index)
* 3.callbackcall ,return imageinfo
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_047-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_047-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
)
.
then
(
imageInfo
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_047-1 imageInfo
'
);
console
.
info
(
'
imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_047-1 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_047-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_047-2
* @tc.name : getImageInfo(index?: number): Promise<ImageInfo>-png
* @tc.desc : 1.create imagesource
* 2.call getImageInfo(index)
* 3.callbackcall ,return imageinfo
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_047-2
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_047-2 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
)
.
then
(
imageInfo
=>
{
expect
(
imageInfo
!=
undefined
).
assertTrue
();
console
.
info
(
'
TC_047-2 imageInfo
'
);
console
.
info
(
'
imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_047-2 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_047-2 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_047-3
* @tc.name : getImageInfo(index?: number): Promise<ImageInfo>-gif
* @tc.desc : 1.create imagesource
* 2.call getImageInfo(index)
* 3.callbackcall ,return imageinfo
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_047-3
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_047-3 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
0
)
.
then
(
imageInfo
=>
{
if
(
imageInfo
!=
undefined
&&
imageInfo
!=
null
)
{
expect
(
true
).
assertTrue
();
console
.
info
(
'
TC_047-3 imageInfo.size.height:
'
+
imageInfo
.
size
.
height
);
console
.
info
(
'
TC_047-3 imageInfo.size.width:
'
+
imageInfo
.
size
.
width
);
done
();
}
else
{
expect
(
false
).
assertTrue
();
console
.
info
(
'
TC_047-3 failed
'
);
done
();
}
}).
catch
(
error
=>
{
console
.
log
(
'
TC_047-3 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_047-3 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number: TC_047-4
* @tc.name : getImageInfo(index?: number): Promise<ImageInfo>-gif(frame:1)-index:1
* @tc.desc : 1.create imagesource
* 2.call getImageInfo(index=1)
* 3.callback return imageinfo undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_047-4
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_047-4 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
1
)
.
then
(()
=>
{
console
.
log
(
'
TC_047-4 failed
'
);
expect
().
assertFail
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_047-4 success
'
);
expect
(
true
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_047-4 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_047-5
* @tc.name : getImageInfo(index?: number): Promise<ImageInfo>-gif-index:-1
* @tc.desc : 1.create imagesource
* 2.call getImageInfo(index=-1)
* 3.callback return imageinfo undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_047-5
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_047-5 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
getImageInfo
(
-
1
)
.
then
(()
=>
{
console
.
log
(
'
TC_047-5 failed
'
);
expect
().
assertFail
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_047-5 success
'
);
expect
(
true
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_047-5 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_050-14
* @tc.name : createPixelMap-promise-jpg
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_050-14
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_050-14 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
().
then
(
pixelmap
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_050-14 success
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_050-14 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_050-14 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_050-15
* @tc.name : createPixelMap-callback-jpg
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return null
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_050-15
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_050-15 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
((
err
,
pixelmap
)
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_050-15 success
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_050-15 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_053
* @tc.name : createIncrementalSource-updateData-png
* @tc.desc : 1.create imagesource
* 2.update data
* 3.create pixelmap
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_053
'
,
0
,
async
function
(
done
)
{
try
{
let
testimagebuffer
=
testPng
;
console
.
info
(
'
TC_053 0003
'
+
testimagebuffer
.
length
);
let
bufferSize
=
testimagebuffer
.
length
;
let
offset
=
0
;
const
incSouce
=
image
.
createIncrementalSource
(
new
ArrayBuffer
(
1
));
let
ret
;
let
isFinished
=
false
;
while
(
offset
<
testimagebuffer
.
length
)
{
console
.
info
(
'
TC_053 0006
'
+
testimagebuffer
.
length
);
var
oneStep
=
testimagebuffer
.
slice
(
offset
,
offset
+
bufferSize
);
console
.
info
(
'
TC_053 0007
'
+
oneStep
.
length
);
if
(
oneStep
.
length
<
bufferSize
)
{
isFinished
=
true
;
}
ret
=
await
incSouce
.
updateData
(
oneStep
,
isFinished
,
0
,
oneStep
.
length
);
if
(
!
ret
)
{
console
.
info
(
'
TC_053 updateData failed
'
);
expect
(
ret
).
assertTrue
();
break
;
}
offset
=
offset
+
oneStep
.
length
;
console
.
info
(
'
TC_053 0011
'
+
offset
);
}
if
(
ret
)
{
console
.
info
(
'
TC_053 updateData success
'
);
let
decodingOptions
=
{
sampleSize
:
1
};
incSouce
.
createPixelMap
(
decodingOptions
,
(
err
,
pixelmap
)
=>
{
console
.
info
(
'
TC_053 0014
'
+
pixelmap
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
})
}
else
{
done
();
}
}
catch
(
error
)
{
console
.
info
(
'
TC_053 updateData failed
'
+
error
);
}
})
/**
* @tc.number : TC_053-1
* @tc.name : createIncrementalSource-updateData-jpg
* @tc.desc : 1.create imagesource
* 2.update data
* 3.create pixelmap
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_053-1
'
,
0
,
async
function
(
done
)
{
try
{
let
testimagebuffer
=
testJpg
;
console
.
info
(
'
TC_053-1 0003
'
+
testimagebuffer
.
length
);
let
bufferSize
=
testimagebuffer
.
length
;
let
offset
=
0
;
const
incSouce
=
image
.
createIncrementalSource
(
new
ArrayBuffer
(
1
));
let
isFinished
=
false
;
let
ret
;
while
(
offset
<
testimagebuffer
.
length
)
{
console
.
info
(
'
TC_053-1 0006
'
+
testimagebuffer
.
length
);
var
oneStep
=
testimagebuffer
.
slice
(
offset
,
offset
+
bufferSize
);
console
.
info
(
'
TC_053-1 0007
'
+
oneStep
.
length
);
if
(
oneStep
.
length
<
bufferSize
)
{
isFinished
=
true
;
}
ret
=
await
incSouce
.
updateData
(
oneStep
,
isFinished
,
0
,
oneStep
.
length
);
if
(
!
ret
)
{
console
.
info
(
'
TC_053-1 updateData failed
'
);
expect
(
ret
).
assertTrue
();
break
;
}
offset
=
offset
+
oneStep
.
length
;
console
.
info
(
'
TC_053-1 0011
'
+
offset
);
}
if
(
ret
)
{
console
.
info
(
'
TC_053-1 updateData success
'
);
let
decodingOptions
=
{
sampleSize
:
1
};
incSouce
.
createPixelMap
(
decodingOptions
,
(
err
,
pixelmap
)
=>
{
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
})
}
else
{
done
();
}
}
catch
(
error
)
{
console
.
info
(
'
TC_053-1 updateData failed
'
+
error
);
}
})
/**
* @tc.number : TC_064
* @tc.name : release ImageSource - promise - png
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_064
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_064 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
().
then
(()
=>
{
console
.
info
(
'
TC_064 success
'
);
expect
(
true
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_064 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_064 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_064-1
* @tc.name : release ImageSource - callback - png
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_064-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_064-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
(
async
(
err
)
=>
{
if
(
err
)
{
console
.
info
(
'
TC_064-1 err:
'
+
err
);
expect
(
false
).
assertTrue
();
done
();
return
}
console
.
info
(
'
TC_064-1 Success
'
);
expect
(
true
).
assertTrue
();
expect
(
true
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_064-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_065
* @tc.name : release ImageSource - promise - bmp
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_065
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_065 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
().
then
(()
=>
{
console
.
info
(
'
TC_065 success
'
);
expect
(
true
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_065 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_065 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_065-1
* @tc.name : release ImageSource - callback - bmp
* @tc.desc : 1.create ImageSource
* 2.create SourceStream
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_065-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_065-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
(
async
()
=>
{
console
.
info
(
'
TC_065-1 Success
'
);
expect
(
true
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_065-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_066
* @tc.name : release ImageSource - promise - gif
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_066
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_066 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
().
then
(()
=>
{
console
.
info
(
'
TC_066 success
'
);
expect
(
true
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_066 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_066 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_066-1
* @tc.name : release ImageSource - callback - gif
* @tc.desc : 1.create ImageSource
* 2.call release()
* 3.return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_066-1
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_066-1 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
release
(()
=>
{
console
.
info
(
'
TC_066-1 Success
'
);
expect
(
true
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_066-1 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_067-14
* @tc.name : createPixelMap-promise-gif
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_067-14
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathMovingGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_067-14 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
().
then
(
pixelmap
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_067-14 success
'
);
expect
(
pixelmap
!==
undefined
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_067-14 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_067-14 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_067-15
* @tc.name : createPixelMap-pcallback-gif
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return null
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_067-15
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathMovingGif
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_067-15 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
((
err
,
pixelmap
)
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_067-15 success
'
);
expect
(
pixelmap
!==
undefined
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_067-15 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_068-14
* @tc.name : createPixelMap-promise-bmp
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_068-14
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_068-14 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
().
then
(
pixelmap
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_068-14 success
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_068-14 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_068-14 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_068-15
* @tc.name : createPixelMap-callback-bmp
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_068-15
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathBmp
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_068-15 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
((
err
,
pixelmap
)
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_068-15 success
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_068-15 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_163-14
* @tc.name : createPixelMap-promise-png
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return undefined
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_163-14
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_163-14 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
().
then
(
pixelmap
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_163-14 success
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
}).
catch
(
error
=>
{
console
.
log
(
'
TC_163-14 error:
'
+
error
);
expect
().
assertFail
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_163-14 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_163-15
* @tc.name : createPixelMap-callback-png
* @tc.desc : 1.create imagesource
* 2.set index and DecodeOptions
* 3.create PixelMap
* 4.callback return null
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_163-15
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathPng
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_163-15 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
imageSourceApi
.
createPixelMap
((
err
,
pixelmap
)
=>
{
globalpixelmap
=
pixelmap
;
console
.
info
(
'
TC_163-15 success
'
);
expect
(
pixelmap
!=
undefined
).
assertTrue
();
done
();
})
}
}
catch
(
error
)
{
console
.
info
(
'
TC_163-15 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_164
* @tc.name : imagesource supportedFormats
* @tc.desc : 1.create imagesource
* 2.call supportedFormats
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_164
'
,
0
,
async
function
(
done
)
{
try
{
let
fdNumber
=
fileio
.
openSync
(
pathJpg
);
const
imageSourceApi
=
image
.
createImageSource
(
fdNumber
);
if
(
imageSourceApi
==
undefined
)
{
console
.
info
(
'
TC_164 create image source failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
expect
(
imageSourceApi
.
supportedFormats
!=
undefined
).
assertTrue
();
console
.
info
(
imageSourceApi
.
supportedFormats
);
console
.
info
(
'
TC_164 success
'
);
done
();
}
}
catch
(
error
)
{
console
.
info
(
'
TC_164 error:
'
+
error
);
expect
(
false
).
assertTrue
();
done
();
}
})
/**
* @tc.number : TC_166
* @tc.name : imagepacker supportedFormats
* @tc.desc : 1.create imagepacker
* 2.call supportedFormats
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 0
*/
it
(
'
TC_166
'
,
0
,
async
function
(
done
)
{
const
imagePackerApi
=
image
.
createImagePacker
();
if
(
imagePackerApi
==
undefined
)
{
console
.
info
(
'
TC_166 create image packer failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
expect
(
imagePackerApi
.
supportedFormats
!=
undefined
).
assertTrue
();
console
.
info
(
imagePackerApi
.
supportedFormats
);
console
.
info
(
'
TC_166 success
'
);
done
();
}
})
/**
* @tc.number : TC_168
* @tc.name : isEditable
* @tc.desc : 1.create pixelmap
* 2.call isEditable
* 3.return true
* @tc.size : MEDIUM
* @tc.type : Functional
* @tc.level : Level 1
*/
it
(
'
TC_168
'
,
0
,
async
function
(
done
)
{
const
Color
=
new
ArrayBuffer
(
96
);
let
opts
=
{
editable
:
true
,
pixelFormat
:
3
,
size
:
{
height
:
4
,
width
:
6
}
}
image
.
createPixelMap
(
Color
,
opts
,
(
error
,
pixelmap
)
=>
{
if
(
pixelmap
==
undefined
)
{
console
.
info
(
'
TC_168 create pixelmap failed
'
);
expect
(
false
).
assertTrue
();
done
();
}
else
{
expect
(
pixelmap
.
isEditable
==
true
).
assertTrue
();
console
.
info
(
'
TC_168 success
'
);
done
();
}
})
})
})}
multimedia/image/image_js_standard/image/src/main/js/test/testImg.js
浏览文件 @
36a866e6
/*
* Copyright (C) 2022 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.
*/
let
testPng
=
new
Uint8Array
([
137
,
80
,
78
,
71
,
13
,
10
,
26
,
10
,
0
,
0
,
0
,
13
,
73
,
72
,
68
,
82
,
0
,
0
,
0
,
100
,
0
,
0
,
0
,
100
,
8
,
6
,
0
,
0
,
0
,
112
,
226
,
149
,
84
,
0
,
0
,
32
,
0
,
73
,
68
,
65
,
84
,
120
,
1
,
212
,
193
,
123
,
176
,
231
,
247
,
93
,
223
,
247
,
231
,
251
,
253
,
249
,
254
,
126
,
231
,
156
,
61
,
123
,
191
,
105
,
37
,
173
,
180
,
186
,
95
,
173
,
187
,
228
,
43
,
166
,
182
,
133
,
109
,
44
,
108
,
160
,
6
,
154
,
105
,
157
,
116
,
104
,
50
,
64
,
72
,
155
,
41
,
195
,
64
,
167
,
13
,
80
,
218
,
73
,
166
,
76
,
254
,
104
,
254
,
104
,
167
,
51
,
253
,
39
,
51
,
45
,
52
,
77
,
161
,
36
,
29
,
19
,
2
,
24
,
98
,
140
,
28
,
91
,
24
,
91
,
150
,
44
,
164
,
213
,
93
,
187
,
146
,
86
,
123
,
95
,
237
,
253
,
156
,
243
,
251
,
253
,
190
,
223
,
247
,
235
,
213
,
253
,
237
,
34
,
220
,
106
,
86
,
182
,
105
,
160
,
99
,
30
,
143
,
224
,
175
,
177
,
31
,
251
,
145
,
31
,
102
,
101
,
109
,
133
,
133
,
241
,
194
,
174
,
42
,
253
,
224
,
108
,
54
,
123
,
100
,
24
,
250
,
235
,
135
,
161
,
178
,
239
,
251
,
67
,
17
,
241
,
149
,
42
,
253
,
238
,
100
,
50
,
121
,
178
,
117
,
76
,
207
,
31
,
221
,
194
,
243
,
7
,
30
,
229
,
187
,
89
,
240
,
215
,
212
,
15
,
253
,
208
,
167
,
24
,
47
,
108
,
98
,
186
,
118
,
242
,
253
,
165
,
250
,
135
,
150
,
62
,
176
,
178
,
178
,
186
,
208
,
247
,
61
,
146
,
232
,
103
,
61
,
173
,
235
,
4
,
62
,
106
,
243
,
175
,
165
,
250
,
159
,
108
,
61
,
149
,
153
,
126
,
252
,
235
,
79
,
241
,
221
,
42
,
248
,
107
,
232
,
83
,
159
,
252
,
126
,
90
,
27
,
1
,
250
,
158
,
217
,
172
,
255
,
167
,
171
,
107
,
43
,
183
,
204
,
102
,
61
,
179
,
233
,
140
,
201
,
100
,
66
,
149
,
176
,
4
,
1
,
173
,
53
,
70
,
163
,
17
,
173
,
181
,
87
,
128
,
255
,
102
,
54
,
27
,
254
,
143
,
214
,
114
,
248
,
198
,
83
,
79
,
243
,
221
,
168
,
241
,
215
,
208
,
237
,
183
,
221
,
66
,
102
,
94
,
93
,
195
,
240
,
63
,
207
,
102
,
211
,
251
,
214
,
86
,
39
,
172
,
156
,
91
,
101
,
101
,
117
,
194
,
249
,
149
,
53
,
250
,
97
,
96
,
50
,
157
,
113
,
254
,
252
,
10
,
67
,
153
,
201
,
116
,
74
,
149
,
182
,
70
,
196
,
71
,
50
,
242
,
108
,
102
,
62
,
177
,
107
,
231
,
14
,
31
,
57
,
122
,
140
,
239
,
54
,
141
,
191
,
160
,
237
,
91
,
55
,
51
,
30
,
141
,
216
,
182
,
109
,
235
,
120
,
211
,
198
,
13
,
235
,
150
,
214
,
45
,
141
,
186
,
46
,
180
,
113
,
227
,
6
,
175
,
174
,
174
,
241
,
87
,
237
,
83
,
159
,
122
,
132
,
79
,
127
,
252
,
251
,
121
,
97
,
223
,
190
,
191
,
63
,
235
,
251
,
31
,
95
,
91
,
155
,
196
,
233
,
211
,
167
,
89
,
93
,
153
,
176
,
54
,
153
,
48
,
212
,
192
,
80
,
66
,
18
,
85
,
98
,
54
,
155
,
49
,
157
,
78
,
137
,
8
,
76
,
44
,
142
,
70
,
221
,
123
,
35
,
120
,
153
,
244
,
179
,
87
,
238
,
216
,
195
,
145
,
99
,
135
,
248
,
110
,
210
,
241
,
29
,
186
,
239
,
190
,
123
,
233
,
103
,
253
,
226
,
120
,
220
,
30
,
176
,
253
,
48
,
196
,
93
,
147
,
201
,
100
,
199
,
80
,
53
,
93
,
92
,
92
,
124
,
117
,
109
,
109
,
237
,
209
,
141
,
27
,
55
,
254
,
193
,
245
,
215
,
95
,
127
,
124
,
239
,
222
,
189
,
12
,
195
,
192
,
95
,
133
,
8
,
248
,
151
,
127
,
240
,
185
,
235
,
134
,
161
,
255
,
143
,
38
,
147
,
181
,
56
,
123
,
246
,
12
,
179
,
217
,
140
,
201
,
108
,
74
,
169
,
232
,
135
,
129
,
140
,
4
,
155
,
204
,
100
,
174
,
170
,
88
,
93
,
93
,
69
,
18
,
227
,
81
,
183
,
117
,
97
,
60
,
254
,
197
,
136
,
120
,
146
,
54
,
125
,
133
,
239
,
50
,
29
,
223
,
198
,
189
,
247
,
220
,
197
,
179
,
207
,
189
,
196
,
226
,
194
,
232
,
254
,
229
,
117
,
139
,
63
,
11
,
60
,
50
,
244
,
195
,
150
,
217
,
48
,
208
,
186
,
14
,
19
,
100
,
22
,
227
,
241
,
194
,
143
,
75
,
254
,
234
,
139
,
47
,
190
,
248
,
143
,
134
,
97
,
248
,
131
,
204
,
212
,
5
,
252
,
101
,
75
,
155
,
176
,
63
,
58
,
153
,
206
,
110
,
155
,
76
,
166
,
172
,
172
,
174
,
49
,
153
,
206
,
24
,
134
,
1
,
99
,
144
,
113
,
136
,
204
,
196
,
54
,
153
,
201
,
92
,
85
,
49
,
157
,
78
,
89
,
89
,
93
,
163
,
181
,
188
,
167
,
139
,
246
,
31
,
63
,
249
,
141
,
39
,
126
,
249
,
129
,
251
,
31
,
224
,
137
,
39
,
159
,
230
,
187
,
69
,
242
,
45
,
188
,
255
,
125
,
239
,
37
,
91
,
151
,
239
,
125
,
207
,
253
,
63
,
178
,
180
,
180
,
244
,
235
,
227
,
209
,
232
,
51
,
150
,
183
,
204
,
102
,
51
,
214
,
214
,
86
,
89
,
91
,
155
,
176
,
178
,
178
,
198
,
116
,
58
,
163
,
239
,
135
,
113
,
149
,
190
,
39
,
34
,
254
,
151
,
174
,
235
,
62
,
35
,
41
,
248
,
75
,
246
,
233
,
79
,
125
,
146
,
197
,
241
,
186
,
5
,
75
,
223
,
95
,
67
,
181
,
233
,
116
,
202
,
116
,
50
,
101
,
24
,
6
,
108
,
97
,
153
,
214
,
26
,
17
,
193
,
91
,
108
,
51
,
215
,
90
,
35
,
34
,
152
,
205
,
102
,
72
,
34
,
51
,
31
,
121
,
224
,
254
,
7
,
183
,
65
,
240
,
221
,
164
,
227
,
29
,
124
,
240
,
131
,
239
,
103
,
113
,
221
,
152
,
209
,
180
,
251
,
248
,
226
,
120
,
252
,
63
,
88
,
190
,
106
,
101
,
117
,
149
,
181
,
181
,
53
,
86
,
86
,
87
,
153
,
245
,
51
,
250
,
190
,
152
,
78
,
103
,
72
,
98
,
24
,
6
,
134
,
97
,
32
,
34
,
118
,
117
,
93
,
247
,
43
,
85
,
117
,
40
,
51
,
63
,
95
,
85
,
252
,
165
,
137
,
160
,
52
,
236
,
138
,
200
,
123
,
38
,
211
,
9
,
125
,
223
,
51
,
87
,
85
,
64
,
144
,
25
,
204
,
69
,
4
,
146
,
200
,
76
,
230
,
36
,
49
,
55
,
12
,
3
,
17
,
48
,
12
,
3
,
195
,
208
,
174
,
109
,
173
,
93
,
11
,
188
,
201
,
119
,
145
,
142
,
119
,
176
,
184
,
48
,
198
,
131
,
239
,
88
,
183
,
184
,
244
,
143
,
9
,
174
,
90
,
89
,
91
,
97
,
50
,
153
,
178
,
58
,
153
,
50
,
157
,
245
,
204
,
102
,
61
,
85
,
98
,
78
,
18
,
195
,
48
,
48
,
23
,
17
,
116
,
93
,
119
,
181
,
164
,
95
,
152
,
205
,
102
,
79
,
3
,
199
,
184
,
140
,
255
,
226
,
231
,
126
,
158
,
151
,
95
,
126
,
153
,
135
,
191
,
239
,
225
,
118
,
195
,
13
,
215
,
143
,
55
,
109
,
222
,
180
,
28
,
17
,
203
,
4
,
75
,
24
,
108
,
97
,
27
,
75
,
171
,
42
,
77
,
215
,
38
,
107
,
43
,
215
,
93
,
119
,
195
,
228
,
23
,
254
,
193
,
127
,
185
,
222
,
25
,
155
,
185
,
96
,
54
,
155
,
209
,
15
,
3
,
85
,
34
,
51
,
177
,
185
,
40
,
34
,
152
,
179
,
205
,
219
,
169
,
68
,
63
,
155
,
49
,
30
,
143
,
151
,
34
,
189
,
17
,
155
,
239
,
38
,
29
,
151
,
241
,
177
,
143
,
62
,
76
,
223
,
15
,
227
,
117
,
235
,
22
,
255
,
243
,
209
,
168
,
187
,
107
,
229
,
252
,
10
,
125
,
223
,
51
,
157
,
245
,
12
,
67
,
49
,
157
,
245
,
244
,
179
,
30
,
219
,
204
,
101
,
38
,
173
,
53
,
102
,
179
,
25
,
17
,
65
,
215
,
117
,
116
,
93
,
247
,
189
,
125
,
223
,
255
,
141
,
241
,
120
,
252
,
63
,
78
,
167
,
83
,
126
,
255
,
115
,
191
,
203
,
71
,
63
,
246
,
253
,
60
,
250
,
232
,
23
,
214
,
173
,
91
,
183
,
124
,
205
,
194
,
120
,
124
,
71
,
55
,
234
,
238
,
24
,
141
,
186
,
155
,
33
,
174
,
109
,
45
,
183
,
69
,
198
,
186
,
140
,
88
,
144
,
205
,
156
,
36
,
106
,
24
,
214
,
84
,
53
,
147
,
106
,
165
,
239
,
215
,
142
,
255
,
237
,
191
,
243
,
183
,
103
,
191
,
246
,
107
,
255
,
219
,
50
,
113
,
2
,
8
,
44
,
19
,
209
,
184
,
28
,
219
,
188
,
197
,
54
,
195
,
48
,
48
,
26
,
141
,
48
,
38
,
34
,
107
,
227
,
198
,
205
,
62
,
124
,
248
,
48
,
255
,
221
,
63
,
250
,
21
,
254
,
193
,
47
,
254
,
87
,
124
,
55
,
232
,
120
,
155
,
77
,
159
,
249
,
40
,
221
,
73
,
104
,
109
,
116
,
111
,
215
,
181
,
31
,
150
,
204
,
116
,
54
,
99
,
58
,
157
,
49
,
155
,
205
,
152
,
205
,
102
,
212
,
48
,
80
,
85
,
100
,
38
,
85
,
69
,
85
,
49
,
215
,
90
,
35
,
51
,
145
,
68
,
187
,
228
,
111
,
76
,
167
,
211
,
127
,
246
,
244
,
51
,
79
,
158
,
95
,
89
,
89
,
187
,
243
,
217
,
103
,
159
,
126
,
248
,
154
,
107
,
118
,
127
,
100
,
52
,
30
,
223
,
213
,
117
,
221
,
14
,
240
,
66
,
107
,
13
,
73
,
16
,
96
,
155
,
0
,
100
,
19
,
128
,
36
,
172
,
17
,
86
,
97
,
25
,
89
,
220
,
112
,
195
,
117
,
220
,
121
,
231
,
237
,
28
,
56
,
112
,
128
,
204
,
36
,
91
,
226
,
161
,
199
,
134
,
136
,
96
,
46
,
34
,
136
,
8
,
36
,
17
,
17
,
100
,
38
,
146
,
200
,
76
,
50
,
131
,
42
,
113
,
197
,
21
,
59
,
151
,
127
,
241
,
151
,
126
,
241
,
31
,
110
,
221
,
182
,
245
,
137
,
243
,
231
,
206
,
125
,
227
,
87
,
255
,
215
,
127
,
122
,
240
,
153
,
167
,
159
,
62
,
182
,
119
,
239
,
222
,
67
,
207
,
61
,
255
,
210
,
217
,
67
,
135
,
143
,
206
,
214
,
173
,
91
,
226
,
228
,
201
,
147
,
252
,
255
,
169
,
227
,
109
,
62
,
112
,
2
,
214
,
111
,
88
,
100
,
50
,
233
,
63
,
156
,
25
,
59
,
167
,
211
,
158
,
97
,
24
,
24
,
134
,
1
,
169
,
24
,
106
,
192
,
54
,
17
,
129
,
109
,
170
,
10
,
73
,
216
,
166
,
181
,
70
,
102
,
98
,
67
,
102
,
50
,
26
,
141
,
238
,
254
,
91
,
127
,
235
,
51
,
127
,
127
,
58
,
153
,
221
,
186
,
121
,
243
,
166
,
143
,
108
,
216
,
176
,
113
,
231
,
120
,
52
,
138
,
11
,
32
,
192
,
54
,
24
,
162
,
5
,
146
,
136
,
72
,
230
,
194
,
5
,
1
,
68
,
16
,
145
,
68
,
66
,
89
,
96
,
179
,
176
,
176
,
192
,
35
,
143
,
124
,
130
,
190
,
239
,
249
,
220
,
231
,
254
,
128
,
51
,
103
,
206
,
48
,
244
,
61
,
217
,
26
,
93
,
215
,
17
,
17
,
216
,
102
,
46
,
34
,
152
,
155
,
205
,
102
,
84
,
21
,
17
,
1
,
4
,
216
,
220
,
127
,
255
,
125
,
163
,
235
,
174
,
223
,
243
,
189
,
182
,
190
,
119
,
221
,
226
,
130
,
55
,
172
,
95
,
158
,
94
,
123
,
237
,
53
,
167
,
239
,
190
,
231
,
174
,
35
,
251
,
247
,
237
,
123
,
229
,
200
,
161
,
67
,
207
,
156
,
59
,
119
,
246
,
107
,
131
,
227
,
233
,
126
,
82
,
135
,
178
,
197
,
240
,
235
,
191
,
249
,
47
,
249
,
171
,
214
,
120
,
155
,
219
,
111
,
185
,
153
,
67
,
175
,
29
,
203
,
205
,
91
,
55
,
252
,
116
,
73
,
119
,
77
,
38
,
83
,
38
,
147
,
9
,
147
,
201
,
132
,
201
,
108
,
74
,
85
,
81
,
37
,
170
,
138
,
97
,
24
,
136
,
8
,
50
,
147
,
185
,
136
,
192
,
54
,
182
,
129
,
196
,
214
,
194
,
35
,
143
,
124
,
226
,
131
,
119
,
222
,
121
,
199
,
221
,
235
,
214
,
173
,
91
,
191
,
110
,
105
,
41
,
50
,
27
,
115
,
153
,
73
,
70
,
227
,
146
,
32
,
35
,
9
,
130
,
224
,
146
,
8
,
200
,
76
,
8
,
192
,
129
,
205
,
69
,
182
,
88
,
183
,
110
,
29
,
119
,
220
,
113
,
7
,
119
,
221
,
117
,
23
,
235
,
215
,
47
,
115
,
228
,
240
,
97
,
222
,
60
,
121
,
18
,
201
,
64
,
48
,
103
,
27
,
73
,
84
,
21
,
146
,
176
,
77
,
102
,
178
,
48
,
30
,
179
,
107
,
215
,
21
,
252
,
196
,
79
,
254
,
36
,
187
,
174
,
184
,
2
,
213
,
64
,
215
,
90
,
100
,
102
,
183
,
254
,
130
,
43
,
175
,
188
,
114
,
215
,
158
,
61
,
187
,
239
,
216
,
182
,
125
,
219
,
135
,
218
,
104
,
244
,
239
,
163
,
250
,
161
,
104
,
220
,
23
,
65
,
222
,
114
,
203
,
205
,
39
,
206
,
157
,
247
,
234
,
67
,
15
,
220
,
195
,
254
,
253
,
251
,
249
,
171
,
208
,
120
,
155
,
219
,
110
,
185
,
153
,
174
,
235
,
218
,
120
,
113
,
244
,
119
,
74
,
190
,
233
,
252
,
202
,
10
,
147
,
201
,
148
,
201
,
116
,
194
,
116
,
58
,
101
,
58
,
235
,
25
,
250
,
1
,
73
,
84
,
21
,
182
,
153
,
147
,
132
,
109
,
34
,
130
,
204
,
96
,
46
,
51
,
248
,
208
,
135
,
62
,
148
,
55
,
223
,
124
,
51
,
219
,
182
,
109
,
103
,
52
,
26
,
17
,
17
,
68
,
64
,
102
,
99
,
46
,
34
,
200
,
76
,
34
,
32
,
51
,
177
,
77
,
107
,
13
,
99
,
36
,
147
,
145
,
32
,
99
,
204
,
92
,
4
,
23
,
101
,
6
,
59
,
118
,
236
,
224
,
190
,
251
,
238
,
225
,
193
,
119
,
63
,
200
,
116
,
54
,
227
,
229
,
151
,
94
,
102
,
50
,
153
,
50
,
30
,
143
,
176
,
77
,
85
,
81
,
85
,
84
,
21
,
153
,
73
,
215
,
53
,
150
,
151
,
215
,
241
,
31
,
252
,
216
,
143
,
242
,
177
,
143
,
125
,
148
,
57
,
169
,
192
,
198
,
54
,
17
,
129
,
44
,
70
,
227
,
17
,
59
,
118
,
238
,
224
,
154
,
107
,
174
,
25
,
109
,
221
,
190
,
117
,
219
,
116
,
50
,
185
,
119
,
229
,
252
,
202
,
15
,
73
,
254
,
200
,
85
,
87
,
109
,
95
,
159
,
45
,
14
,
62
,
255
,
252
,
139
,
103
,
127
,
247
,
243
,
191
,
207
,
193
,
215
,
223
,
224
,
47
,
83
,
227
,
109
,
110
,
186
,
233
,
6
,
206
,
158
,
95
,
99
,
105
,
221
,
248
,
135
,
250
,
26
,
238
,
152
,
78
,
167
,
172
,
173
,
173
,
49
,
157
,
205
,
232
,
251
,
129
,
201
,
100
,
74
,
13
,
133
,
109
,
108
,
83
,
85
,
204
,
117
,
221
,
136
,
136
,
96
,
110
,
54
,
155
,
97
,
155
,
135
,
30
,
122
,
128
,
31
,
251
,
177
,
31
,
229
,
166
,
155
,
110
,
98
,
97
,
97
,
76
,
102
,
35
,
51
,
201
,
76
,
32
,
120
,
75
,
102
,
146
,
25
,
204
,
101
,
6
,
178
,
201
,
76
,
46
,
49
,
17
,
1
,
17
,
68
,
4
,
17
,
129
,
109
,
36
,
33
,
21
,
17
,
176
,
109
,
251
,
22
,
222
,
253
,
238
,
7
,
185
,
118
,
247
,
110
,
94
,
124
,
241
,
69
,
78
,
157
,
58
,
141
,
109
,
50
,
19
,
12
,
17
,
65
,
215
,
53
,
70
,
163
,
17
,
215
,
93
,
183
,
135
,
159
,
248
,
201
,
159
,
96
,
231
,
206
,
157
,
72
,
133
,
106
,
160
,
170
,
176
,
141
,
109
,
140
,
177
,
133
,
100
,
108
,
179
,
101
,
235
,
22
,
246
,
92
,
183
,
135
,
133
,
165
,
133
,
238
,
244
,
169
,
83
,
187
,
39
,
147
,
181
,
143
,
102
,
196
,
71
,
126
,
253
,
127
,
255
,
103
,
53
,
38
,
247
,
221
,
117
,
231
,
237
,
147
,
231
,
94
,
124
,
137
,
191
,
44
,
141
,
183
,
185
,
241
,
198
,
235
,
89
,
191
,
97
,
209
,
67
,
213
,
13
,
195
,
48
,
124
,
223
,
100
,
50
,
101
,
232
,
7
,
166
,
179
,
25
,
211
,
217
,
12
,
201
,
88
,
38
,
51
,
105
,
173
,
33
,
137
,
136
,
96
,
52
,
26
,
33
,
153
,
190
,
239
,
217
,
180
,
105
,
19
,
63
,
250
,
163
,
159
,
230
,
231
,
126
,
238
,
103
,
185
,
251
,
238
,
187
,
89
,
88
,
24
,
3
,
65
,
4
,
23
,
101
,
38
,
17
,
129
,
109
,
34
,
130
,
8
,
200
,
108
,
92
,
18
,
68
,
4
,
16
,
16
,
92
,
18
,
16
,
17
,
68
,
38
,
193
,
5
,
22
,
223
,
148
,
168
,
68
,
215
,
37
,
183
,
220
,
122
,
51
,
119
,
220
,
126
,
27
,
123
,
247
,
62
,
203
,
177
,
99
,
199
,
200
,
72
,
90
,
235
,
232
,
90
,
99
,
52
,
234
,
88
,
90
,
28
,
211
,
247
,
61
,
207
,
61
,
247
,
28
,
235
,
55
,
172
,
103
,
215
,
174
,
157
,
180
,
214
,
144
,
196
,
156
,
36
,
164
,
66
,
22
,
82
,
17
,
128
,
109
,
90
,
107
,
236
,
220
,
185
,
157
,
171
,
174
,
186
,
138
,
243
,
231
,
207
,
230
,
233
,
211
,
167
,
174
,
12
,
226
,
227
,
209
,
229
,
157
,
147
,
89
,
191
,
111
,
251
,
142
,
157
,
135
,
111
,
191
,
237
,
86
,
246
,
237
,
219
,
207
,
191
,
171
,
198
,
219
,
188
,
252
,
202
,
62
,
174
,
191
,
238
,
58
,
192
,
107
,
54
,
159
,
236
,
251
,
217
,
198
,
217
,
108
,
198
,
80
,
133
,
36
,
230
,
84
,
98
,
206
,
54
,
153
,
73
,
102
,
50
,
153
,
76
,
168
,
42
,
62
,
240
,
129
,
247
,
243
,
203
,
191
,
252
,
75
,
252
,
248
,
143
,
255
,
56
,
187
,
119
,
95
,
67
,
102
,
0
,
65
,
107
,
73
,
102
,
35
,
34
,
152
,
203
,
12
,
50
,
147
,
204
,
4
,
76
,
68
,
2
,
6
,
2
,
219
,
68
,
4
,
17
,
96
,
155
,
57
,
27
,
108
,
17
,
4
,
145
,
129
,
101
,
8
,
136
,
224
,
34
,
203
,
216
,
102
,
215
,
174
,
157
,
220
,
118
,
199
,
109
,
28
,
56
,
112
,
128
,
55
,
79
,
158
,
100
,
212
,
37
,
59
,
118
,
108
,
227
,
193
,
135
,
238
,
103
,
195
,
134
,
245
,
156
,
58
,
117
,
134
,
55
,
222
,
56
,
200
,
151
,
191
,
252
,
37
,
206
,
157
,
59
,
207
,
205
,
183
,
220
,
194
,
242
,
242
,
50
,
150
,
152
,
179
,
5
,
97
,
36
,
3
,
193
,
220
,
48
,
244
,
68
,
152
,
165
,
229
,
101
,
174
,
187
,
126
,
15
,
37
,
113
,
232
,
240
,
209
,
110
,
24
,
234
,
182
,
136
,
252
,
216
,
104
,
212
,
206
,
175
,
77
,
39
,
207
,
222
,
120
,
227
,
245
,
195
,
171
,
251
,
95
,
227
,
223
,
69
,
227
,
50
,
174
,
191
,
238
,
90
,
52
,
232
,
168
,
131
,
205
,
217
,
242
,
123
,
134
,
126
,
136
,
42
,
49
,
155
,
206
,
232
,
135
,
162
,
159
,
13
,
204
,
101
,
38
,
146
,
153
,
78
,
39
,
44
,
175
,
95
,
230
,
239
,
254
,
244
,
79
,
241
,
75
,
191
,
244
,
11
,
220
,
123
,
223
,
189
,
116
,
221
,
136
,
136
,
32
,
51
,
128
,
36
,
179
,
49
,
23
,
17
,
100
,
38
,
54
,
68
,
4
,
151
,
4
,
223
,
20
,
68
,
4
,
23
,
5
,
216
,
38
,
34
,
137
,
224
,
162
,
0
,
36
,
1
,
6
,
2
,
219
,
72
,
194
,
6
,
35
,
170
,
6
,
182
,
111
,
223
,
202
,
189
,
247
,
222
,
195
,
174
,
93
,
59
,
185
,
250
,
170
,
43
,
121
,
224
,
129
,
123
,
185
,
247
,
190
,
187
,
216
,
115
,
221
,
53
,
28
,
120
,
253
,
0
,
231
,
206
,
157
,
103
,
214
,
207
,
120
,
234
,
169
,
63
,
101
,
255
,
171
,
175
,
114
,
251
,
109
,
183
,
178
,
188
,
188
,
76
,
213
,
128
,
109
,
36
,
17
,
201
,
69
,
85
,
69
,
85
,
1
,
102
,
168
,
129
,
214
,
117
,
92
,
117
,
213
,
46
,
22
,
23
,
23
,
56
,
240
,
218
,
27
,
244
,
125
,
191
,
57
,
91
,
126
,
95
,
215
,
229
,
122
,
13
,
122
,
252
,
198
,
27
,
175
,
155
,
236
,
219
,
255
,
26
,
255
,
95
,
53
,
46
,
99
,
223
,
254
,
215
,
216
,
189
,
231
,
106
,
151
,
244
,
188
,
237
,
123
,
250
,
126
,
184
,
81
,
85
,
24
,
51
,
244
,
3
,
17
,
65
,
107
,
141
,
214
,
26
,
125
,
223
,
179
,
105
,
211
,
70
,
254
,
235
,
95
,
250
,
69
,
126
,
234
,
167
,
126
,
130
,
141
,
27
,
54
,
98
,
65
,
68
,
16
,
193
,
5
,
65
,
102
,
71
,
68
,
2
,
65
,
68
,
146
,
217
,
128
,
32
,
34
,
137
,
72
,
90
,
235
,
136
,
8
,
230
,
34
,
2
,
219
,
204
,
5
,
193
,
156
,
13
,
216
,
4
,
193
,
156
,
13
,
118
,
96
,
23
,
150
,
33
,
184
,
32
,
48
,
34
,
2
,
108
,
179
,
97
,
253
,
50
,
183
,
220
,
114
,
51
,
123
,
246
,
92
,
67
,
235
,
26
,
163
,
81
,
199
,
246
,
237
,
219
,
216
,
178
,
121
,
51
,
47
,
60
,
255
,
34
,
253
,
48
,
96
,
155
,
125
,
175
,
236
,
231
,
165
,
23
,
95
,
226
,
214
,
91
,
111
,
101
,
243
,
150
,
77
,
88
,
96
,
27
,
169
,
144
,
10
,
187
,
176
,
141
,
109
,
176
,
177
,
12
,
152
,
93
,
187
,
174
,
96
,
113
,
105
,
145
,
87
,
247
,
191
,
74
,
223
,
207
,
70
,
153
,
249
,
158
,
204
,
184
,
186
,
134
,
225
,
177
,
155
,
111
,
190
,
126
,
101
,
180
,
48
,
226
,
196
,
137
,
147
,
252
,
69
,
53
,
222
,
193
,
85
,
187
,
175
,
68
,
131
,
206
,
75
,
250
,
211
,
174
,
181
,
251
,
193
,
87
,
151
,
69
,
16
,
64
,
96
,
155
,
217
,
108
,
198
,
194
,
194
,
152
,
159
,
255
,
249
,
159
,
227
,
111
,
254
,
205
,
207
,
48
,
26
,
143
,
136
,
8
,
34
,
130
,
136
,
32
,
51
,
137
,
8
,
50
,
27
,
17
,
65
,
68
,
144
,
153
,
68
,
4
,
153
,
73
,
102
,
18
,
17
,
204
,
69
,
152
,
136
,
224
,
45
,
17
,
65
,
68
,
96
,
131
,
45
,
140
,
177
,
141
,
101
,
100
,
17
,
17
,
128
,
145
,
69
,
68
,
32
,
9
,
171
,
176
,
141
,
109
,
108
,
99
,
139
,
165
,
165
,
37
,
54
,
108
,
88
,
79
,
102
,
208
,
90
,
227
,
202
,
171
,
174
,
224
,
220
,
249
,
243
,
188
,
254
,
218
,
27
,
68
,
36
,
115
,
7
,
15
,
30
,
228
,
197
,
23
,
95
,
226
,
206
,
119
,
189
,
139
,
205
,
155
,
55
,
33
,
9
,
91
,
84
,
21
,
17
,
193
,
91
,
36
,
35
,
21
,
115
,
182
,
216
,
177
,
99
,
59
,
75
,
75
,
75
,
188
,
252
,
242
,
126
,
250
,
126
,
200
,
150
,
121
,
87
,
100
,
187
,
106
,
58
,
12
,
95
,
218
,
184
,
97
,
227
,
234
,
171
,
251
,
95
,
227
,
47
,
170
,
241
,
14
,
222
,
56
,
112
,
144
,
173
,
155
,
183
,
48
,
30
,
181
,
163
,
150
,
190
,
38
,
124
,
147
,
97
,
79
,
215
,
186
,
28
,
134
,
129
,
217
,
108
,
198
,
250
,
245
,
235
,
249
,
217
,
159
,
253
,
25
,
62
,
243
,
153
,
255
,
144
,
209
,
104
,
4
,
17
,
180
,
76
,
50
,
147
,
204
,
36
,
34
,
200
,
12
,
32
,
153
,
203
,
76
,
34
,
130
,
136
,
32
,
51
,
137
,
8
,
222
,
98
,
155
,
75
,
204
,
156
,
109
,
108
,
115
,
73
,
96
,
155
,
136
,
192
,
54
,
115
,
17
,
96
,
27
,
8
,
230
,
108
,
48
,
38
,
194
,
72
,
102
,
24
,
10
,
48
,
96
,
90
,
107
,
44
,
45
,
45
,
50
,
30
,
143
,
24
,
47
,
140
,
217
,
190
,
109
,
59
,
207
,
62
,
251
,
60
,
103
,
207
,
157
,
7
,
76
,
68
,
114
,
232
,
208
,
97
,
14
,
29
,
60
,
200
,
61
,
247
,
220
,
205
,
242
,
242
,
50
,
182
,
136
,
48
,
182
,
168
,
26
,
176
,
141
,
109
,
36
,
17
,
17
,
216
,
98
,
110
,
231
,
206
,
157
,
200
,
197
,
171
,
251
,
95
,
165
,
74
,
145
,
173
,
189
,
43
,
35
,
54
,
206
,
166
,
179
,
71
,
175
,
191
,
110
,
207
,
236
,
181
,
215
,
14
,
240
,
23
,
209
,
248
,
22
,
142
,
30
,
59
,
198
,
198
,
13
,
203
,
196
,
168
,
29
,
173
,
97
,
248
,
125
,
219
,
71
,
183
,
108
,
218
,
116
,
237
,
21
,
59
,
119
,
236
,
184
,
249
,
230
,
155
,
248
,
233
,
191
,
247
,
119
,
249
,
244
,
143
,
124
,
154
,
241
,
194
,
136
,
204
,
32
,
72
,
34
,
130
,
204
,
36
,
34
,
136
,
8
,
50
,
147
,
204
,
36
,
34
,
137
,
8
,
34
,
130
,
204
,
36
,
34
,
176
,
77
,
68
,
96
,
27
,
155
,
11
,
2
,
169
,
0
,
19
,
145
,
128
,
177
,
185
,
36
,
192
,
64
,
96
,
34
,
130
,
32
,
144
,
10
,
108
,
100
,
35
,
21
,
198
,
204
,
73
,
5
,
24
,
16
,
54
,
23
,
24
,
48
,
182
,
176
,
204
,
250
,
245
,
203
,
156
,
61
,
115
,
150
,
23
,
94
,
120
,
9
,
99
,
48
,
100
,
118
,
28
,
56
,
112
,
144
,
147
,
39
,
79
,
241
,
192
,
253
,
247
,
50
,
26
,
53
,
108
,
83
,
85
,
216
,
2
,
2
,
73
,
100
,
114
,
145
,
36
,
108
,
176
,
205
,
206
,
157
,
59
,
56
,
117
,
242
,
36
,
135
,
14
,
29
,
37
,
35
,
35
,
91
,
222
,
29
,
48
,
153
,
76
,
214
,
30
,
187
,
238
,
186
,
61
,
126
,
253
,
192
,
27
,
124
,
167
,
26
,
223
,
198
,
241
,
19
,
39
,
57
,
124
,
232
,
40
,
191
,
250
,
107
,
191
,
186
,
242
,
145
,
143
,
124
,
100
,
239
,
39
,
63
,
249
,
3
,
31
,
249
,
129
,
71
,
30
,
185
,
229
,
147
,
159
,
250
,
36
,
119
,
190
,
235
,
93
,
100
,
75
,
178
,
53
,
130
,
32
,
35
,
200
,
76
,
230
,
34
,
160
,
181
,
198
,
92
,
102
,
146
,
153
,
180
,
214
,
176
,
77
,
68
,
48
,
23
,
17
,
204
,
73
,
34
,
34
,
184
,
196
,
68
,
128
,
109
,
222
,
34
,
21
,
127
,
78
,
198
,
128
,
45
,
100
,
97
,
132
,
108
,
2
,
144
,
4
,
8
,
201
,
128
,
1
,
99
,
131
,
84
,
72
,
66
,
18
,
17
,
73
,
68
,
176
,
113
,
211
,
70
,
158
,
123
,
246
,
121
,
206
,
159
,
95
,
37
,
162
,
17
,
17
,
24
,
216
,
191
,
111
,
63
,
227
,
209
,
136
,
119
,
189
,
235
,
14
,
108
,
99
,
11
,
219
,
204
,
217
,
194
,
54
,
182
,
128
,
192
,
22
,
96
,
50
,
147
,
29
,
59
,
182
,
179
,
111
,
223
,
126
,
206
,
157
,
59
,
79
,
16
,
173
,
107
,
237
,
222
,
214
,
186
,
231
,
118
,
108
,
223
,
250
,
194
,
166
,
205
,
155
,
121
,
227
,
141
,
131
,
124
,
39
,
146
,
239
,
208
,
149
,
87
,
94
,
193
,
246
,
237
,
91
,
127
,
96
,
215
,
174
,
157
,
31
,
222
,
185
,
115
,
7
,
203
,
203
,
235
,
80
,
21
,
216
,
96
,
46
,
138
,
72
,
164
,
194
,
54
,
115
,
182
,
153
,
139
,
72
,
34
,
130
,
203
,
145
,
68
,
102
,
146
,
153
,
128
,
153
,
139
,
8
,
254
,
159
,
108
,
176
,
13
,
54
,
68
,
32
,
9
,
73
,
24
,
227
,
8
,
8
,
254
,
156
,
36
,
34
,
130
,
136
,
196
,
54
,
182
,
0
,
19
,
1
,
17
,
9
,
24
,
73
,
92
,
113
,
197
,
14
,
238
,
124
,
215
,
237
,
100
,
54
,
90
,
107
,
216
,
38
,
35
,
176
,
204
,
111
,
252
,
250
,
191
,
224
,
241
,
175
,
61
,
65
,
132
,
145
,
140
,
36
,
36
,
1
,
129
,
109
,
108
,
83
,
85
,
216
,
198
,
54
,
132
,
216
,
177
,
115
,
27
,
239
,
123
,
223
,
131
,
216
,
102
,
24
,
122
,
100
,
109
,
203
,
204
,
255
,
246
,
232
,
241
,
55
,
111
,
24
,
143
,
70
,
124
,
167
,
26
,
223
,
129
,
47
,
252
,
225
,
239
,
115
,
246
,
244
,
233
,
77
,
155
,
55
,
111
,
254
,
149
,
165
,
165
,
117
,
183
,
102
,
36
,
68
,
210
,
90
,
66
,
4
,
217
,
146
,
140
,
196
,
230
,
162
,
214
,
146
,
136
,
192
,
134
,
204
,
36
,
34
,
176
,
33
,
34
,
136
,
8
,
50
,
147
,
214
,
26
,
182
,
249
,
127
,
51
,
118
,
17
,
145
,
216
,
6
,
204
,
156
,
36
,
108
,
17
,
128
,
36
,
28
,
38
,
8
,
176
,
40
,
21
,
24
,
44
,
35
,
21
,
145
,
96
,
11
,
169
,
144
,
138
,
57
,
219
,
84
,
21
,
182
,
144
,
140
,
100
,
2
,
51
,
234
,
70
,
60
,
245
,
141
,
167
,
233
,
251
,
129
,
42
,
97
,
27
,
34
,
56
,
191
,
178
,
202
,
225
,
35
,
135
,
121
,
240
,
161
,
7
,
88
,
94
,
183
,
12
,
24
,
169
,
176
,
69
,
4
,
84
,
137
,
170
,
1
,
219
,
72
,
2
,
11
,
89
,
108
,
218
,
188
,
145
,
67
,
7
,
143
,
112
,
236
,
232
,
9
,
32
,
232
,
186
,
182
,
43
,
35
,
125
,
246
,
236
,
217
,
63
,
188
,
238
,
218
,
107
,
244
,
198
,
193
,
67
,
124
,
59
,
141
,
111
,
227
,
119
,
126
,
251
,
179
,
108
,
218
,
180
,
145
,
174
,
235
,
62
,
182
,
126
,
253
,
250
,
159
,
233
,
90
,
55
,
142
,
76
,
8
,
46
,
138
,
8
,
34
,
147
,
136
,
4
,
67
,
215
,
117
,
68
,
4
,
16
,
180
,
214
,
0
,
19
,
209
,
200
,
76
,
34
,
130
,
185
,
136
,
192
,
54
,
115
,
182
,
121
,
139
,
109
,
108
,
51
,
103
,
27
,
73
,
204
,
217
,
134
,
0
,
89
,
4
,
1
,
6
,
169
,
48
,
198
,
50
,
82
,
17
,
128
,
45
,
108
,
99
,
27
,
73
,
128
,
145
,
140
,
36
,
108
,
99
,
11
,
219
,
204
,
73
,
197
,
186
,
165
,
37
,
94
,
122
,
121
,
31
,
39
,
142
,
191
,
73
,
73
,
188
,
37
,
51
,
56
,
116
,
232
,
48
,
155
,
54
,
109
,
228
,
206
,
59
,
111
,
71
,
18
,
182
,
144
,
4
,
4
,
96
,
230
,
108
,
99
,
155
,
108
,
129
,
84
,
140
,
186
,
17
,
93
,
55
,
226
,
249
,
231
,
95
,
64
,
50
,
153
,
73
,
102
,
222
,
212
,
186
,
246
,
39
,
227
,
241
,
248
,
213
,
173
,
219
,
182
,
112
,
248
,
240
,
81
,
190
,
149
,
228
,
219
,
24
,
141
,
70
,
124
,
245
,
79
,
30
,
111
,
11
,
11
,
11
,
63
,
220
,
186
,
92
,
150
,
141
,
100
,
34
,
146
,
204
,
4
,
2
,
149
,
80
,
21
,
17
,
96
,
27
,
219
,
68
,
112
,
129
,
137
,
72
,
108
,
97
,
27
,
73
,
204
,
217
,
70
,
18
,
182
,
105
,
173
,
49
,
103
,
155
,
185
,
204
,
64
,
18
,
96
,
50
,
147
,
185
,
214
,
26
,
173
,
37
,
115
,
146
,
192
,
64
,
4
,
24
,
146
,
32
,
34
,
33
,
76
,
68
,
128
,
3
,
27
,
34
,
130
,
136
,
0
,
140
,
13
,
17
,
193
,
55
,
153
,
185
,
165
,
165
,
69
,
110
,
187
,
245
,
102
,
50
,
147
,
204
,
68
,
18
,
96
,
108
,
3
,
201
,
231
,
126
,
239
,
243
,
28
,
58
,
120
,
24
,
48
,
182
,
153
,
147
,
10
,
219
,
68
,
4
,
111
,
145
,
140
,
13
,
170
,
226
,
198
,
27
,
246
,
176
,
123
,
247
,
213
,
244
,
179
,
25
,
179
,
217
,
20
,
169
,
182
,
183
,
214
,
254
,
211
,
217
,
172
,
95
,
94
,
90
,
90
,
226
,
219
,
73
,
190
,
141
,
108
,
112
,
219
,
237
,
55
,
95
,
51
,
234
,
186
,
15
,
102
,
36
,
17
,
144
,
105
,
112
,
97
,
27
,
91
,
24
,
51
,
103
,
155
,
8
,
136
,
0
,
27
,
36
,
3
,
198
,
22
,
118
,
97
,
23
,
146
,
176
,
141
,
36
,
108
,
83
,
85
,
84
,
21
,
85
,
3
,
32
,
108
,
176
,
141
,
109
,
108
,
19
,
1
,
146
,
80
,
153
,
57
,
89
,
148
,
197
,
69
,
6
,
99
,
176
,
145
,
140
,
109
,
34
,
32
,
2
,
108
,
115
,
73
,
16
,
17
,
216
,
38
,
34
,
176
,
141
,
84
,
128
,
32
,
204
,
77
,
55
,
94
,
199
,
104
,
220
,
97
,
23
,
173
,
5
,
17
,
92
,
96
,
198
,
227
,
17
,
111
,
28
,
56
,
200
,
23
,
190
,
240
,
40
,
96
,
36
,
243
,
150
,
170
,
162
,
74
,
24
,
99
,
138
,
26
,
122
,
40
,
225
,
18
,
227
,
81
,
227
,
93
,
119
,
220
,
138
,
129
,
26
,
196
,
48
,
12
,
4
,
254
,
104
,
102
,
124
,
111
,
215
,
26
,
223
,
78
,
242
,
109
,
44
,
45
,
45
,
49
,
30
,
47
,
220
,
215
,
186
,
182
,
199
,
54
,
182
,
144
,
132
,
44
,
170
,
6
,
108
,
131
,
65
,
18
,
85
,
66
,
50
,
16
,
188
,
165
,
74
,
84
,
21
,
85
,
133
,
109
,
164
,
162
,
170
,
136
,
224
,
2
,
35
,
21
,
182
,
200
,
12
,
192
,
216
,
102
,
174
,
74
,
216
,
66
,
50
,
85
,
3
,
165
,
66
,
50
,
153
,
137
,
45
,
84
,
194
,
54
,
182
,
145
,
4
,
2
,
99
,
74
,
133
,
36
,
230
,
170
,
4
,
4
,
17
,
96
,
27
,
201
,
216
,
226
,
45
,
42
,
177
,
243
,
138
,
237
,
92
,
121
,
229
,
14
,
50
,
131
,
136
,
0
,
76
,
102
,
163
,
181
,
198
,
220
,
163
,
143
,
126
,
137
,
19
,
39
,
78
,
146
,
13
,
36
,
33
,
137
,
136
,
192
,
22
,
150
,
176
,
5
,
54
,
17
,
65
,
112
,
201
,
245
,
55
,
92
,
203
,
134
,
245
,
203
,
76
,
166
,
19
,
250
,
126
,
64
,
210
,
198
,
204
,
248
,
204
,
217
,
243
,
231
,
199
,
239
,
126
,
207
,
3
,
124
,
43
,
201
,
183
,
240
,
220
,
115
,
207
,
114
,
195
,
13
,
123
,
232
,
186
,
238
,
193
,
136
,
24
,
219
,
198
,
54
,
146
,
176
,
77
,
68
,
18
,
17
,
128
,
201
,
76
,
50
,
19
,
91
,
72
,
162
,
170
,
152
,
139
,
128
,
214
,
146
,
136
,
96
,
206
,
22
,
32
,
134
,
161
,
167
,
170
,
7
,
132
,
45
,
164
,
66
,
50
,
182
,
137
,
8
,
50
,
131
,
136
,
224
,
146
,
32
,
34
,
136
,
0
,
3
,
153
,
13
,
2
,
108
,
33
,
137
,
57
,
99
,
108
,
99
,
155
,
57
,
219
,
216
,
70
,
18
,
182
,
153
,
179
,
69
,
68
,
48
,
103
,
153
,
185
,
229
,
229
,
37
,
174
,
185
,
230
,
106
,
108
,
211
,
90
,
3
,
130
,
57
,
73
,
116
,
221
,
136
,
3
,
175
,
31
,
228
,
79
,
159
,
122
,
6
,
219
,
72
,
162
,
170
,
168
,
42
,
170
,
10
,
219
,
216
,
252
,
185
,
136
,
192
,
18
,
155
,
55
,
109
,
228
,
202
,
171
,
175
,
96
,
24
,
6
,
134
,
97
,
96
,
24
,
138
,
11
,
30
,
94
,
88
,
24
,
223
,
213
,
90
,
227
,
91
,
73
,
190
,
133
,
87
,
246
,
189
,
196
,
231
,
191
,
240
,
229
,
133
,
209
,
104
,
116
,
71
,
102
,
98
,
155
,
32
,
136
,
8
,
144
,
209
,
48
,
96
,
153
,
32
,
176
,
133
,
93
,
12
,
53
,
96
,
139
,
57
,
73
,
204
,
217
,
6
,
140
,
109
,
34
,
2
,
91
,
72
,
66
,
18
,
54
,
68
,
4
,
182
,
145
,
10
,
91
,
72
,
194
,
6
,
219
,
216
,
34
,
18
,
108
,
99
,
131
,
101
,
84
,
3
,
168
,
176
,
184
,
32
,
176
,
193
,
22
,
96
,
230
,
108
,
144
,
4
,
24
,
16
,
146
,
1
,
51
,
103
,
27
,
99
,
108
,
131
,
69
,
6
,
92
,
187
,
251
,
106
,
70
,
93
,
135
,
109
,
90
,
107
,
204
,
217
,
6
,
204
,
172
,
31
,
248
,
202
,
87
,
191
,
206
,
172
,
47
,
36
,
17
,
17
,
72
,
34
,
49
,
137
,
73
,
192
,
50
,
150
,
40
,
137
,
185
,
214
,
53
,
174
,
189
,
230
,
106
,
230
,
170
,
68
,
213
,
128
,
228
,
93
,
45
,
242
,
145
,
43
,
175
,
220
,
193
,
67
,
15
,
222
,
207
,
59
,
73
,
190
,
5
,
73
,
44
,
173
,
91
,
220
,
16
,
25
,
187
,
249
,
51
,
178
,
176
,
141
,
13
,
198
,
204
,
73
,
194
,
54
,
102
,
206
,
148
,
6
,
108
,
35
,
137
,
97
,
24
,
24
,
134
,
162
,
170
,
144
,
132
,
84
,
216
,
96
,
27
,
201
,
216
,
194
,
54
,
146
,
145
,
140
,
100
,
108
,
35
,
139
,
170
,
66
,
18
,
85
,
3
,
82
,
97
,
11
,
108
,
2
,
19
,
54
,
145
,
208
,
50
,
1
,
99
,
132
,
109
,
108
,
3
,
193
,
156
,
205
,
159
,
49
,
54
,
23
,
25
,
3
,
102
,
78
,
42
,
84
,
3
,
187
,
118
,
237
,
100
,
121
,
121
,
153
,
136
,
32
,
2
,
50
,
147
,
136
,
128
,
8
,
34
,
147
,
103
,
159
,
125
,
158
,
147
,
39
,
79
,
49
,
103
,
131
,
109
,
192
,
96
,
99
,
137
,
136
,
192
,
64
,
4
,
216
,
66
,
42
,
118
,
94
,
177
,
157
,
174
,
107
,
12
,
195
,
192
,
48
,
20
,
82
,
113
,
193
,
199
,
95
,
127
,
245
,
208
,
102
,
219
,
188
,
147
,
228
,
91
,
24
,
141
,
58
,
22
,
198
,
11
,
75
,
192
,
14
,
219
,
216
,
198
,
50
,
146
,
176
,
133
,
109
,
36
,
97
,
27
,
12
,
182
,
49
,
96
,
115
,
129
,
137
,
8
,
170
,
132
,
109
,
36
,
3
,
198
,
6
,
169
,
136
,
8
,
108
,
51
,
12
,
133
,
36
,
164
,
34
,
2
,
108
,
35
,
23
,
118
,
225
,
48
,
229
,
226
,
146
,
192
,
54
,
210
,
192
,
225
,
195
,
135
,
120
,
230
,
153
,
167
,
121
,
225
,
133
,
231
,
57
,
118
,
252
,
24
,
114
,
145
,
17
,
216
,
66
,
42
,
108
,
17
,
1
,
17
,
32
,
25
,
73
,
72
,
133
,
109
,
130
,
96
,
206
,
24
,
12
,
178
,
217
,
188
,
121
,
35
,
203
,
203
,
75
,
64
,
0
,
65
,
107
,
141
,
214
,
26
,
151
,
152
,
227
,
199
,
79
,
240
,
250
,
107
,
175
,
147
,
153
,
72
,
194
,
54
,
16
,
148
,
132
,
13
,
182
,
177
,
4
,
4
,
82
,
97
,
196
,
230
,
45
,
155
,
88
,
92
,
92
,
64
,
85
,
84
,
13
,
12
,
195
,
128
,
237
,
59
,
51
,
243
,
142
,
204
,
224
,
157
,
116
,
124
,
11
,
163
,
174
,
195
,
242
,
250
,
8
,
22
,
165
,
129
,
200
,
14
,
34
,
176
,
205
,
156
,
109
,
170
,
6
,
130
,
70
,
89
,
180
,
174
,
35
,
72
,
44
,
81
,
12
,
200
,
34
,
34
,
176
,
141
,
109
,
34
,
184
,
32
,
201
,
12
,
170
,
10
,
201
,
204
,
101
,
6
,
146
,
1
,
35
,
9
,
219
,
148
,
138
,
136
,
196
,
18
,
24
,
130
,
11
,
100
,
158
,
254
,
198
,
55
,
248
,
173
,
223
,
254
,
44
,
71
,
14
,
31
,
165
,
4
,
91
,
54
,
109
,
230
,
246
,
59
,
110
,
229
,
193
,
135
,
30
,
228
,
202
,
171
,
174
,
36
,
34
,
168
,
42
,
36
,
81
,
85
,
128
,
1
,
243
,
22
,
169
,
168
,
42
,
108
,
99
,
140
,
37
,
70
,
227
,
17
,
155
,
54
,
111
,
228
,
240
,
145
,
227
,
16
,
102
,
46
,
34
,
136
,
8
,
34
,
146
,
26
,
6
,
246
,
237
,
123
,
141
,
123
,
239
,
126
,
23
,
184
,
8
,
11
,
243
,
103
,
108
,
50
,
130
,
146
,
168
,
42
,
48
,
80
,
98
,
121
,
105
,
137
,
197
,
165
,
5
,
78
,
159
,
62
,
75
,
14
,
73
,
215
,
4
,
205
,
155
,
51
,
121
,
223
,
194
,
194
,
226
,
99
,
239
,
126
,
232
,
94
,
190
,
250
,
181
,
111
,
240
,
118
,
29
,
239
,
224
,
7
,
30
,
249
,
56
,
88
,
188
,
242
,
202
,
43
,
55
,
222
,
183
,
241
,
238
,
245
,
94
,
24
,
97
,
11
,
57
,
104
,
36
,
146
,
201
,
228
,
2
,
33
,
65
,
107
,
13
,
11
,
8
,
99
,
12
,
134
,
48
,
36
,
137
,
84
,
68
,
4
,
32
,
106
,
16
,
163
,
241
,
8
,
2
,
108
,
17
,
17
,
92
,
20
,
70
,
26
,
144
,
141
,
109
,
108
,
3
,
6
,
131
,
74
,
204
,
157
,
124
,
243
,
77
,
126
,
231
,
119
,
254
,
53
,
127
,
250
,
212
,
94
,
206
,
157
,
95
,
101
,
24
,
6
,
146
,
198
,
222
,
103
,
159
,
227
,
235
,
143
,
127
,
157
,
135
,
31
,
254
,
48
,
247
,
63
,
120
,
31
,
163
,
241
,
2
,
146
,
177
,
3
,
91
,
216
,
102
,
78
,
18
,
54
,
216
,
198
,
18
,
150
,
49
,
166
,
181
,
198
,
120
,
60
,
38
,
2
,
186
,
236
,
152
,
14
,
61
,
115
,
54
,
100
,
38
,
195
,
96
,
94
,
123
,
245
,
0
,
53
,
244
,
128
,
1
,
19
,
17
,
72
,
166
,
170
,
104
,
173
,
97
,
46
,
176
,
177
,
141
,
92
,
68
,
4
,
75
,
139
,
11
,
84
,
137
,
42
,
161
,
18
,
170
,
66
,
248
,
125
,
199
,
79
,
188
,
185
,
48
,
234
,
186
,
41
,
151
,
209
,
241
,
14
,
178
,
5
,
63
,
253
,
247
,
254
,
179
,
117
,
63
,
242
,
233
,
31
,
254
,
79
,
238
,
190
,
231
,
206
,
101
,
73
,
100
,
38
,
216
,
24
,
131
,
133
,
20
,
68
,
4
,
151
,
4
,
32
,
108
,
209
,
90
,
67
,
18
,
9
,
84
,
152
,
32
,
56
,
115
,
234
,
20
,
79
,
61
,
249
,
4
,
47
,
189
,
242
,
10
,
235
,
214
,
45
,
243
,
61
,
223
,
243
,
65
,
246
,
236
,
185
,
14
,
147
,
12
,
85
,
204
,
25
,
99
,
137
,
57
,
219
,
148
,
6
,
194
,
32
,
137
,
140
,
224
,
141
,
131
,
7
,
121
,
225
,
165
,
87
,
56
,
125
,
230
,
28
,
147
,
217
,
12
,
167
,
32
,
130
,
213
,
179
,
107
,
156
,
223
,
187
,
194
,
177
,
227
,
39
,
56
,
118
,
252
,
56
,
15
,
127
,
223
,
135
,
25
,
47
,
44
,
0
,
198
,
54
,
146
,
169
,
42
,
36
,
97
,
11
,
217
,
4
,
96
,
46
,
48
,
100
,
4
,
11
,
139
,
11
,
4
,
1
,
152
,
214
,
26
,
195
,
48
,
144
,
25
,
64
,
80
,
85
,
28
,
63
,
118
,
130
,
233
,
100
,
202
,
226
,
210
,
24
,
8
,
108
,
192
,
134
,
8
,
74
,
66
,
85
,
16
,
193
,
92
,
56
,
104
,
153
,
44
,
44
,
44
,
82
,
85
,
216
,
66
,
54
,
146
,
136
,
204
,
59
,
22
,
198
,
227
,
45
,
16
,
71
,
184
,
140
,
142
,
119
,
48
,
110
,
141
,
219
,
110
,
190
,
233
,
190
,
233
,
116
,
242
,
33
,
219
,
216
,
66
,
18
,
17
,
1
,
81
,
32
,
200
,
108
,
132
,
131
,
204
,
164
,
170
,
128
,
36
,
34
,
176
,
1
,
131
,
109
,
144
,
56
,
124
,
248
,
16
,
159
,
253
,
236
,
255
,
197
,
147
,
95
,
127
,
130
,
147
,
167
,
78
,
209
,
151
,
248
,
218
,
227
,
95
,
231
,
103
,
126
,
230
,
103
,
184
,
254
,
250
,
235
,
81
,
9
,
115
,
65
,
128
,
36
,
108
,
176
,
69
,
73
,
132
,
185
,
192
,
148
,
138
,
35
,
71
,
15
,
115
,
238
,
220
,
121
,
102
,
195
,
140
,
133
,
205
,
29
,
59
,
174
,
217
,
201
,
120
,
97
,
204
,
137
,
163
,
39
,
56
,
125
,
240
,
44
,
7
,
15
,
31
,
229
,
247
,
62
,
247
,
111
,
200
,
22
,
124
,
232
,
195
,
255
,
30
,
173
,
107
,
84
,
21
,
182
,
128
,
128
,
0
,
91
,
96
,
99
,
9
,
91
,
216
,
166
,
36
,
250
,
217
,
64
,
169
,
144
,
76
,
102
,
71
,
102
,
34
,
9
,
219
,
100
,
54
,
78
,
158
,
60
,
197
,
100
,
50
,
101
,
97
,
113
,
140
,
84
,
216
,
92
,
96
,
34
,
192
,
18
,
182
,
152
,
179
,
140
,
44
,
140
,
137
,
12
,
84
,
69
,
149
,
168
,
42
,
134
,
128
,
110
,
60
,
222
,
158
,
153
,
87
,
3
,
71
,
184
,
140
,
228
,
50
,
126
,
240
,
83
,
159
,
96
,
235
,
230
,
141
,
140
,
23
,
198
,
31
,
30
,
250
,
126
,
107
,
213
,
0
,
4
,
146
,
144
,
10
,
187
,
176
,
11
,
91
,
204
,
85
,
21
,
182
,
169
,
234
,
177
,
6
,
108
,
33
,
21
,
200
,
28
,
57
,
116
,
144
,
95
,
255
,
231
,
255
,
156
,
47
,
124
,
225
,
139
,
236
,
59
,
240
,
58
,
167
,
166
,
167
,
89
,
141
,
21
,
190
,
241
,
220
,
147
,
252
,
198
,
111
,
254
,
6
,
171
,
171
,
171
,
88
,
198
,
18
,
150
,
128
,
32
,
50
,
104
,
93
,
71
,
102
,
98
,
27
,
91
,
216
,
197
,
234
,
234
,
121
,
134
,
26
,
136
,
81
,
114
,
199
,
125
,
119
,
242
,
209
,
135
,
63
,
198
,
13
,
55
,
220
,
194
,
109
,
247
,
220
,
206
,
134
,
157
,
235
,
25
,
106
,
224
,
248
,
137
,
147
,
252
,
209
,
23
,
190
,
200
,
222
,
189
,
123
,
177
,
140
,
84
,
216
,
198
,
54
,
82
,
97
,
21
,
150
,
168
,
18
,
146
,
32
,
2
,
108
,
102
,
179
,
25
,
173
,
53
,
34
,
130
,
170
,
66
,
18
,
153
,
137
,
109
,
90
,
75
,
86
,
86
,
86
,
153
,
76
,
103
,
128
,
177
,
132
,
85
,
84
,
21
,
118
,
81
,
26
,
48
,
2
,
12
,
22
,
152
,
139
,
102
,
211
,
41
,
6
,
36
,
49
,
235
,
123
,
6
,
9
,
73
,
27
,
171
,
106
,
183
,
36
,
46
,
39
,
185
,
12
,
219
,
188
,
126
,
248
,
248
,
82
,
68
,
190
,
123
,
54
,
155
,
49
,
157
,
78
,
121
,
139
,
109
,
170
,
10
,
219
,
72
,
194
,
54
,
16
,
128
,
33
,
12
,
97
,
164
,
30
,
44
,
206
,
156
,
62
,
197
,
191
,
250
,
173
,
207
,
242
,
229
,
199
,
190
,
194
,
145
,
19
,
199
,
89
,
220
,
182
,
196
,
109
,
15
,
189
,
139
,
59
,
31
,
186
,
135
,
93
,
55
,
93
,
201
,
87
,
158
,
248
,
99
,
246
,
238
,
125
,
22
,
34
,
144
,
196
,
48
,
12
,
16
,
208
,
181
,
70
,
70
,
50
,
234
,
58
,
186
,
174
,
67
,
18
,
182
,
105
,
173
,
209
,
117
,
29
,
163
,
197
,
17
,
91
,
55
,
110
,
99
,
247
,
230
,
107
,
57
,
245
,
250
,
73
,
22
,
218
,
2
,
155
,
182
,
110
,
196
,
36
,
125
,
63
,
112
,
232
,
232
,
81
,
30
,
251
,
242
,
99
,
156
,
57
,
125
,
138
,
57
,
73
,
72
,
133
,
36
,
108
,
35
,
137
,
57
,
27
,
176
,
233
,
251
,
129
,
149
,
213
,
21
,
130
,
160
,
235
,
58
,
34
,
2
,
219
,
68
,
4
,
182
,
177
,
205
,
48
,
12
,
172
,
172
,
172
,
128
,
193
,
22
,
178
,
80
,
21
,
85
,
198
,
6
,
219
,
72
,
194
,
152
,
204
,
196
,
130
,
149
,
149
,
85
,
44
,
97
,
9
,
219
,
216
,
198
,
246
,
66
,
68
,
236
,
204
,
12
,
238
,
184
,
253
,
86
,
222
,
46
,
185
,
140
,
22
,
201
,
66
,
215
,
109
,
25
,
117
,
163
,
91
,
170
,
138
,
213
,
149
,
85
,
134
,
161
,
71
,
42
,
170
,
10
,
73
,
216
,
32
,
137
,
170
,
98
,
24
,
122
,
164
,
194
,
22
,
146
,
24
,
106
,
96
,
152
,
205
,
248
,
234
,
87
,
190
,
204
,
99
,
143
,
125
,
133
,
227
,
111
,
158
,
34
,
70
,
112
,
195
,
237
,
55
,
241
,
137
,
135
,
63
,
201
,
117
,
219
,
111
,
96
,
195
,
120
,
19
,
238
,
204
,
87
,
190
,
242
,
37
,
166
,
147
,
53
,
164
,
98
,
46
,
51
,
105
,
109
,
68
,
215
,
117
,
100
,
54
,
34
,
130
,
185
,
42
,
177
,
115
,
199
,
118
,
182
,
109
,
221
,
68
,
20
,
60
,
245
,
196
,
83
,
252
,
247
,
255
,
228
,
159
,
240
,
248
,
19
,
95
,
231
,
141
,
131
,
7
,
56
,
127
,
102
,
5
,
44
,
108
,
51
,
89
,
235
,
217
,
183
,
239
,
85
,
94
,
126
,
233
,
101
,
192
,
96
,
97
,
21
,
72
,
216
,
6
,
11
,
169
,
8
,
32
,
34
,
56
,
123
,
238
,
28
,
43
,
231
,
87
,
137
,
12
,
50
,
147
,
204
,
32
,
34
,
136
,
8
,
70
,
163
,
17
,
17
,
129
,
108
,
134
,
190
,
71
,
18
,
230
,
2
,
155
,
136
,
0
,
12
,
152
,
32
,
152
,
179
,
77
,
4
,
204
,
102
,
61
,
231
,
206
,
173
,
80
,
18
,
37
,
1
,
70
,
50
,
146
,
136
,
136
,
45
,
139
,
139
,
75
,
128
,
121
,
187
,
228
,
50
,
50
,
147
,
214
,
186
,
43
,
91
,
230
,
214
,
201
,
218
,
132
,
179
,
231
,
206
,
97
,
23
,
85
,
61
,
85
,
3
,
182
,
169
,
42
,
84
,
133
,
36
,
36
,
161
,
18
,
42
,
83
,
37
,
112
,
112
,
228
,
216
,
17
,
254
,
237
,
151
,
31
,
227
,
240
,
145
,
99
,
244
,
253
,
64
,
118
,
29
,
145
,
240
,
252
,
222
,
23
,
57
,
248
,
202
,
33
,
78
,
188
,
113
,
2
,
15
,
226
,
245
,
215
,
95
,
229
,
220
,
217
,
211
,
168
,
138
,
136
,
0
,
130
,
136
,
32
,
72
,
130
,
164
,
101
,
71
,
70
,
99
,
24
,
6
,
110
,
190
,
229
,
22
,
30
,
254
,
190
,
135
,
89
,
236
,
22
,
57
,
119
,
234
,
44
,
125
,
78
,
217
,
184
,
115
,
153
,
55
,
143
,
188
,
201
,
153
,
35
,
103
,
120
,
75
,
73
,
156
,
61
,
187
,
194
,
190
,
125
,
251
,
25
,
102
,
83
,
194
,
194
,
26
,
176
,
132
,
101
,
176
,
176
,
197
,
92
,
100
,
114
,
234
,
228
,
105
,
166
,
147
,
25
,
173
,
117
,
216
,
32
,
153
,
204
,
36
,
34
,
136
,
8
,
50
,
147
,
140
,
128
,
0
,
169
,
176
,
5
,
1
,
132
,
137
,
0
,
12
,
4
,
151
,
68
,
16
,
145
,
156
,
59
,
191
,
194
,
202
,
234
,
20
,
3
,
178
,
40
,
11
,
169
,
168
,
42
,
134
,
161
,
182
,
92
,
125
,
213
,
46
,
170
,
196
,
219
,
117
,
92
,
86
,
96
,
188
,
35
,
34
,
150
,
135
,
26
,
56
,
126
,
236
,
56
,
183
,
220
,
114
,
35
,
153
,
73
,
4
,
12
,
67
,
79
,
102
,
16
,
209
,
48
,
102
,
212
,
141
,
48
,
194
,
6
,
27
,
236
,
224
,
185
,
189
,
207
,
240
,
210
,
43
,
175
,
176
,
186
,
54
,
1
,
139
,
217
,
234
,
148
,
253
,
47
,
191
,
202
,
243
,
123
,
95
,
228
,
232
,
254
,
35
,
140
,
23
,
199
,
108
,
221
,
180
,
153
,
171
,
175
,
186
,
134
,
241
,
226
,
34
,
165
,
129
,
116
,
71
,
70
,
48
,
151
,
153
,
216
,
6
,
76
,
182
,
196
,
54
,
24
,
62
,
240
,
190
,
247
,
243
,
218
,
254
,
3
,
252
,
206
,
231
,
126
,
159
,
129
,
162
,
95
,
233
,
169
,
89
,
193
,
192
,
5
,
1
,
8
,
28
,
244
,
125
,
241
,
230
,
137
,
147
,
172
,
173
,
173
,
177
,
184
,
184
,
136
,
205
,
69
,
182
,
144
,
204
,
37
,
6
,
7
,
135
,
14
,
29
,
161
,
170
,
176
,
133
,
84
,
204
,
217
,
38
,
34
,
152
,
107
,
173
,
163
,
27
,
117
,
188
,
69
,
18
,
115
,
182
,
129
,
192
,
54
,
182
,
201
,
72
,
140
,
48
,
230
,
212
,
201
,
83
,
172
,
156
,
95
,
193
,
6
,
73
,
72
,
66
,
18
,
150
,
32
,
98
,
116
,
231
,
29
,
215
,
243
,
228
,
55
,
158
,
230
,
237
,
146
,
203
,
48
,
6
,
123
,
83
,
85
,
45
,
16
,
193
,
241
,
227
,
199
,
25
,
134
,
162
,
170
,
144
,
10
,
169
,
176
,
65
,
18
,
146
,
40
,
21
,
146
,
40
,
21
,
178
,
88
,
89
,
89
,
225
,
185
,
103
,
159
,
227
,
212
,
169
,
51
,
148
,
4
,
4
,
158
,
193
,
155
,
7
,
78
,
226
,
126
,
96
,
231
,
238
,
109
,
44
,
46
,
45
,
178
,
97
,
113
,
35
,
31
,
250
,
208
,
135
,
25
,
141
,
58
,
36
,
129
,
33
,
34
,
136
,
8
,
34
,
130
,
174
,
235
,
152
,
179
,
13
,
152
,
89
,
63
,
37
,
187
,
224
,
227
,
159
,
120
,
152
,
59
,
239
,
184
,
149
,
24
,
96
,
88
,
27
,
176
,
192
,
24
,
48
,
16
,
204
,
5
,
48
,
235
,
167
,
76
,
167
,
83
,
84
,
133
,
37
,
84
,
3
,
85
,
133
,
45
,
108
,
97
,
204
,
234
,
218
,
132
,
3
,
7
,
14
,
146
,
153
,
216
,
102
,
46
,
2
,
36
,
81
,
85
,
12
,
195
,
128
,
36
,
48
,
96
,
99
,
192
,
50
,
54
,
68
,
4
,
96
,
34
,
130
,
140
,
68
,
18
,
17
,
65
,
68
,
112
,
228
,
232
,
113
,
166
,
179
,
25
,
115
,
54
,
88
,
198
,
54
,
54
,
248
,
130
,
233
,
84
,
216
,
230
,
237
,
146
,
203
,
49
,
16
,
44
,
218
,
110
,
92
,
112
,
242
,
228
,
105
,
206
,
157
,
91
,
193
,
134
,
97
,
24
,
144
,
140
,
45
,
192
,
72
,
162
,
170
,
24
,
106
,
160
,
159
,
13
,
212
,
32
,
206
,
156
,
57
,
195
,
129
,
55
,
14
,
49
,
153
,
204
,
128
,
192
,
4
,
118
,
160
,
85
,
56
,
119
,
104
,
149
,
115
,
135
,
87
,
153
,
157
,
238
,
185
,
255
,
158
,
251
,
216
,
189
,
251
,
106
,
134
,
217
,
0
,
6
,
219
,
216
,
38
,
35
,
136
,
8
,
192
,
68
,
4
,
17
,
80
,
26
,
168
,
26
,
232
,
251
,
158
,
205
,
155
,
55
,
241
,
131
,
63
,
248
,
8
,
123
,
246
,
92
,
205
,
120
,
212
,
8
,
243
,
103
,
204
,
92
,
182
,
100
,
97
,
97
,
204
,
210
,
210
,
34
,
45
,
27
,
37
,
81
,
42
,
228
,
194
,
42
,
130
,
32
,
8
,
50
,
147
,
195
,
71
,
143
,
113
,
224
,
141
,
35
,
188
,
37
,
51
,
201
,
108
,
100
,
38
,
223
,
100
,
250
,
190
,
71
,
50
,
146
,
48
,
6
,
140
,
100
,
44
,
19
,
17
,
200
,
66
,
22
,
65
,
82
,
130
,
3
,
7
,
14
,
33
,
25
,
8
,
230
,
36
,
83
,
37
,
100
,
35
,
41
,
86
,
87
,
2
,
91
,
188
,
93
,
114
,
25
,
14
,
99
,
46
,
8
,
192
,
112
,
250
,
244
,
105
,
14
,
31
,
62
,
140
,
84
,
216
,
92
,
96
,
134
,
97
,
160
,
170
,
176
,
11
,
187
,
176
,
11
,
185
,
48
,
197
,
233
,
51
,
167
,
57
,
123
,
230
,
44
,
85
,
133
,
13
,
182
,
177
,
205
,
156
,
21
,
184
,
96
,
121
,
121
,
29
,
239
,
125
,
223
,
187
,
105
,
45
,
24
,
212
,
51
,
212
,
0
,
54
,
182
,
169
,
18
,
85
,
133
,
108
,
130
,
192
,
54
,
17
,
129
,
45
,
250
,
126
,
198
,
116
,
58
,
225
,
218
,
107
,
119
,
243
,
3
,
159
,
248
,
40
,
215
,
237
,
217
,
205
,
198
,
13
,
203
,
44
,
140
,
71
,
116
,
173
,
49
,
30
,
117
,
172
,
95
,
183
,
196
,
230
,
77
,
235
,
217
,
185
,
99
,
27
,
163
,
209
,
152
,
42
,
33
,
9
,
201
,
24
,
48
,
38
,
34
,
176
,
205
,
179
,
123
,
95
,
100
,
50
,
153
,
162
,
18
,
153
,
13
,
155
,
139
,
34
,
130
,
57
,
219
,
216
,
198
,
54
,
198
,
204
,
89
,
102
,
206
,
22
,
145
,
129
,
44
,
50
,
146
,
204
,
68
,
50
,
43
,
231
,
215
,
120
,
227
,
141
,
67
,
72
,
66
,
18
,
182
,
193
,
198
,
54
,
182
,
176
,
209
,
234
,
116
,
130
,
109
,
222
,
174
,
227
,
114
,
12
,
97
,
144
,
68
,
107
,
73
,
245
,
197
,
171
,
251
,
95
,
229
,
250
,
235
,
247
,
208
,
117
,
141
,
8
,
144
,
76
,
215
,
113
,
129
,
145
,
68
,
102
,
146
,
153
,
72
,
48
,
157
,
174
,
49
,
155
,
205
,
176
,
205
,
37
,
193
,
156
,
109
,
230
,
108
,
115
,
195
,
13
,
215
,
115
,
195
,
13
,
215
,
209
,
15
,
61
,
182
,
201
,
12
,
140
,
1
,
67
,
0
,
1
,
65
,
64
,
152
,
136
,
96
,
78
,
18
,
85
,
3
,
195
,
208
,
35
,
137
,
219
,
239
,
184
,
141
,
8
,
248
,
250
,
227
,
79
,
112
,
236
,
248
,
9
,
38
,
107
,
83
,
34
,
96
,
221
,
210
,
18
,
187
,
118
,
109
,
231
,
198
,
27
,
111
,
32
,
2
,
36
,
161
,
42
,
164
,
98
,
206
,
152
,
108
,
201
,
177
,
99
,
111
,
242
,
252
,
243
,
47
,
19
,
36
,
173
,
5
,
174
,
129
,
8
,
144
,
132
,
109
,
108
,
19
,
17
,
216
,
134
,
224
,
207
,
152
,
136
,
192
,
134
,
136
,
224
,
34
,
131
,
49
,
17
,
65
,
100
,
227
,
196
,
137
,
55
,
57
,
122
,
244
,
4
,
153
,
9
,
24
,
219
,
204
,
101
,
6
,
182
,
177
,
125
,
230
,
137
,
39
,
255
,
4
,
203
,
188
,
93
,
199
,
101
,
132
,
184
,
72
,
37
,
164
,
194
,
14
,
246
,
239
,
127
,
141
,
123
,
78
,
158
,
100
,
219
,
182
,
45
,
216
,
38
,
2
,
164
,
192
,
54
,
153
,
137
,
13
,
146
,
1
,
179
,
176
,
176
,
64
,
107
,
73
,
70
,
80
,
46
,
32
,
136
,
8
,
230
,
194
,
176
,
176
,
48
,
230
,
221
,
15
,
221
,
207
,
186
,
117
,
235
,
24
,
134
,
129
,
139
,
28
,
212
,
208
,
83
,
53
,
166
,
181
,
129
,
140
,
6
,
153
,
72
,
194
,
54
,
115
,
153
,
73
,
85
,
49
,
212
,
128
,
52
,
144
,
4
,
183
,
223
,
118
,
11
,
219
,
183
,
109
,
225
,
181
,
87
,
95
,
227
,
212
,
169
,
147
,
148
,
196
,
250
,
245
,
235
,
185
,
118
,
207
,
53
,
92
,
125
,
205
,
85
,
72
,
61
,
182
,
136
,
4
,
156
,
96
,
46
,
16
,
67
,
153
,
175
,
125
,
253
,
105
,
206
,
156
,
57
,
71
,
4
,
32
,
8
,
131
,
37
,
108
,
19
,
17
,
68
,
4
,
17
,
65
,
102
,
146
,
153
,
88
,
98
,
46
,
50
,
80
,
137
,
200
,
192
,
134
,
200
,
192
,
54
,
150
,
201
,
113
,
240
,
210
,
43
,
251
,
57
,
119
,
126
,
133
,
136
,
68
,
50
,
173
,
129
,
109
,
170
,
68
,
132
,
80
,
213
,
217
,
51
,
167
,
207
,
98
,
155
,
183
,
235
,
184
,
44
,
99
,
3
,
1
,
25
,
193
,
80
,
197
,
241
,
227
,
39
,
121
,
118
,
239
,
243
,
124
,
207
,
7
,
223
,
139
,
84
,
124
,
83
,
210
,
154
,
169
,
42
,
90
,
107
,
216
,
102
,
211
,
198
,
141
,
108
,
219
,
190
,
149
,
215
,
14
,
28
,
164
,
175
,
1
,
108
,
36
,
136
,
128
,
209
,
168
,
113
,
195
,
13
,
123
,
120
,
224
,
254
,
251
,
1
,
35
,
9
,
219
,
68
,
4
,
82
,
33
,
21
,
195
,
80
,
100
,
152
,
200
,
100
,
46
,
34
,
136
,
8
,
50
,
19
,
219
,
168
,
138
,
161
,
6
,
40
,
211
,
50
,
217
,
190
,
99
,
59
,
219
,
183
,
111
,
99
,
168
,
1
,
219
,
180
,
214
,
145
,
25
,
88
,
133
,
36
,
108
,
99
,
27
,
155
,
139
,
50
,
130
,
151
,
247
,
189
,
206
,
51
,
79
,
63
,
135
,
109
,
8
,
232
,
85
,
72
,
98
,
46
,
34
,
152
,
139
,
8
,
108
,
115
,
145
,
161
,
36
,
36
,
33
,
153
,
200
,
32
,
8
,
100
,
1
,
193
,
69
,
1
,
179
,
89
,
207
,
222
,
189
,
47
,
32
,
153
,
174
,
131
,
204
,
64
,
18
,
182
,
177
,
132
,
36
,
151
,
244
,
166
,
44
,
94
,
125
,
253
,
13
,
222
,
46
,
185
,
12
,
217
,
216
,
194
,
50
,
17
,
129
,
36
,
50
,
131
,
103
,
158
,
121
,
150
,
163
,
71
,
143
,
99
,
27
,
73
,
84
,
9
,
169
,
24
,
134
,
1
,
91
,
72
,
98
,
24
,
138
,
165
,
165
,
37
,
222
,
243
,
158
,
247
,
176
,
121
,
243
,
38
,
90
,
38
,
4
,
180
,
46
,
89
,
92
,
90
,
96
,
215
,
149
,
59
,
249
,
232
,
199
,
30
,
102
,
215
,
149
,
87
,
48
,
12
,
3
,
85
,
3
,
195
,
48
,
80
,
53
,
32
,
23
,
170
,
194
,
22
,
146
,
81
,
9
,
201
,
24
,
147
,
145
,
72
,
34
,
34
,
176
,
141
,
74
,
12
,
195
,
64
,
63
,
12
,
12
,
195
,
64
,
97
,
218
,
104
,
196
,
104
,
97
,
129
,
236
,
26
,
146
,
40
,
21
,
182
,
193
,
32
,
153
,
8
,
147
,
25
,
156
,
58
,
117
,
150
,
127
,
251
,
197
,
175
,
194
,
196
,
203
,
222
,
0
,
0
,
32
,
0
,
73
,
68
,
65
,
84
,
48
,
153
,
204
,
192
,
129
,
10
,
178
,
53
,
200
,
32
,
91
,
35
,
34
,
168
,
42
,
190
,
41
,
144
,
68
,
63
,
155
,
17
,
4
,
216
,
216
,
134
,
128
,
32
,
192
,
96
,
155
,
214
,
26
,
135
,
14
,
29
,
101
,
255
,
190
,
215
,
201
,
72
,
34
,
130
,
185
,
136
,
64
,
18
,
6
,
50
,
98
,
5
,
124
,
156
,
119
,
208
,
113
,
25
,
150
,
145
,
189
,
58
,
194
,
131
,
236
,
142
,
11
,
50
,
147
,
179
,
103
,
207
,
243
,
199
,
127
,
252
,
85
,
62
,
254
,
241
,
135
,
89
,
92
,
92
,
4
,
140
,
36
,
34
,
2
,
48
,
54
,
23
,
4
,
153
,
201
,
3
,
15
,
61
,
64
,
180
,
228
,
171
,
127
,
242
,
56
,
7
,
222
,
56
,
192
,
208
,
247
,
236
,
220
,
185
,
131
,
247
,
127
,
224
,
189
,
188
,
251
,
221
,
15
,
32
,
13
,
216
,
198
,
54
,
17
,
193
,
48
,
64
,
63
,
43
,
70
,
157
,
104
,
77
,
68
,
64
,
102
,
34
,
9
,
149
,
32
,
160
,
181
,
164
,
69
,
16
,
54
,
97
,
46
,
178
,
132
,
128
,
4
,
108
,
48
,
16
,
97
,
108
,
161
,
18
,
178
,
137
,
8
,
34
,
128
,
8
,
206
,
173
,
174
,
242
,
249
,
63
,
250
,
18
,
135
,
14
,
31
,
35
,
34
,
32
,
32
,
19
,
100
,
147
,
17
,
244
,
85
,
216
,
69
,
132
,
0
,
49
,
39
,
21
,
195
,
32
,
250
,
161
,
144
,
5
,
17
,
68
,
128
,
36
,
50
,
18
,
27
,
50
,
3
,
8
,
158
,
120
,
226
,
25
,
78
,
159
,
57
,
71
,
107
,
13
,
27
,
36
,
17
,
209
,
32
,
184
,
168
,
164
,
21
,
201
,
71
,
9
,
115
,
57
,
29
,
151
,
97
,
11
,
236
,
73
,
16
,
195
,
208
,
247
,
157
,
36
,
136
,
100
,
238
,
133
,
231
,
95
,
226
,
170
,
43
,
175
,
224
,
129
,
7
,
239
,
67
,
226
,
162
,
136
,
192
,
54
,
146
,
200
,
76
,
32
,
137
,
8
,
30
,
122
,
247
,
131
,
220
,
115
,
207
,
221
,
156
,
58
,
121
,
146
,
126
,
232
,
89
,
183
,
110
,
29
,
219
,
182
,
109
,
165
,
181
,
198
,
48
,
20
,
96
,
108
,
19
,
17
,
128
,
169
,
234
,
169
,
234
,
169
,
161
,
145
,
217
,
40
,
21
,
150
,
176
,
197
,
92
,
70
,
35
,
51
,
201
,
76
,
50
,
2
,
1
,
6
,
74
,
194
,
24
,
59
,
200
,
108
,
88
,
162
,
84
,
216
,
230
,
18
,
19
,
1
,
231
,
206
,
175
,
241
,
232
,
23
,
255
,
152
,
151
,
95
,
218
,
71
,
68
,
32
,
21
,
85
,
3
,
146
,
128
,
64
,
18
,
153
,
9
,
85
,
100
,
54
,
36
,
19
,
17
,
100
,
38
,
4
,
96
,
46
,
138
,
128
,
32
,
152
,
51
,
16
,
1
,
153
,
201
,
137
,
55
,
79
,
243
,
248
,
227
,
79
,
98
,
27
,
219
,
204
,
101
,
6
,
115
,
54
,
72
,
2
,
251
,
84
,
223
,
247
,
199
,
34
,
184
,
172
,
142
,
203
,
176
,
141
,
237
,
53
,
225
,
33
,
91
,
35
,
29
,
24
,
136
,
8
,
250
,
94
,
60
,
246
,
216
,
87
,
89
,
94
,
191
,
142
,
91
,
110
,
185
,
153
,
136
,
96
,
206
,
22
,
6
,
44
,
33
,
7
,
65
,
195
,
54
,
173
,
5
,
59
,
175
,
216
,
78
,
68
,
96
,
7
,
85
,
162
,
74
,
100
,
6
,
182
,
121
,
75
,
132
,
25
,
106
,
160
,
52
,
80
,
53
,
96
,
139
,
104
,
201
,
48
,
12
,
244
,
179
,
158
,
190
,
31
,
144
,
0
,
7
,
56
,
48
,
23
,
68
,
128
,
141
,
37
,
132
,
177
,
19
,
48
,
182
,
145
,
196
,
92
,
4
,
16
,
201
,
177
,
99
,
111
,
242
,
232
,
23
,
255
,
152
,
87
,
95
,
61
,
8
,
52
,
170
,
122
,
108
,
147
,
153
,
64
,
32
,
9
,
219
,
24
,
51
,
87
,
85
,
188
,
69
,
18
,
227
,
81
,
71
,
100
,
16
,
17
,
216
,
38
,
51
,
144
,
64
,
22
,
38
,
176
,
197
,
215
,
30
,
127
,
146
,
131
,
7
,
143
,
16
,
17
,
216
,
38
,
34
,
136
,
8
,
32
,
152
,
139
,
8
,
100
,
191
,
90
,
85
,
231
,
50
,
147
,
203
,
233
,
184
,
140
,
194
,
24
,
175
,
150
,
220
,
119
,
93
,
7
,
97
,
134
,
190
,
199
,
230
,
2
,
115
,
238
,
236
,
10
,
159
,
251
,
189
,
63
,
164
,
74
,
220
,
118
,
219
,
45
,
24
,
145
,
110
,
4
,
16
,
153
,
68
,
4
,
25
,
32
,
21
,
115
,
17
,
65
,
68
,
48
,
103
,
155
,
136
,
64
,
10
,
34
,
130
,
57
,
219
,
68
,
36
,
85
,
197
,
202
,
249
,
21
,
78
,
245
,
103
,
57
,
191
,
178
,
202
,
249
,
243
,
231
,
89
,
89
,
89
,
101
,
58
,
153
,
34
,
137
,
204
,
100
,
212
,
53
,
198
,
227
,
96
,
52
,
78
,
34
,
6
,
108
,
97
,
10
,
28
,
128
,
169
,
18
,
96
,
34
,
146
,
136
,
100
,
117
,
50
,
229
,
229
,
151
,
94
,
228
,
169
,
111
,
236
,
229
,
216
,
241
,
147
,
212
,
32
,
100
,
83
,
37
,
36
,
19
,
145
,
192
,
128
,
36
,
136
,
0
,
67
,
102
,
3
,
68
,
213
,
128
,
109
,
230
,
100
,
131
,
33
,
2
,
236
,
160
,
100
,
34
,
0
,
65
,
100
,
112
,
226
,
196
,
105
,
30
,
125
,
244
,
49
,
134
,
161
,
232
,
186
,
17
,
111
,
169
,
18
,
173
,
5
,
184
,
17
,
36
,
114
,
61
,
127
,
227
,
181
,
55
,
173
,
236
,
123
,
99
,
31
,
151
,
211
,
113
,
25
,
178
,
177
,
125
,
182
,
164
,
105
,
200
,
12
,
253
,
64
,
149
,
176
,
197
,
48
,
12
,
216
,
112
,
252
,
248
,
73
,
126
,
235
,
179
,
191
,
203
,
185
,
115
,
231
,
185
,
251
,
158
,
59
,
24
,
141
,
70
,
204
,
133
,
130
,
204
,
134
,
195
,
204
,
69
,
36
,
32
,
34
,
130
,
185
,
136
,
192
,
134
,
8
,
243
,
22
,
201
,
128
,
120
,
243
,
196
,
97
,
14
,
31
,
62
,
206
,
155
,
39
,
79
,
113
,
230
,
204
,
89
,
214
,
214
,
214
,
152
,
205
,
102
,
72
,
34
,
51
,
25
,
143
,
199
,
44
,
46
,
45
,
177
,
113
,
253
,
50
,
187
,
119
,
111
,
99
,
243
,
166
,
69
,
2
,
136
,
8
,
46
,
49
,
17
,
9
,
209
,
88
,
89
,
89
,
227
,
224
,
27
,
135
,
120
,
102
,
239
,
11
,
28
,
58
,
124
,
148
,
26
,
138
,
97
,
40
,
8
,
192
,
38
,
51
,
145
,
138
,
185
,
190
,
31
,
176
,
69
,
16
,
152
,
192
,
54
,
153
,
137
,
36
,
108
,
99
,
155
,
170
,
194
,
54
,
24
,
164
,
34
,
8
,
34
,
147
,
108
,
13
,
1
,
127
,
248
,
135
,
95
,
226
,
245
,
215
,
14
,
67
,
36
,
182
,
137
,
8
,
46
,
49
,
182
,
137
,
8
,
36
,
203
,
142
,
103
,
143
,
28
,
63
,
202
,
209
,
163
,
199
,
185
,
156
,
142
,
203
,
144
,
10
,
73
,
103
,
236
,
209
,
164
,
170
,
40
,
137
,
170
,
129
,
136
,
36
,
34
,
8
,
32
,
51
,
56
,
119
,
110
,
133
,
223
,
251
,
189
,
207
,
115
,
244
,
232
,
49
,
222
,
243
,
158
,
7
,
217
,
186
,
109
,
11
,
182
,
176
,
193
,
97
,
230
,
34
,
132
,
13
,
17
,
16
,
17
,
68
,
4
,
17
,
193
,
156
,
13
,
182
,
152
,
59
,
117
,
250
,
60
,
123
,
159
,
121
,
153
,
227
,
199
,
223
,
228
,
204
,
153
,
83
,
156
,
59
,
119
,
158
,
213
,
213
,
85
,
250
,
190
,
199
,
54
,
151
,
4
,
27
,
54
,
108
,
96
,
219
,
150
,
205
,
172
,
223
,
208
,
177
,
101
,
243
,
18
,
198
,
204
,
69
,
36
,
231
,
207
,
175
,
113
,
252
,
216
,
155
,
188
,
113
,
248
,
8
,
175
,
189
,
250
,
58
,
167
,
78
,
157
,
161
,
202
,
116
,
93
,
135
,
29
,
100
,
38
,
150
,
17
,
66
,
18
,
96
,
44
,
97
,
11
,
8
,
34
,
2
,
169
,
176
,
185
,
40
,
51
,
177
,
205
,
92
,
70
,
64
,
0
,
17
,
64
,
16
,
153
,
148
,
138
,
209
,
104
,
204
,
51
,
207
,
60
,
207
,
31
,
253
,
209
,
151
,
33
,
18
,
34
,
152
,
139
,
8
,
230
,
34
,
146
,
204
,
100
,
78
,
82
,
95
,
85
,
175
,
172
,
13
,
3
,
239
,
164
,
227
,
50
,
60
,
8
,
171
,
86
,
145
,
78
,
87
,
137
,
214
,
18
,
169
,
97
,
139
,
57
,
89
,
180
,
214
,
33
,
153
,
97
,
86
,
60
,
246
,
229
,
175
,
241
,
242
,
75
,
251
,
121
,
255
,
251
,
30
,
226
,
182
,
219
,
111
,
102
,
253
,
250
,
117
,
148
,
5
,
1
,
4
,
23
,
152
,
185
,
204
,
164
,
69
,
195
,
54
,
182
,
113
,
128
,
129
,
32
,
56
,
123
,
246
,
44
,
175
,
31
,
120
,
157
,
195
,
135
,
142
,
114
,
232
,
208
,
65
,
250
,
126
,
32
,
2
,
140
,
152
,
77
,
123
,
78
,
156
,
56
,
65
,
75
,
184
,
239
,
222
,
187
,
185
,
246
,
158
,
155
,
185
,
98
,
199
,
22
,
44
,
19
,
17
,
180
,
214
,
120
,
241
,
165
,
215
,
248
,
252
,
191
,
249
,
34
,
167
,
78
,
157
,
166
,
4
,
153
,
73
,
107
,
73
,
68
,
146
,
145
,
200
,
34
,
34
,
24
,
84
,
188
,
165
,
101
,
67
,
37
,
186
,
110
,
68
,
85
,
81
,
42
,
36
,
49
,
12
,
34
,
34
,
200
,
76
,
134
,
97
,
64
,
50
,
221
,
66
,
199
,
210
,
226
,
24
,
91
,
100
,
4
,
115
,
153
,
141
,
195
,
71
,
79
,
240
,
155
,
255
,
231
,
191
,
226
,
236
,
217
,
85
,
50
,
19
,
219
,
204
,
217
,
38
,
51
,
185
,
196
,
68
,
6
,
17
,
76
,
92
,
58
,
103
,
204
,
59
,
233
,
184
,
12
,
169
,
168
,
170
,
169
,
170
,
142
,
141
,
198
,
99
,
196
,
55
,
85
,
21
,
125
,
223
,
19
,
17
,
68
,
4
,
198
,
84
,
137
,
3
,
7
,
14
,
241
,
47
,
14
,
255
,
54
,
187
,
119
,
95
,
201
,
61
,
247
,
220
,
193
,
173
,
183
,
220
,
204
,
150
,
173
,
155
,
232
,
186
,
134
,
44
,
34
,
18
,
75
,
252
,
223
,
213
,
193
,
91
,
240
,
231
,
247
,
125
,
223
,
245
,
231
,
235
,
253
,
254
,
252
,
254
,
199
,
213
,
238
,
234
,
96
,
157
,
173
,
147
,
79
,
137
,
92
,
199
,
78
,
161
,
101
,
154
,
50
,
147
,
146
,
25
,
66
,
153
,
41
,
229
,
152
,
97
,
114
,
65
,
153
,
97
,
166
,
189
,
229
,
146
,
43
,
110
,
24
,
46
,
152
,
1
,
238
,
128
,
14
,
195
,
5
,
164
,
153
,
0
,
197
,
197
,
83
,
26
,
55
,
208
,
184
,
57
,
214
,
137
,
237
,
38
,
150
,
101
,
71
,
138
,
117
,
176
,
180
,
90
,
89
,
210
,
106
,
87
,
218
,
243
,
254
,
79
,
191
,
239
,
231
,
253
,
126
,
177
,
63
,
41
,
10
,
30
,
198
,
146
,
108
,
147
,
148
,
244
,
241
,
88
,
92
,
72
,
194
,
221
,
72
,
66
,
136
,
182
,
185
,
251
,
206
,
59
,
120
,
226
,
177
,
135
,
184
,
117
,
227
,
58
,
135
,
7
,
55
,
184
,
120
,
233
,
45
,
118
,
118
,
246
,
56
,
123
,
246
,
12
,
203
,
178
,
240
,
224
,
67
,
31
,
225
,
95
,
249
,
233
,
191
,
196
,
103
,
62
,
253
,
41
,
238
,
190
,
231
,
110
,
70
,
6
,
221
,
69
,
100
,
112
,
245
,
234
,
77
,
190
,
244
,
171
,
191
,
197
,
235
,
111
,
92
,
100
,
123
,
123
,
133
,
36
,
64
,
72
,
193
,
200
,
4
,
9
,
33
,
108
,
3
,
166
,
102
,
177
,
209
,
110
,
218
,
6
,
140
,
221
,
204
,
57
,
217
,
144
,
68
,
85
,
81
,
85
,
188
,
39
,
34
,
216
,
221
,
219
,
5
,
27
,
99
,
66
,
201
,
173
,
131
,
35
,
254
,
247
,
191
,
247
,
69
,
94
,
120
,
241
,
28
,
82
,
34
,
9
,
73
,
188
,
199
,
54
,
146
,
216
,
176
,
27
,
155
,
19
,
211
,
39
,
182
,
121
,
63
,
131
,
247
,
113
,
243
,
230
,
225
,
209
,
222
,
222
,
238
,
69
,
4
,
53
,
27
,
108
,
64
,
68
,
4
,
153
,
73
,
85
,
1
,
162
,
170
,
145
,
132
,
109
,
142
,
79
,
78
,
120
,
241
,
197
,
115
,
188
,
248
,
226
,
75
,
220
,
117
,
247
,
157
,
60
,
242
,
200
,
195
,
60
,
246
,
216
,
35
,
60
,
112
,
223
,
125
,
220
,
121
,
215
,
89
,
118
,
118
,
86
,
172
,
198
,
32
,
51
,
201
,
76
,
66
,
162
,
108
,
108
,
179
,
26
,
193
,
103
,
63
,
251
,
41
,
62
,
246
,
177
,
135
,
249
,
169
,
191
,
244
,
19
,
60
,
255
,
194
,
139
,
124
,
243
,
155
,
207
,
241
,
246
,
229
,
235
,
220
,
127
,
255
,
93
,
252
,
244
,
79
,
255
,
11
,
60
,
252
,
224
,
253
,
40
,
205
,
156
,
107
,
114
,
236
,
160
,
16
,
54
,
60
,
253
,
141
,
103
,
120
,
243
,
205
,
75
,
140
,
76
,
108
,
147
,
153
,
72
,
162
,
187
,
209
,
106
,
240
,
46
,
209
,
221
,
72
,
65
,
68
,
96
,
160
,
187
,
17
,
208
,
109
,
48
,
216
,
38
,
51
,
233
,
158
,
72
,
98
,
163
,
187
,
137
,
16
,
123
,
123
,
187
,
236
,
237
,
238
,
210
,
109
,
20
,
226
,
120
,
61
,
249
,
194
,
23
,
126
,
133
,
175
,
124
,
245
,
235
,
68
,
36
,
27
,
221
,
77
,
68
,
176
,
33
,
137
,
119
,
137
,
238
,
166
,
91
,
140
,
49
,
144
,
132
,
109
,
222
,
207
,
224
,
125
,
60
,
244
,
209
,
251
,
234
,
228
,
120
,
253
,
90
,
85
,
209
,
213
,
68
,
6
,
85
,
133
,
16
,
32
,
64
,
188
,
203
,
128
,
137
,
16
,
115
,
26
,
133
,
168
,
130
,
75
,
23
,
223
,
230
,
194
,
27
,
151
,
248
,
234
,
87
,
190
,
206
,
246
,
246
,
54
,
219
,
219
,
43
,
78
,
157
,
222
,
231
,
212
,
222
,
62
,
35
,
7
,
247
,
220
,
115
,
55
,
255
,
242
,
95
,
254
,
139
,
220
,
255
,
192
,
71
,
0
,
179
,
49
,
107
,
178
,
44
,
199
,
236
,
238
,
38
,
31
,
255
,
216
,
131
,
156
,
218
,
31
,
60
,
243
,
204
,
243
,
220
,
243
,
145
,
59
,
217
,
221
,
9
,
14
,
15
,
111
,
161
,
16
,
85
,
133
,
27
,
132
,
185
,
114
,
237
,
58
,
223
,
120
,
250
,
15
,
88
,
102
,
177
,
181
,
21
,
136
,
160
,
219
,
128
,
201
,
4
,
204
,
109
,
166
,
170
,
168
,
106
,
196
,
109
,
130
,
174
,
162
,
13
,
8
,
20
,
66
,
36
,
217
,
201
,
156
,
197
,
156
,
133
,
109
,
36
,
145
,
153
,
116
,
55
,
119
,
222
,
121
,
150
,
221
,
189
,
29
,
114
,
12
,
110
,
221
,
58
,
228
,
239
,
125
,
225
,
87
,
248
,
245
,
95
,
255
,
50
,
221
,
38
,
34
,
216
,
176
,
205
,
134
,
36
,
254
,
31
,
70
,
18
,
54
,
216
,
2
,
2
,
73
,
188
,
159
,
193
,
247
,
241
,
235
,
191
,
253
,
59
,
252
,
107
,
63
,
251
,
51
,
148
,
253
,
138
,
219
,
29
,
82
,
148
,
27
,
73
,
84
,
55
,
85
,
19
,
219
,
72
,
65
,
183
,
177
,
65
,
10
,
4
,
184
,
77
,
42
,
32
,
204
,
156
,
19
,
12
,
135
,
71
,
39
,
220
,
188
,
117
,
200
,
197
,
75
,
87
,
216
,
168
,
42
,
108
,
243
,
135
,
223
,
126
,
158
,
159
,
255
,
249
,
127
,
155
,
143
,
127
,
236
,
81
,
170
,
38
,
115
,
46
,
204
,
229
,
132
,
147
,
245
,
49
,
235
,
245
,
154
,
213
,
74
,
124
,
226
,
19
,
15
,
33
,
193
,
250
,
228
,
132
,
145
,
43
,
150
,
165
,
56
,
58
,
58
,
38
,
115
,
197
,
214
,
106
,
197
,
243
,
207
,
189
,
196
,
197
,
75
,
111
,
99
,
139
,
110
,
19
,
1
,
2
,
186
,
27
,
9
,
102
,
21
,
18
,
84
,
21
,
96
,
64
,
84
,
53
,
179
,
138
,
141
,
170
,
194
,
109
,
170
,
10
,
219
,
108
,
100
,
38
,
85
,
69
,
119
,
227
,
110
,
78
,
214
,
107
,
238
,
190
,
231
,
46
,
118
,
119
,
118
,
185
,
116
,
233
,
10
,
255
,
219
,
231
,
255
,
1
,
95
,
253
,
218
,
83
,
116
,
155
,
136
,
192
,
54
,
17
,
129
,
36
,
108
,
99
,
27
,
73
,
72
,
2
,
68
,
102
,
18
,
145
,
216
,
148
,
77
,
217
,
226
,
253
,
12
,
222
,
199
,
178
,
94
,
48
,
188
,
92
,
85
,
107
,
208
,
78
,
117
,
33
,
5
,
115
,
46
,
216
,
166
,
219
,
216
,
147
,
170
,
34
,
36
,
26
,
48
,
208
,
93
,
8
,
49
,
103
,
97
,
243
,
142
,
136
,
160
,
187
,
145
,
68
,
68
,
176
,
81
,
85
,
156
,
123
,
229
,
85
,
126
,
225
,
239
,
252
,
93
,
254
,
195
,
191
,
241
,
239
,
243
,
177
,
39
,
62
,
74
,
119
,
115
,
116
,
124
,
204
,
141
,
27
,
55
,
185
,
114
,
229
,
42
,
151
,
47
,
95
,
225
,
230
,
205
,
27
,
44
,
203
,
100
,
181
,
218
,
102
,
103
,
123
,
155
,
179
,
103
,
239
,
228
,
145
,
71
,
30
,
225
,
244
,
233
,
51
,
28
,
28
,
28
,
243
,
244
,
55
,
158
,
97
,
89
,
79
,
198
,
24
,
116
,
21
,
206
,
32
,
98
,
133
,
16
,
99
,
12
,
220
,
205
,
106
,
123
,
11
,
27
,
214
,
235
,
53
,
17
,
73
,
183
,
17
,
194
,
54
,
115
,
22
,
182
,
89
,
150
,
133
,
238
,
198
,
54
,
18
,
239
,
152
,
115
,
98
,
155
,
173
,
213
,
138
,
71
,
30
,
125
,
152
,
103
,
190
,
253
,
34
,
159
,
255
,
252
,
63
,
224
,
197
,
23
,
207
,
33
,
9
,
73
,
216
,
70
,
18
,
221
,
77
,
68
,
16
,
17
,
116
,
55
,
146
,
176
,
141
,
36
,
170
,
10
,
41
,
144
,
116
,
36
,
233
,
8
,
204
,
251
,
73
,
222
,
199
,
195
,
15
,
63
,
68
,
119
,
239
,
68
,
232
,
231
,
16
,
119
,
180
,
193
,
221
,
84
,
23
,
93
,
13
,
24
,
119
,
99
,
140
,
13
,
203
,
178
,
96
,
27
,
219
,
216
,
96
,
55
,
118
,
99
,
131
,
219
,
84
,
55
,
182
,
145
,
132
,
109
,
108
,
99
,
224
,
250
,
245
,
155
,
188
,
114
,
254
,
187
,
60
,
242
,
200
,
67
,
220
,
115
,
207
,
93
,
172
,
215
,
199
,
92
,
185
,
114
,
133
,
215
,
94
,
191
,
192
,
133
,
11
,
111
,
241
,
246
,
219
,
215
,
184
,
121
,
243
,
144
,
245
,
201
,
194
,
206
,
206
,
54
,
15
,
61
,
120
,
63
,
15
,
63
,
252
,
16
,
251
,
251
,
167
,
248
,
218
,
215
,
158
,
226
,
235
,
95
,
255
,
38
,
153
,
43
,
114
,
12
,
144
,
176
,
27
,
183
,
81
,
136
,
136
,
96
,
35
,
51
,
177
,
161
,
170
,
153
,
115
,
34
,
192
,
54
,
146
,
152
,
53
,
169
,
106
,
16
,
116
,
155
,
170
,
162
,
202
,
84
,
21
,
221
,
13
,
8
,
219
,
68
,
4
,
191
,
246
,
143
,
127
,
139
,
215
,
95
,
127
,
147
,
136
,
64
,
18
,
239
,
145
,
68
,
68
,
176
,
33
,
9
,
219
,
72
,
34
,
51
,
201
,
76
,
192
,
128
,
136
,
136
,
55
,
109
,
255
,
79
,
146
,
110
,
28
,
28
,
28
,
240
,
253
,
12
,
62
,
64
,
87
,
95
,
4
,
93
,
168
,
238
,
7
,
187
,
27
,
219
,
100
,
14
,
108
,
179
,
177
,
120
,
66
,
55
,
85
,
133
,
221
,
216
,
198
,
54
,
110
,
35
,
132
,
16
,
229
,
162
,
91
,
216
,
102
,
163
,
187
,
145
,
132
,
36
,
82
,
73
,
35
,
206
,
157
,
251
,
46
,
191
,
240
,
119
,
62
,
207
,
127
,
240
,
55
,
254
,
61
,
30
,
126
,
240
,
35
,
60
,
248
,
224
,
3
,
108
,
111
,
111
,
241
,
224
,
3
,
247
,
113
,
116
,
120
,
4
,
152
,
221
,
189
,
93
,
206
,
158
,
61
,
195
,
153
,
59
,
78
,
179
,
179
,
189
,
197
,
235
,
175
,
95
,
228
,
119
,
191
,
242
,
251
,
44
,
179
,
136
,
48
,
138
,
193
,
24
,
131
,
170
,
66
,
17
,
108
,
116
,
155
,
204
,
192
,
54
,
221
,
141
,
109
,
192
,
180
,
205
,
70
,
117
,
19
,
145
,
40
,
26
,
181
,
144
,
64
,
18
,
17
,
98
,
189
,
94
,
179
,
209
,
93
,
172
,
215
,
39
,
124
,
235
,
155
,
207
,
18
,
17
,
140
,
49
,
248
,
94
,
182
,
177
,
141
,
36
,
54
,
108
,
35
,
137
,
136
,
0
,
68
,
85
,
49
,
70
,
16
,
17
,
216
,
190
,
105
,
251
,
150
,
36
,
222
,
79
,
242
,
62
,
62
,
250
,
208
,
131
,
92
,
189
,
118
,
125
,
189
,
183
,
191
,
247
,
87
,
36
,
253
,
57
,
219
,
96
,
110
,
51
,
54
,
116
,
23
,
115
,
78
,
34
,
130
,
238
,
166
,
170
,
217
,
48
,
198
,
24
,
219
,
216
,
70
,
10
,
186
,
141
,
36
,
222
,
83
,
85
,
216
,
102
,
195
,
54
,
182
,
185
,
126
,
253
,
38
,
231
,
206
,
189
,
202
,
71
,
31
,
126
,
136
,
187
,
238
,
60
,
139
,
4
,
91
,
219
,
43
,
246
,
246
,
119
,
216
,
223
,
223
,
229
,
212
,
169
,
83
,
236
,
237
,
237
,
177
,
187
,
183
,
207
,
193
,
193
,
49
,
191
,
252
,
203
,
95
,
226
,
252
,
171
,
111
,
144
,
25
,
216
,
38
,
35
,
177
,
205
,
198
,
106
,
12
,
54
,
50
,
147
,
204
,
164
,
187
,
232
,
54
,
27
,
17
,
73
,
85
,
81
,
53
,
193
,
80
,
221
,
116
,
55
,
179
,
138
,
170
,
137
,
36
,
230
,
44
,
186
,
155
,
238
,
166
,
170
,
144
,
196
,
24
,
3
,
73
,
116
,
55
,
27
,
221
,
205
,
134
,
36
,
222
,
35
,
9
,
73
,
108
,
72
,
66
,
2
,
73
,
68
,
136
,
49
,
18
,
41
,
158
,
94
,
175
,
215
,
191
,
152
,
153
,
125
,
112
,
112
,
192
,
247
,
147
,
188
,
143
,
143
,
126
,
244
,
33
,
238
,
187
,
239
,
94
,
47
,
203
,
242
,
99
,
153
,
227
,
103
,
170
,
138
,
57
,
39
,
221
,
205
,
70
,
87
,
211
,
221
,
216
,
208
,
221
,
216
,
77
,
85
,
99
,
155
,
119
,
24
,
12
,
216
,
198
,
136
,
141
,
170
,
162
,
187
,
233
,
110
,
54
,
108
,
51
,
231
,
68
,
18
,
27
,
87
,
175
,
222
,
224
,
249
,
231
,
191
,
195
,
238
,
222
,
46
,
31
,
249
,
200
,
221
,
172
,
182
,
86
,
100
,
14
,
182
,
183
,
118
,
216
,
218
,
222
,
1
,
39
,
175
,
191
,
246
,
22
,
255
,
215
,
255
,
249
,
155
,
60
,
255
,
252
,
75
,
40
,
196
,
70
,
230
,
64
,
33
,
16
,
140
,
49
,
104
,
155
,
80
,
96
,
67
,
102
,
130
,
1
,
1
,
54
,
221
,
141
,
219
,
216
,
166
,
170
,
17
,
48
,
171
,
88
,
47
,
107
,
170
,
154
,
13
,
155
,
119
,
84
,
21
,
221
,
77
,
102
,
34
,
9
,
73
,
108
,
216
,
70
,
18
,
182
,
249
,
94
,
17
,
129
,
109
,
36
,
177
,
33
,
9
,
73
,
216
,
38
,
34
,
1
,
125
,
233
,
210
,
165
,
75
,
255
,
112
,
127
,
127
,
159
,
131
,
131
,
3
,
190
,
159
,
228
,
125
,
124
,
247
,
181
,
215
,
121
,
224
,
254
,
251
,
232
,
246
,
61
,
171
,
213
,
248
,
183
,
128
,
49
,
70
,
82
,
213
,
204
,
185
,
176
,
209
,
213
,
108
,
216
,
96
,
155
,
119
,
25
,
119
,
99
,
27
,
187
,
193
,
6
,
137
,
110
,
211
,
221
,
116
,
55
,
182
,
121
,
143
,
109
,
54
,
36
,
1
,
230
,
224
,
224
,
144
,
231
,
158
,
251
,
14
,
175
,
189
,
246
,
38
,
235
,
165
,
88
,
102
,
115
,
229
,
234
,
77
,
190
,
243
,
226
,
119
,
249
,
202
,
239
,
126
,
131
,
223
,
253
,
202
,
239
,
115
,
249
,
242
,
85
,
20
,
65
,
230
,
224
,
61
,
54
,
100
,
4
,
57
,
6
,
27
,
145
,
73
,
68
,
16
,
18
,
109
,
35
,
137
,
57
,
139
,
234
,
6
,
137
,
147
,
147
,
53
,
85
,
147
,
89
,
69
,
119
,
209
,
54
,
32
,
230
,
156
,
128
,
88
,
150
,
133
,
57
,
39
,
182
,
89
,
173
,
86
,
124
,
175
,
136
,
192
,
54
,
146
,
136
,
8
,
54
,
108
,
179
,
33
,
137
,
136
,
96
,
35
,
66
,
68
,
136
,
136
,
96
,
140
,
193
,
109
,
191
,
116
,
230
,
204
,
153
,
175
,
85
,
21
,
7
,
7
,
7
,
124
,
63
,
131
,
15
,
96
,
27
,
219
,
207
,
117
,
251
,
114
,
68
,
62
,
184
,
44
,
107
,
34
,
68
,
102
,
82
,
85
,
204
,
57
,
65
,
98
,
206
,
194
,
110
,
54
,
108
,
110
,
19
,
118
,
97
,
155
,
101
,
78
,
20
,
73
,
85
,
209
,
221
,
216
,
70
,
18
,
182
,
169
,
42
,
50
,
147
,
170
,
162
,
187
,
217
,
144
,
130
,
101
,
22
,
207
,
254
,
225
,
119
,
120
,
238
,
249
,
151
,
89
,
173
,
2
,
41
,
49
,
224
,
134
,
72
,
145
,
17
,
68
,
4
,
138
,
6
,
195
,
200
,
32
,
199
,
0
,
137
,
170
,
98
,
181
,
90
,
33
,
9
,
219
,
108
,
68
,
136
,
245
,
122
,
193
,
109
,
170
,
38
,
110
,
35
,
241
,
142
,
49
,
6
,
179
,
38
,
27
,
221
,
133
,
109
,
192
,
72
,
194
,
54
,
99
,
12
,
54
,
50
,
147
,
238
,
230
,
61
,
17
,
193
,
123
,
36
,
97
,
155
,
238
,
102
,
140
,
129
,
109
,
36
,
33
,
5
,
182
,
217
,
144
,
226
,
150
,
221
,
223
,
182
,
205
,
165
,
75
,
151
,
120
,
63
,
131
,
15
,
48
,
231
,
194
,
156
,
245
,
250
,
24
,
227
,
249
,
49
,
242
,
193
,
57
,
11
,
219
,
8
,
17
,
10
,
222
,
147
,
25
,
204
,
217
,
72
,
252
,
49
,
41
,
80
,
192
,
24
,
131
,
101
,
54
,
146
,
136
,
8
,
54
,
108
,
179
,
209
,
221
,
68
,
4
,
146
,
88
,
150
,
197
,
85
,
245
,
150
,
237
,
206
,
204
,
123
,
51
,
51
,
186
,
77
,
21
,
183
,
53
,
118
,
147
,
153
,
96
,
176
,
141
,
109
,
236
,
38
,
35
,
105
,
55
,
234
,
194
,
134
,
213
,
24
,
72
,
162
,
187
,
193
,
70
,
219
,
91
,
128
,
145
,
192
,
128
,
20
,
156
,
44
,
199
,
8
,
144
,
68
,
119
,
131
,
65
,
10
,
64
,
216
,
32
,
129
,
36
,
108
,
19
,
17
,
108
,
216
,
70
,
18
,
182
,
217
,
144
,
132
,
109
,
170
,
138
,
204
,
68
,
18
,
146
,
216
,
136
,
72
,
192
,
216
,
77
,
166
,
0
,
211
,
61
,
223
,
236
,
230
,
5
,
219
,
124
,
144
,
224
,
3
,
44
,
179
,
249
,
115
,
159
,
254
,
228
,
141
,
170
,
249
,
7
,
85
,
133
,
221
,
108
,
204
,
42
,
102
,
53
,
57
,
6
,
82
,
16
,
145
,
216
,
166
,
219
,
108
,
216
,
166
,
186
,
233
,
110
,
20
,
129
,
36
,
108
,
99
,
27
,
219
,
116
,
55
,
203
,
178
,
176
,
81
,
85
,
172
,
215
,
107
,
159
,
156
,
156
,
252
,
175
,
221
,
253
,
87
,
151
,
101
,
249
,
217
,
101
,
89
,
254
,
251
,
170
,
90
,
115
,
219
,
156
,
69
,
85
,
209
,
109
,
54
,
50
,
131
,
119
,
216
,
132
,
18
,
73
,
108
,
84
,
53
,
96
,
12
,
204
,
101
,
193
,
54
,
17
,
129
,
36
,
108
,
35
,
5
,
237
,
198
,
110
,
34
,
130
,
234
,
102
,
163
,
186
,
152
,
85
,
44
,
75
,
209
,
13
,
17
,
201
,
156
,
147
,
245
,
122
,
189
,
72
,
42
,
254
,
72
,
85
,
97
,
155
,
13
,
219
,
116
,
55
,
182
,
249
,
127
,
179
,
161
,
219
,
216
,
16
,
17
,
68
,
4
,
153
,
201
,
109
,
79
,
207
,
89
,
23
,
108
,
243
,
65
,
146
,
15
,
112
,
225
,
194
,
155
,
156
,
58
,
117
,
138
,
110
,
223
,
3
,
250
,
55
,
193
,
17
,
18
,
27
,
85
,
141
,
13
,
221
,
133
,
128
,
57
,
11
,
219
,
116
,
55
,
118
,
35
,
9
,
27
,
108
,
3
,
98
,
195
,
54
,
203
,
178
,
176
,
145
,
153
,
100
,
38
,
221
,
205
,
241
,
241
,
241
,
83
,
221
,
253
,
183
,
186
,
251
,
57
,
73
,
151
,
186
,
251
,
183
,
129
,
251
,
199
,
24
,
127
,
62
,
51
,
177
,
141
,
13
,
99
,
36
,
96
,
36
,
145
,
99
,
96
,
192
,
109
,
16
,
100
,
36
,
25
,
129
,
34
,
64
,
16
,
17
,
100
,
36
,
17
,
65
,
119
,
99
,
155
,
245
,
122
,
205
,
198
,
156
,
147
,
141
,
170
,
194
,
109
,
204
,
134
,
168
,
42
,
186
,
155
,
170
,
98
,
206
,
249
,
173
,
204
,
140
,
219
,
78
,
69
,
4
,
146
,
176
,
205
,
134
,
36
,
34
,
130
,
13
,
73
,
108
,
72
,
66
,
18
,
27
,
17
,
66
,
18
,
99
,
36
,
153
,
1
,
8
,
219
,
127
,
123
,
140
,
252
,
202
,
155
,
111
,
94
,
228
,
131
,
4
,
31
,
98
,
189
,
94
,
152
,
115
,
126
,
203
,
246
,
91
,
99
,
12
,
218
,
102
,
206
,
201
,
134
,
36
,
164
,
160
,
109
,
192
,
108
,
216
,
141
,
13
,
221
,
102
,
195
,
54
,
115
,
78
,
108
,
99
,
155
,
49
,
6
,
146
,
168
,
42
,
150
,
101
,
97
,
89
,
22
,
108
,
255
,
221
,
204
,
60
,
47
,
9
,
219
,
68
,
196
,
205
,
170
,
250
,
47
,
215
,
203
,
250
,
133
,
170
,
66
,
18
,
99
,
36
,
54
,
216
,
220
,
38
,
36
,
177
,
97
,
160
,
102
,
33
,
137
,
182
,
169
,
154
,
116
,
27
,
12
,
109
,
51
,
231
,
100
,
206
,
73
,
85
,
147
,
145
,
116
,
55
,
17
,
65
,
102
,
82
,
213
,
28
,
31
,
31
,
83
,
213
,
216
,
166
,
187
,
169
,
42
,
186
,
251
,
0
,
248
,
98
,
132
,
150
,
204
,
68
,
18
,
153
,
137
,
36
,
36
,
33
,
9
,
219
,
72
,
34
,
34
,
200
,
76
,
34
,
130
,
204
,
100
,
181
,
74
,
50
,
69
,
166
,
200
,
12
,
64
,
68
,
196
,
5
,
219
,
191
,
93
,
85
,
124
,
152
,
224
,
67
,
216
,
80
,
213
,
175
,
116
,
247
,
75
,
199
,
71
,
199
,
204
,
57
,
201
,
28
,
72
,
66
,
2
,
219
,
204
,
57
,
233
,
54
,
221
,
77
,
183
,
233
,
110
,
186
,
139
,
170
,
162
,
187
,
137
,
16
,
115
,
78
,
230
,
156
,
72
,
194
,
54
,
146
,
216
,
168
,
170
,
235
,
192
,
151
,
185
,
205
,
54
,
27
,
22
,
216
,
126
,
177
,
170
,
254
,
143
,
238
,
102
,
67
,
18
,
221
,
13
,
4
,
82
,
178
,
94
,
79
,
92
,
32
,
5
,
17
,
194
,
54
,
146
,
48
,
48
,
198
,
32
,
50
,
201
,
76
,
186
,
155
,
185
,
20
,
235
,
245
,
194
,
122
,
89
,
232
,
106
,
220
,
102
,
206
,
137
,
109
,
36
,
192
,
102
,
206
,
201
,
187
,
68
,
151
,
191
,
177
,
202
,
124
,
54
,
34
,
238
,
144
,
196
,
134
,
109
,
34
,
130
,
136
,
32
,
34
,
144
,
132
,
109
,
34
,
130
,
136
,
32
,
66
,
216
,
133
,
4
,
146
,
200
,
12
,
64
,
100
,
174
,
144
,
242
,
203
,
115
,
214
,
243
,
32
,
62
,
76
,
240
,
33
,
186
,
155
,
175
,
63
,
245
,
244
,
77
,
219
,
79
,
101
,
38
,
182
,
177
,
77
,
205
,
133
,
101
,
89
,
176
,
141
,
36
,
54
,
236
,
70
,
18
,
221
,
141
,
36
,
54
,
34
,
196
,
156
,
133
,
36
,
36
,
209
,
221
,
72
,
66
,
18
,
182
,
185
,
237
,
130
,
237
,
215
,
248
,
30
,
174
,
102
,
140
,
97
,
204
,
175
,
74
,
58
,
144
,
196
,
134
,
36
,
186
,
155
,
182
,
17
,
2
,
9
,
187
,
81
,
4
,
237
,
38
,
51
,
201
,
76
,
186
,
155
,
174
,
162
,
187
,
168
,
106
,
34
,
19
,
108
,
186
,
139
,
182
,
169
,
46
,
108
,
112
,
55
,
182
,
105
,
55
,
138
,
96
,
140
,
193
,
109
,
221
,
230
,
239
,
175
,
86
,
91
,
91
,
224
,
59
,
248
,
35
,
146
,
120
,
143
,
36
,
34
,
130
,
204
,
228
,
93
,
198
,
54
,
17
,
137
,
20
,
72
,
34
,
34
,
1
,
35
,
105
,
13
,
124
,
97
,
127
,
255
,
212
,
73
,
55
,
31
,
42
,
248
,
16
,
221
,
205
,
191
,
244
,
23
,
255
,
188
,
171
,
230
,
87
,
21
,
90
,
86
,
171
,
65
,
8
,
20
,
129
,
36
,
170
,
38
,
27
,
182
,
145
,
132
,
109
,
108
,
99
,
243
,
142
,
101
,
153
,
116
,
55
,
27
,
17
,
129
,
36
,
36
,
97
,
27
,
219
,
84
,
213
,
53
,
219
,
87
,
186
,
155
,
199
,
31
,
251
,
24
,
143
,
63
,
250
,
24
,
143
,
63
,
250
,
152
,
94
,
125
,
234
,
89
,
34
,
226
,
5
,
219
,
175
,
74
,
66
,
18
,
146
,
216
,
112
,
55
,
10
,
97
,
55
,
180
,
145
,
130
,
136
,
100
,
206
,
137
,
219
,
84
,
21
,
203
,
156
,
84
,
53
,
96
,
186
,
27
,
219
,
140
,
49
,
176
,
77
,
119
,
51
,
231
,
164
,
109
,
186
,
77
,
87
,
51
,
151
,
133
,
245
,
122
,
205
,
178
,
44
,
47
,
111
,
111
,
109
,
125
,
25
,
241
,
241
,
188
,
45
,
66
,
68
,
4
,
153
,
73
,
102
,
146
,
153
,
72
,
66
,
18
,
239
,
145
,
32
,
51
,
136
,
72
,
108
,
144
,
68
,
119
,
3
,
194
,
237
,
111
,
206
,
57
,
127
,
227
,
228
,
228
,
132
,
183
,
222
,
186
,
196
,
135
,
9
,
62
,
196
,
55
,
158
,
254
,
22
,
115
,
22
,
115
,
246
,
83
,
115
,
214
,
155
,
110
,
83
,
221
,
128
,
144
,
130
,
136
,
68
,
18
,
171
,
213
,
138
,
213
,
88
,
177
,
33
,
137
,
170
,
162
,
187
,
17
,
16
,
17
,
116
,
55
,
221
,
77
,
119
,
211
,
221
,
116
,
55
,
2
,
36
,
85
,
68
,
244
,
103
,
126
,
236
,
211
,
82
,
207
,
196
,
94
,
185
,
123
,
235
,
167
,
254
,
218
,
207
,
238
,
158
,
57
,
117
,
199
,
173
,
174
,
122
,
163
,
187
,
145
,
132
,
109
,
36
,
17
,
17
,
72
,
66
,
1
,
229
,
166
,
170
,
232
,
42
,
150
,
101
,
97
,
35
,
51
,
201
,
76
,
192
,
216
,
102
,
206
,
201
,
172
,
162
,
102
,
97
,
27
,
219
,
116
,
155
,
89
,
141
,
9
,
20
,
73
,
102
,
98
,
27
,
236
,
95
,
191
,
99
,
127
,
239
,
138
,
228
,
79
,
70
,
4
,
82
,
176
,
97
,
155
,
141
,
170
,
162
,
187
,
145
,
68
,
68
,
32
,
9
,
16
,
27
,
146
,
201
,
12
,
34
,
2
,
99
,
66
,
242
,
106
,
140
,
207
,
239
,
140
,
173
,
139
,
221
,
205
,
15
,
34
,
248
,
1
,
116
,
55
,
115
,
206
,
87
,
109
,
255
,
65
,
85
,
97
,
155
,
238
,
194
,
54
,
153
,
129
,
109
,
108
,
83
,
221
,
100
,
38
,
99
,
12
,
70
,
38
,
238
,
34
,
34
,
136
,
16
,
27
,
182
,
217
,
176
,
141
,
36
,
102
,
21
,
6
,
237
,
239
,
237
,
143
,
91
,
7
,
183
,
182
,
218
,
222
,
118
,
247
,
142
,
237
,
157
,
238
,
222
,
221
,
222
,
222
,
201
,
136
,
184
,
32
,
137
,
238
,
102
,
195
,
54
,
223
,
43
,
51
,
8
,
137
,
141
,
144
,
216
,
144
,
32
,
66
,
116
,
53
,
85
,
13
,
54
,
17
,
193
,
172
,
162
,
187
,
176
,
65
,
17
,
100
,
14
,
108
,
51
,
231
,
164
,
187
,
89
,
150
,
229
,
237
,
49
,
198
,
111
,
218
,
125
,
151
,
34
,
158
,
224
,
29
,
6
,
76
,
119
,
19
,
33
,
50
,
19
,
219
,
188
,
71
,
18
,
18
,
68
,
8
,
73
,
188
,
103
,
100
,
146
,
153
,
207
,
85
,
213
,
23
,
14
,
79
,
142
,
216
,
223
,
221
,
231
,
137
,
199
,
158
,
224
,
195
,
4
,
63
,
128
,
111
,
60
,
253
,
7
,
236
,
237
,
237
,
28
,
86
,
213
,
111
,
42
,
2
,
219
,
116
,
27
,
48
,
235
,
245
,
194
,
156
,
147
,
238
,
98
,
206
,
133
,
8
,
97
,
155
,
234
,
162
,
219
,
116
,
55
,
182
,
145
,
132
,
36
,
54
,
36
,
241
,
14
,
9
,
68
,
108
,
175
,
86
,
59
,
221
,
181
,
211
,
221
,
187
,
213
,
189
,
219
,
221
,
123
,
93
,
189
,
7
,
236
,
72
,
186
,
213
,
221
,
116
,
55
,
221
,
205
,
70
,
85
,
81
,
53
,
89
,
150
,
53
,
27
,
145
,
73
,
132
,
136
,
8
,
186
,
138
,
170
,
166
,
170
,
49
,
32
,
137
,
118
,
51
,
231
,
66
,
119
,
179
,
94
,
175
,
169
,
154
,
184
,
155
,
238
,
166
,
187
,
169
,
42
,
214
,
235
,
53
,
182
,
127
,
127
,
103
,
103
,
231
,
181
,
234
,
122
,
56
,
20
,
143
,
100
,
38
,
153
,
34
,
51
,
136
,
0
,
27
,
108
,
147
,
153
,
100
,
38
,
153
,
137
,
36
,
34
,
2
,
73
,
72
,
34
,
34
,
136
,
8
,
86
,
171
,
45
,
219
,
253
,
63
,
175
,
74
,
231
,
239
,
216
,
63
,
21
,
1
,
162
,
139
,
39
,
30
,
125
,
156
,
15
,
50
,
248
,
1
,
29
,
159
,
172
,
177
,
249
,
39
,
171
,
149
,
46
,
71
,
232
,
110
,
48
,
115
,
153
,
84
,
21
,
85
,
69
,
132
,
144
,
196
,
178
,
76
,
170
,
154
,
57
,
27
,
69
,
96
,
68
,
119
,
1
,
98
,
195
,
54
,
221
,
205
,
70
,
132
,
88
,
229
,
216
,
157
,
85
,
103
,
203
,
190
,
233
,
246
,
176
,
157
,
224
,
180
,
73
,
64
,
183
,
29
,
75
,
162
,
187
,
89
,
173
,
86
,
100
,
38
,
153
,
9
,
152
,
110
,
211
,
109
,
186
,
155
,
28
,
3
,
100
,
54
,
50
,
147
,
57
,
39
,
153
,
65
,
68
,
224
,
54
,
203
,
178
,
96
,
64
,
145
,
116
,
23
,
221
,
147
,
110
,
19
,
17
,
116
,
21
,
174
,
62
,
92
,
229
,
248
,
178
,
32
,
192
,
159
,
24
,
35
,
239
,
228
,
54
,
219
,
128
,
145
,
2
,
137
,
219
,
154
,
136
,
68
,
130
,
8
,
209
,
13
,
18
,
72
,
16
,
17
,
68
,
136
,
140
,
68
,
248
,
27
,
224
,
255
,
101
,
108
,
15
,
149
,
59
,
64
,
213
,
10
,
132
,
249
,
32
,
193
,
15
,
168
,
219
,
204
,
89
,
207
,
44
,
203
,
242
,
251
,
85
,
69
,
119
,
211
,
54
,
146
,
200
,
76
,
34
,
130
,
80
,
80
,
93
,
40
,
68
,
102
,
50
,
198
,
138
,
13
,
41
,
176
,
141
,
36
,
36
,
33
,
9
,
219
,
140
,
28
,
8
,
206
,
84
,
213
,
71
,
220
,
222
,
177
,
123
,
215
,
238
,
221
,
238
,
222
,
107
,
247
,
94
,
119
,
239
,
131
,
182
,
184
,
77
,
18
,
153
,
137
,
36
,
36
,
81
,
213
,
8
,
8
,
9
,
108
,
150
,
101
,
97
,
206
,
66
,
18
,
221
,
133
,
109
,
164
,
96
,
89
,
47
,
84
,
55
,
146
,
176
,
161
,
187
,
169
,
106
,
230
,
44
,
230
,
156
,
84
,
21
,
115
,
22
,
221
,
253
,
252
,
214
,
106
,
245
,
74
,
87
,
239
,
71
,
198
,
147
,
153
,
177
,
189
,
90
,
37
,
138
,
32
,
51
,
200
,
12
,
34
,
130
,
213
,
106
,
69
,
132
,
176
,
27
,
219
,
100
,
6
,
146
,
200
,
76
,
36
,
200
,
72
,
34
,
226
,
176
,
187
,
255
,
219
,
17
,
171
,
215
,
203
,
29
,
128
,
16
,
18
,
230
,
195
,
4
,
63
,
160
,
170
,
102
,
127
,
119
,
235
,
86
,
119
,
253
,
67
,
80
,
71
,
4
,
171
,
213
,
138
,
213
,
24
,
216
,
166
,
187
,
105
,
27
,
41
,
248
,
94
,
82
,
96
,
27
,
219
,
108
,
216
,
198
,
54
,
239
,
177
,
57
,
235
,
246
,
125
,
118
,
111
,
87
,
247
,
110
,
117
,
239
,
181
,
189
,
219
,
221
,
123
,
213
,
181
,
111
,
247
,
25
,
73
,
68
,
4
,
221
,
77
,
85
,
81
,
85
,
68
,
4
,
57
,
6
,
198
,
68
,
136
,
238
,
162
,
187
,
1
,
97
,
131
,
36
,
106
,
78
,
102
,
21
,
33
,
17
,
145
,
96
,
179
,
44
,
11
,
27
,
17
,
129
,
109
,
54
,
236
,
94
,
34
,
226
,
107
,
72
,
13
,
156
,
14
,
197
,
143
,
75
,
65
,
230
,
64
,
130
,
136
,
96
,
140
,
65
,
102
,
32
,
37
,
17
,
65
,
102
,
34
,
137
,
8
,
145
,
153
,
68
,
36
,
82
,
16
,
17
,
216
,
254
,
130
,
237
,
47
,
74
,
4
,
32
,
254
,
152
,
0
,
241
,
65
,
130
,
31
,
208
,
179
,
207
,
254
,
33
,
199
,
39
,
107
,
230
,
236
,
95
,
5
,
206
,
71
,
4
,
221
,
77
,
219
,
100
,
38
,
54
,
116
,
55
,
35
,
19
,
119
,
35
,
65
,
132
,
176
,
139
,
136
,
32
,
34
,
168
,
42
,
108
,
19
,
17
,
68
,
4
,
182
,
81
,
232
,
84
,
211
,
31
,
45
,
123
,
167
,
187
,
119
,
186
,
189
,
227
,
238
,
93
,
119
,
239
,
85
,
213
,
190
,
225
,
78
,
254
,
72
,
119
,
35
,
9
,
73
,
216
,
166
,
187
,
9
,
5
,
17
,
193
,
214
,
214
,
54
,
91
,
91
,
91
,
68
,
136
,
174
,
98
,
46
,
11
,
85
,
69
,
102
,
98
,
160
,
187
,
104
,
27
,
27
,
170
,
76
,
85
,
97
,
155
,
170
,
194
,
246
,
43
,
91
,
91
,
91
,
47
,
218
,
30
,
202
,
184
,
127
,
107
,
103
,
247
,
209
,
49
,
182
,
168
,
134
,
49
,
182
,
128
,
4
,
68
,
68
,
18
,
33
,
34
,
146
,
136
,
224
,
93
,
98
,
53
,
6
,
35
,
147
,
145
,
137
,
224
,
235
,
180
,
255
,
235
,
85
,
172
,
14
,
176
,
184
,
205
,
128
,
217
,
144
,
248
,
48
,
193
,
15
,
161
,
38
,
220
,
188
,
113
,
244
,
98
,
85
,
255
,
74
,
119
,
51
,
231
,
68
,
130
,
238
,
6
,
76
,
102
,
0
,
70
,
226
,
29
,
221
,
69
,
102
,
242
,
30
,
73
,
68
,
4
,
27
,
17
,
65
,
102
,
18
,
17
,
163
,
237
,
143
,
119
,
247
,
142
,
237
,
29
,
187
,
119
,
186
,
122
,
183
,
187
,
119
,
186
,
123
,
223
,
246
,
221
,
220
,
38
,
137
,
136
,
192
,
54
,
182
,
145
,
32
,
4
,
146
,
168
,
42
,
236
,
6
,
76
,
85
,
35
,
9
,
99
,
12
,
116
,
55
,
203
,
178
,
80
,
85
,
132
,
2
,
27
,
36
,
97
,
131
,
36
,
230
,
156
,
5
,
122
,
42
,
34
,
142
,
5
,
219
,
33
,
61
,
250
,
137
,
79
,
124
,
226
,
236
,
125
,
247
,
63
,
192
,
131
,
15
,
62
,
196
,
24
,
43
,
238
,
191
,
255
,
126
,
246
,
246
,
246
,
57
,
125
,
250
,
12
,
99
,
172
,
200
,
76
,
36
,
17
,
17
,
100
,
38
,
182
,
1
,
3
,
62
,
95
,
213
,
255
,
77
,
106
,
188
,
37
,
148
,
2
,
27
,
12
,
24
,
227
,
173
,
154
,
216
,
205
,
7
,
9
,
126
,
8
,
221
,
197
,
233
,
51
,
123
,
93
,
85
,
191
,
4
,
92
,
138
,
8
,
36
,
129
,
141
,
219
,
72
,
194
,
230
,
29
,
153
,
9
,
136
,
238
,
166
,
187
,
137
,
8
,
50
,
147
,
238
,
102
,
195
,
54
,
27
,
153
,
73
,
102
,
126
,
188
,
230
,
220
,
119
,
123
,
203
,
221
,
219
,
118
,
111
,
219
,
222
,
110
,
247
,
105
,
73
,
119
,
74
,
98
,
67
,
18
,
153
,
137
,
36
,
36
,
33
,
5
,
221
,
69
,
85
,
99
,
67
,
68
,
16
,
17
,
40
,
2
,
33
,
186
,
139
,
154
,
147
,
170
,
194
,
134
,
101
,
153
,
72
,
162
,
187
,
177
,
77
,
85
,
97
,
251
,
149
,
213
,
106
,
245
,
135
,
64
,
70
,
228
,
174
,
164
,
211
,
23
,
46
,
92
,
200
,
245
,
250
,
132
,
157
,
157
,
29
,
246
,
246
,
246
,
184
,
247
,
222
,
123
,
57
,
125
,
250
,
52
,
247
,
222
,
123
,
47
,
71
,
71
,
71
,
204
,
89
,
68
,
4
,
171
,
213
,
138
,
13
,
73
,
220
,
246
,
70
,
205
,
250
,
69
,
183
,
223
,
104
,
247
,
221
,
192
,
54
,
82
,
27
,
186
,
81
,
163
,
240
,
58
,
146
,
115
,
175
,
158
,
231
,
131
,
36
,
63
,
132
,
183
,
47
,
95
,
230
,
238
,
187
,
239
,
98
,
89
,
47
,
23
,
115
,
228
,
227
,
17
,
241
,
47
,
118
,
155
,
28
,
3
,
69
,
128
,
33
,
199
,
96
,
86
,
209
,
93
,
8
,
48
,
70
,
10
,
34
,
130
,
170
,
34
,
51
,
169
,
42
,
222
,
35
,
137
,
238
,
118
,
72
,
191
,
43
,
81
,
109
,
111
,
217
,
94
,
25
,
70
,
117
,
223
,
135
,
248
,
87
,
51
,
115
,
63
,
51
,
137
,
8
,
34
,
2
,
219
,
100
,
36
,
153
,
66
,
18
,
146
,
144
,
4
,
134
,
145
,
9
,
18
,
216
,
116
,
155
,
165
,
38
,
27
,
85
,
69
,
119
,
19
,
145
,
116
,
55
,
238
,
166
,
103
,
45
,
192
,
151
,
86
,
171
,
213
,
75
,
66
,
139
,
4
,
15
,
62
,
248
,
208
,
195
,
183
,
110
,
222
,
252
,
204
,
193
,
193
,
173
,
184
,
118
,
245
,
42
,
115
,
78
,
46
,
95
,
190
,
204
,
209
,
209
,
17
,
87
,
174
,
92
,
225
,
228
,
228
,
4
,
73
,
140
,
28
,
8
,
17
,
138
,
217
,
246
,
183
,
215
,
235
,
229
,
239
,
183
,
121
,
46
,
20
,
7
,
138
,
184
,
21
,
210
,
77
,
164
,
99
,
164
,
6
,
219
,
152
,
115
,
175
,
190
,
194
,
135
,
73
,
126
,
72
,
111
,
189
,
125
,
153
,
251
,
30
,
184
,
175
,
221
,
253
,
122
,
100
,
254
,
213
,
64
,
103
,
109
,
35
,
160
,
221
,
84
,
53
,
203
,
156
,
132
,
4
,
152
,
110
,
131
,
2
,
219
,
84
,
21
,
17
,
129
,
109
,
186
,
155
,
204
,
68
,
18
,
85
,
165
,
219
,
126
,
39
,
34
,
14
,
128
,
149
,
97
,
24
,
71
,
187
,
31
,
31
,
99
,
252
,
149
,
213
,
106
,
53
,
248
,
35
,
146
,
144
,
68
,
102
,
48
,
198
,
32
,
51
,
145
,
68
,
68
,
144
,
17
,
84
,
55
,
118
,
83
,
213
,
72
,
208
,
109
,
140
,
233
,
110
,
218
,
208
,
109
,
170
,
138
,
185
,
44
,
244
,
236
,
231
,
182
,
183
,
183
,
127
,
45
,
20
,
7
,
130
,
67
,
164
,
163
,
204
,
188
,
188
,
179
,
189
,
115
,
243
,
240
,
224
,
224
,
12
,
104
,
107
,
189
,
94
,
198
,
178
,
172
,
181
,
172
,
23
,
186
,
155
,
237
,
237
,
109
,
86
,
171
,
213
,
146
,
138
,
91
,
192
,
185
,
154
,
243
,
55
,
150
,
245
,
252
,
146
,
164
,
239
,
100
,
230
,
91
,
25
,
113
,
49
,
35
,
222
,
82
,
196
,
117
,
41
,
22
,
103
,
88
,
136
,
147
,
48
,
55
,
175
,
93
,
231
,
195
,
12
,
126
,
4
,
181
,
76
,
94
,
120
,
245
,
252
,
211
,
79
,
62
,
241
,
196
,
223
,
150
,
244
,
159
,
27
,
143
,
57
,
39
,
109
,
211
,
110
,
50
,
147
,
141
,
42
,
131
,
68
,
40
,
176
,
77
,
102
,
82
,
85
,
100
,
38
,
221
,
141
,
109
,
50
,
19
,
73
,
219
,
221
,
125
,
150
,
228
,
117
,
64
,
108
,
152
,
141
,
135
,
35
,
98
,
123
,
206
,
73
,
102
,
18
,
17
,
100
,
38
,
146
,
0
,
209
,
54
,
33
,
80
,
4
,
182
,
81
,
8
,
170
,
153
,
101
,
36
,
81
,
221
,
44
,
115
,
98
,
55
,
221
,
141
,
20
,
72
,
98
,
163
,
171
,
15
,
50
,
243
,
183
,
71
,
142
,
171
,
224
,
35
,
224
,
8
,
116
,
120
,
237
,
234
,
181
,
183
,
35
,
116
,
126
,
172
,
86
,
95
,
202
,
200
,
143
,
2
,
119
,
67
,
110
,
129
,
19
,
36
,
33
,
187
,
250
,
96
,
218
,
111
,
185
,
251
,
34
,
112
,
101
,
172
,
198
,
141
,
80
,
92
,
85
,
232
,
74
,
70
,
92
,
27
,
210
,
65
,
75
,
19
,
133
,
163
,
154
,
151
,
206
,
159
,
227
,
7
,
53
,
248
,
17
,
92
,
60
,
127
,
157
,
79
,
61
,
246
,
168
,
151
,
101
,
249
,
31
,
86
,
57
,
254
,
66
,
142
,
252
,
119
,
157
,
1
,
221
,
156
,
172
,
139
,
8
,
209
,
221
,
128
,
200
,
8
,
20
,
193
,
178
,
76
,
108
,
19
,
17
,
116
,
55
,
146
,
136
,
8
,
186
,
27
,
73
,
43
,
236
,
125
,
65
,
27
,
10
,
16
,
144
,
146
,
30
,
1
,
97
,
55
,
221
,
77
,
102
,
82
,
53
,
137
,
8
,
198
,
24
,
96
,
19
,
49
,
232
,
46
,
50
,
18
,
73
,
68
,
36
,
166
,
153
,
115
,
97
,
89
,
22
,
54
,
164
,
100
,
195
,
134
,
101
,
89
,
179
,
44
,
11
,
22
,
95
,
219
,
217
,
217
,
121
,
86
,
161
,
67
,
208
,
33
,
112
,
8
,
28
,
73
,
58
,
1
,
234
,
182
,
55
,
187
,
251
,
91
,
66
,
72
,
10
,
133
,
36
,
48
,
182
,
5
,
51
,
34
,
22
,
101
,
158
,
32
,
29
,
11
,
142
,
20
,
113
,
28
,
210
,
90
,
168
,
44
,
250
,
47
,
124
,
234
,
113
,
254
,
233
,
115
,
47
,
115
,
238
,
252
,
43
,
252
,
48
,
6
,
63
,
130
,
123
,
238
,
63
,
69
,
157
,
52
,
63
,
243
,
115
,
159
,
188
,
242
,
91
,
95
,
120
,
225
,
63
,
149
,
185
,
127
,
53
,
198
,
95
,
70
,
77
,
196
,
130
,
0
,
41
,
16
,
5
,
18
,
115
,
22
,
27
,
146
,
168
,
42
,
108
,
19
,
17
,
140
,
49
,
144
,
68
,
85
,
33
,
41
,
35
,
2
,
119
,
79
,
192
,
183
,
157
,
150
,
244
,
88
,
102
,
0
,
38
,
51
,
129
,
166
,
187
,
145
,
192
,
110
,
148
,
3
,
48
,
93
,
197
,
136
,
100
,
86
,
209
,
109
,
186
,
155
,
101
,
153
,
44
,
203
,
66
,
230
,
138
,
136
,
64
,
50
,
39
,
39
,
199
,
44
,
203
,
66
,
85
,
189
,
188
,
183
,
187
,
247
,
143
,
34
,
227
,
26
,
112
,
44
,
233
,
16
,
56
,
4
,
142
,
129
,
69
,
82
,
73
,
154
,
192
,
20
,
154
,
10
,
77
,
161
,
10
,
81
,
146
,
166
,
164
,
10
,
152
,
72
,
37
,
169
,
128
,
146
,
84
,
141
,
220
,
96
,
117
,
243
,
181
,
239
,
92
,
224
,
149
,
243
,
175
,
240
,
195
,
74
,
126
,
4
,
119
,
157
,
189
,
19
,
4
,
231
,
158
,
125
,
59
,
14
,
15
,
214
,
151
,
35
,
245
,
117
,
227
,
79
,
43
,
244
,
104
,
68
,
48
,
171
,
168
,
154
,
72
,
65
,
87
,
113
,
199
,
233
,
51
,
156
,
57
,
115
,
134
,
101
,
89
,
120
,
228
,
145
,
71
,
56
,
58
,
58
,
226
,
201
,
39
,
159
,
228
,
214
,
173
,
91
,
252
,
228
,
79
,
254
,
36
,
175
,
191
,
254
,
250
,
113
,
70
,
252
,
222
,
24
,
227
,
138
,
224
,
4
,
180
,
238
,
238
,
79
,
41
,
227
,
95
,
143
,
136
,
149
,
36
,
50
,
69
,
102
,
32
,
137
,
136
,
32
,
51
,
16
,
2
,
243
,
142
,
145
,
131
,
101
,
153
,
156
,
172
,
79
,
0
,
1
,
166
,
219
,
204
,
217
,
204
,
57
,
145
,
68
,
119
,
179
,
44
,
203
,
173
,
213
,
106
,
245
,
75
,
123
,
187
,
123
,
207
,
6
,
28
,
41
,
226
,
86
,
72
,
7
,
146
,
14
,
37
,
29
,
41
,
98
,
29
,
138
,
147
,
144
,
214
,
82
,
172
,
35
,
99
,
137
,
136
,
69
,
210
,
58
,
165
,
69
,
210
,
18
,
210
,
130
,
52
,
37
,
77
,
80
,
129
,
74
,
33
,
55
,
197
,
208
,
224
,
165
,
243
,
231
,
184
,
118
,
245
,
109
,
126
,
20
,
131
,
31
,
153
,
48
,
246
,
246
,
206
,
86
,
156
,
28
,
215
,
51
,
217
,
245
,
55
,
35
,
243
,
63
,
137
,
204
,
159
,
3
,
157
,
18
,
1
,
134
,
136
,
100
,
119
,
119
,
135
,
199
,
31
,
127
,
130
,
91
,
183
,
110
,
241
,
227
,
63
,
254
,
227
,
92
,
186
,
116
,
137
,
123
,
239
,
189
,
151
,
87
,
207
,
191
,
202
,
197
,
55
,
47
,
50
,
114
,
220
,
112
,
247
,
137
,
164
,
221
,
200
,
60
,
176
,
122
,
161
,
253
,
185
,
204
,
177
,
27
,
25
,
224
,
102
,
140
,
164
,
170
,
217
,
144
,
132
,
13
,
166
,
129
,
96
,
140
,
21
,
179
,
138
,
200
,
96
,
197
,
138
,
170
,
70
,
10
,
164
,
192
,
158
,
116
,
55
,
182
,
153
,
203
,
82
,
17
,
241
,
197
,
83
,
251
,
251
,
191
,
19
,
210
,
145
,
164
,
35
,
208
,
145
,
196
,
17
,
112
,
2
,
44
,
66
,
133
,
84
,
18
,
133
,
84
,
192
,
148
,
212
,
130
,
146
,
84
,
130
,
66
,
42
,
65
,
11
,
25
,
201
,
220
,
246
,
157
,
87
,
206
,
241
,
39
,
33
,
249
,
17
,
156
,
61
,
123
,
39
,
33
,
129
,
4
,
88
,
10
,
228
,
230
,
234
,
156
,
253
,
27
,
93
,
253
,
124
,
40
,
238
,
207
,
200
,
7
,
164
,
72
,
110
,
59
,
58
,
58
,
164
,
170
,
185
,
124
,
249
,
45
,
230
,
156
,
92
,
187
,
118
,
157
,
27
,
55
,
110
,
112
,
116
,
120
,
200
,
229
,
203
,
151
,
233
,
234
,
175
,
142
,
49
,
158
,
202
,
136
,
107
,
146
,
174
,
172
,
151
,
245
,
67
,
18
,
127
,
51
,
51
,
239
,
16
,
38
,
115
,
176
,
97
,
131
,
36
,
198
,
72
,
4
,
140
,
145
,
116
,
55
,
182
,
89
,
150
,
133
,
89
,
147
,
238
,
166
,
219
,
204
,
89
,
84
,
21
,
27
,
221
,
205
,
122
,
189
,
118
,
119
,
255
,
218
,
233
,
253
,
83
,
191
,
176
,
26
,
227
,
154
,
20
,
7
,
146
,
110
,
69
,
198
,
129
,
164
,
195
,
144
,
142
,
36
,
173
,
35
,
98
,
157
,
210
,
146
,
17
,
235
,
144
,
214
,
138
,
152
,
33
,
45
,
138
,
88
,
80
,
76
,
164
,
137
,
212
,
142
,
52
,
136
,
151
,
206
,
159
,
227
,
202
,
245
,
107
,
252
,
73
,
17
,
63
,
162
,
187
,
31
,
122
,
132
,
51
,
41
,
12
,
132
,
20
,
216
,
1
,
72
,
110
,
150
,
246
,
67
,
109
,
255
,
27
,
134
,
127
,
39
,
34
,
126
,
114
,
246
,
114
,
186
,
27
,
173
,
215
,
39
,
236
,
238
,
238
,
114
,
120
,
116
,
140
,
128
,
174
,
238
,
154
,
243
,
247
,
182
,
183
,
183
,
127
,
97
,
123
,
107
,
251
,
21
,
227
,
43
,
93
,
117
,
180
,
244
,
252
,
143
,
87
,
171
,
213
,
127
,
180
,
94
,
175
,
137
,
8
,
50
,
19
,
73
,
128
,
217
,
216
,
218
,
218
,
194
,
110
,
50
,
130
,
110
,
35
,
137
,
234
,
102
,
89
,
22
,
192
,
84
,
65
,
119
,
179
,
81
,
85
,
156
,
156
,
156
,
208
,
221
,
191
,
115
,
199
,
254
,
169
,
255
,
106
,
119
,
119
,
247
,
2
,
102
,
65
,
58
,
150
,
56
,
1
,
142
,
5
,
107
,
73
,
19
,
104
,
65
,
133
,
212
,
64
,
73
,
106
,
67
,
11
,
44
,
100
,
11
,
115
,
219
,
75
,
231
,
95
,
225
,
79
,
139
,
248
,
255
,
224
,
241
,
199
,
158
,
32
,
49
,
141
,
144
,
91
,
216
,
97
,
8
,
1
,
182
,
115
,
153
,
243
,
158
,
118
,
127
,
118
,
186
,
127
,
234
,
228
,
100
,
253
,
185
,
49
,
242
,
225
,
101
,
153
,
187
,
64
,
217
,
190
,
132
,
249
,
202
,
222
,
238
,
238
,
63
,
94
,
141
,
241
,
166
,
205
,
9
,
176
,
92
,
189
,
118
,
245
,
161
,
159
,
248
,
236
,
79
,
252
,
143
,
171
,
173
,
173
,
79
,
188
,
250
,
234
,
121
,
50
,
147
,
155
,
55
,
111
,
145
,
25
,
116
,
23
,
146
,
216
,
222
,
222
,
38
,
34
,
16
,
198
,
134
,
182
,
89
,
150
,
133
,
170
,
162
,
170
,
17
,
162
,
109
,
132
,
56
,
62
,
62
,
242
,
178
,
204
,
47
,
239
,
237
,
237
,
253
,
23
,
167
,
246
,
247
,
95
,
5
,
166
,
96
,
45
,
233
,
4
,
233
,
4
,
88
,
11
,
166
,
160
,
5
,
109
,
169
,
3
,
89
,
162
,
185
,
173
,
52
,
124
,
237
,
244
,
3
,
156
,
190
,
117
,
137
,
243
,
47
,
63
,
207
,
159
,
54
,
241
,
39
,
224
,
137
,
71
,
31
,
167
,
99
,
69
,
244
,
130
,
109
,
9
,
75
,
16
,
186
,
109
,
100
,
82
,
85
,
99
,
233
,
222
,
61
,
62
,
57
,
57
,
211
,
213
,
123
,
17
,
234
,
49
,
198
,
173
,
213
,
106
,
117
,
212
,
221
,
216
,
14
,
131
,
70
,
68
,
95
,
186
,
114
,
249
,
167
,
158
,
120
,
226
,
137
,
95
,
60
,
60
,
60
,
188
,
227
,
51
,
159
,
249
,
12
,
111
,
188
,
241
,
6
,
27
,
103
,
207
,
158
,
229
,
249
,
231
,
159
,
231
,
129
,
7
,
30
,
224
,
245
,
215
,
95
,
35
,
51
,
176
,
77
,
85
,
97
,
155
,
57
,
155
,
170
,
162
,
230
,
36
,
16
,
182
,
89
,
230
,
156
,
213
,
245
,
155
,
251
,
123
,
251
,
255
,
221
,
254
,
222
,
222
,
183
,
109
,
31
,
2
,
235
,
148
,
22
,
96
,
45
,
105
,
1
,
38
,
96
,
192
,
128
,
21
,
233
,
188
,
126
,
139
,
186
,
243
,
14
,
190
,
243
,
242
,
75
,
252
,
179
,
54
,
248
,
19
,
240
,
242
,
249
,
115
,
108
,
124
,
252
,
177
,
199
,
177
,
100
,
57
,
12
,
182
,
49
,
235
,
57
,
5
,
56
,
165
,
121
,
199
,
222
,
222
,
77
,
221
,
102
,
59
,
170
,
42
,
220
,
173
,
128
,
64
,
82
,
131
,
70
,
142
,
14
,
233
,
198
,
133
,
11
,
23
,
214
,
146
,
184
,
120
,
241
,
34
,
175
,
190
,
250
,
42
,
79
,
62
,
249
,
36
,
111
,
189
,
245
,
22
,
103
,
206
,
156
,
225
,
190
,
251
,
238
,
227
,
141
,
55
,
94
,
163
,
170
,
144
,
68
,
119
,
211
,
93
,
128
,
136
,
8
,
10
,
49
,
171
,
152
,
115
,
94
,
147
,
244
,
143
,
78
,
157
,
186
,
227
,
151
,
183
,
183
,
182
,
222
,
182
,
221
,
33
,
221
,
2
,
142
,
145
,
166
,
208
,
148
,
100
,
41
,
124
,
112
,
120
,
145
,
83
,
251
,
15
,
240
,
194
,
185
,
23
,
249
,
99
,
87
,
47
,
241
,
255
,
7
,
241
,
167
,
232
,
241
,
71
,
159
,
224
,
93
,
6
,
91
,
41
,
176
,
45
,
144
,
192
,
226
,
93
,
178
,
45
,
64
,
25
,
193
,
213
,
27
,
55
,
118
,
151
,
154
,
255
,
153
,
34
,
254
,
214
,
169
,
253
,
253
,
237
,
131
,
195
,
67
,
30
,
120
,
224
,
1
,
174
,
95
,
191
,
206
,
238
,
238
,
46
,
25
,
201
,
193
,
225
,
45
,
186
,
139
,
238
,
166
,
109
,
220
,
13
,
4
,
85
,
197
,
92
,
150
,
195
,
174
,
126
,
118
,
140
,
241
,
27
,
219
,
219
,
219
,
223
,
202
,
204
,
75
,
145
,
121
,
41
,
35
,
46
,
14
,
233
,
42
,
104
,
177
,
228
,
163
,
213
,
142
,
199
,
92
,
243
,
221
,
87
,
94
,
226
,
207
,
18
,
241
,
207
,
208
,
39
,
31
,
255
,
56
,
118
,
19
,
26
,
204
,
94
,
99
,
54
,
36
,
113
,
155
,
13
,
152
,
207
,
253
,
216
,
147
,
254
,
39
,
95
,
255
,
189
,
59
,
142
,
79
,
78
,
254
,
58
,
240
,
243
,
57
,
198
,
231
,
20
,
186
,
43
,
51
,
119
,
186
,
91
,
171
,
28
,
108
,
111
,
111
,
179
,
94
,
214
,
172
,
151
,
5
,
139
,
118
,
247
,
81
,
47
,
117
,
177
,
219
,
207
,
103
,
196
,
211
,
171
,
213
,
234
,
133
,
28
,
249
,
86
,
68
,
92
,
141
,
136
,
203
,
17
,
113
,
57
,
34
,
174
,
167
,
98
,
145
,
18
,
187
,
121
,
233
,
252
,
203
,
252
,
89
,
36
,
254
,
140
,
250
,
220
,
103
,
63
,
199
,
119
,
95
,
251
,
238
,
30
,
240
,
216
,
241
,
241
,
241
,
39
,
247
,
246
,
246
,
158
,
152
,
203
,
124
,
48
,
35
,
246
,
70
,
142
,
81
,
93
,
89
,
221
,
199
,
118
,
95
,
150
,
116
,
33
,
35
,
223
,
204
,
204
,
43
,
17
,
113
,
32
,
116
,
168
,
208
,
77
,
73
,
183
,
34
,
226
,
48
,
164
,
117
,
219
,
30
,
17
,
188
,
116
,
254
,
21
,
254
,
44
,
19
,
255
,
28
,
240
,
23
,
223
,
64
,
127
,
237
,
65
,
62
,
251
,
233
,
207
,
228
,
181
,
27
,
215
,
87
,
115
,
206
,
40
,
125
,
211
,
16
,
0
,
0
,
0
,
35
,
73
,
68
,
65
,
84
,
149
,
164
,
204
,
8
,
133
,
132
,
13
,
22
,
190
,
173
,
132
,
22
,
133
,
166
,
164
,
186
,
251
,
158
,
143
,
248
,
248
,
248
,
136
,
103
,
158
,
125
,
134
,
127
,
94
,
252
,
223
,
160
,
16
,
125
,
12
,
251
,
15
,
241
,
139
,
0
,
0
,
0
,
0
,
73
,
69
,
78
,
68
,
174
,
66
,
96
,
130
])
let
testJpg
=
new
Uint8Array
([
255
,
216
,
255
,
224
,
0
,
16
,
74
,
70
,
73
,
70
,
0
,
1
,
1
,
1
,
0
,
96
,
0
,
96
,
0
,
0
,
255
,
219
,
0
,
67
,
0
,
2
,
1
,
1
,
2
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
3
,
5
,
3
,
3
,
3
,
3
,
3
,
6
,
4
,
4
,
3
,
5
,
7
,
6
,
7
,
7
,
7
,
6
,
7
,
7
,
8
,
9
,
11
,
9
,
8
,
8
,
10
,
8
,
7
,
7
,
10
,
13
,
10
,
10
,
11
,
12
,
12
,
12
,
12
,
7
,
9
,
14
,
15
,
13
,
12
,
14
,
11
,
12
,
12
,
12
,
255
,
219
,
0
,
67
,
1
,
2
,
2
,
2
,
3
,
3
,
3
,
6
,
3
,
3
,
6
,
12
,
8
,
7
,
8
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
255
,
192
,
0
,
17
,
8
,
0
,
226
,
1
,
216
,
3
,
1
,
34
,
0
,
2
,
17
,
1
,
3
,
17
,
1
,
255
,
196
,
0
,
31
,
0
,
0
,
1
,
5
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
255
,
196
,
0
,
181
,
16
,
0
,
2
,
1
,
3
,
3
,
2
,
4
,
3
,
5
,
5
,
4
,
4
,
0
,
0
,
1
,
125
,
1
,
2
,
3
,
0
,
4
,
17
,
5
,
18
,
33
,
49
,
65
,
6
,
19
,
81
,
97
,
7
,
34
,
113
,
20
,
50
,
129
,
145
,
161
,
8
,
35
,
66
,
177
,
193
,
21
,
82
,
209
,
240
,
36
,
51
,
98
,
114
,
130
,
9
,
10
,
22
,
23
,
24
,
25
,
26
,
37
,
38
,
39
,
40
,
41
,
42
,
52
,
53
,
54
,
55
,
56
,
57
,
58
,
67
,
68
,
69
,
70
,
71
,
72
,
73
,
74
,
83
,
84
,
85
,
86
,
87
,
88
,
89
,
90
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
115
,
116
,
117
,
118
,
119
,
120
,
121
,
122
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
138
,
146
,
147
,
148
,
149
,
150
,
151
,
152
,
153
,
154
,
162
,
163
,
164
,
165
,
166
,
167
,
168
,
169
,
170
,
178
,
179
,
180
,
181
,
182
,
183
,
184
,
185
,
186
,
194
,
195
,
196
,
197
,
198
,
199
,
200
,
201
,
202
,
210
,
211
,
212
,
213
,
214
,
215
,
216
,
217
,
218
,
225
,
226
,
227
,
228
,
229
,
230
,
231
,
232
,
233
,
234
,
241
,
242
,
243
,
244
,
245
,
246
,
247
,
248
,
249
,
250
,
255
,
196
,
0
,
31
,
1
,
0
,
3
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
255
,
196
,
0
,
181
,
17
,
0
,
2
,
1
,
2
,
4
,
4
,
3
,
4
,
7
,
5
,
4
,
4
,
0
,
1
,
2
,
119
,
0
,
1
,
2
,
3
,
17
,
4
,
5
,
33
,
49
,
6
,
18
,
65
,
81
,
7
,
97
,
113
,
19
,
34
,
50
,
129
,
8
,
20
,
66
,
145
,
161
,
177
,
193
,
9
,
35
,
51
,
82
,
240
,
21
,
98
,
114
,
209
,
10
,
22
,
36
,
52
,
225
,
37
,
241
,
23
,
24
,
25
,
26
,
38
,
39
,
40
,
41
,
42
,
53
,
54
,
55
,
56
,
57
,
58
,
67
,
68
,
69
,
70
,
71
,
72
,
73
,
74
,
83
,
84
,
85
,
86
,
87
,
88
,
89
,
90
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
115
,
116
,
117
,
118
,
119
,
120
,
121
,
122
,
130
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
138
,
146
,
147
,
148
,
149
,
150
,
151
,
152
,
153
,
154
,
162
,
163
,
164
,
165
,
166
,
167
,
168
,
169
,
170
,
178
,
179
,
180
,
181
,
182
,
183
,
184
,
185
,
186
,
194
,
195
,
196
,
197
,
198
,
199
,
200
,
201
,
202
,
210
,
211
,
212
,
213
,
214
,
215
,
216
,
217
,
218
,
226
,
227
,
228
,
229
,
230
,
231
,
232
,
233
,
234
,
242
,
243
,
244
,
245
,
246
,
247
,
248
,
249
,
250
,
255
,
218
,
0
,
12
,
3
,
1
,
0
,
2
,
17
,
3
,
17
,
0
,
63
,
0
,
253
,
16
,
162
,
138
,
43
,
252
,
99
,
63
,
170
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
15
,
255
,
217
])
/*
* Copyright (C) 2022 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.
*/
let
testPng
=
new
Uint8Array
([
137
,
80
,
78
,
71
,
13
,
10
,
26
,
10
,
0
,
0
,
0
,
13
,
73
,
72
,
68
,
82
,
0
,
0
,
0
,
100
,
0
,
0
,
0
,
100
,
8
,
6
,
0
,
0
,
0
,
112
,
226
,
149
,
84
,
0
,
0
,
32
,
0
,
73
,
68
,
65
,
84
,
120
,
1
,
212
,
193
,
123
,
176
,
231
,
247
,
93
,
223
,
247
,
231
,
251
,
253
,
249
,
254
,
126
,
231
,
156
,
61
,
123
,
191
,
105
,
37
,
173
,
180
,
186
,
95
,
173
,
187
,
228
,
43
,
166
,
182
,
133
,
109
,
44
,
108
,
160
,
6
,
154
,
105
,
157
,
116
,
104
,
50
,
64
,
72
,
155
,
41
,
195
,
64
,
167
,
13
,
80
,
218
,
73
,
166
,
76
,
254
,
104
,
254
,
104
,
167
,
51
,
253
,
39
,
51
,
45
,
52
,
77
,
161
,
36
,
29
,
19
,
2
,
24
,
98
,
140
,
28
,
91
,
24
,
91
,
150
,
44
,
164
,
213
,
93
,
187
,
146
,
86
,
123
,
95
,
237
,
253
,
156
,
243
,
251
,
253
,
190
,
223
,
247
,
235
,
213
,
253
,
237
,
34
,
220
,
106
,
86
,
182
,
105
,
160
,
99
,
30
,
143
,
224
,
175
,
177
,
31
,
251
,
145
,
31
,
102
,
101
,
109
,
133
,
133
,
241
,
194
,
174
,
42
,
253
,
224
,
108
,
54
,
123
,
100
,
24
,
250
,
235
,
135
,
161
,
178
,
239
,
251
,
67
,
17
,
241
,
149
,
42
,
253
,
238
,
100
,
50
,
121
,
178
,
117
,
76
,
207
,
31
,
221
,
194
,
243
,
7
,
30
,
229
,
187
,
89
,
240
,
215
,
212
,
15
,
253
,
208
,
167
,
24
,
47
,
108
,
98
,
186
,
118
,
242
,
253
,
165
,
250
,
135
,
150
,
62
,
176
,
178
,
178
,
186
,
208
,
247
,
61
,
146
,
232
,
103
,
61
,
173
,
235
,
4
,
62
,
106
,
243
,
175
,
165
,
250
,
159
,
108
,
61
,
149
,
153
,
126
,
252
,
235
,
79
,
241
,
221
,
42
,
248
,
107
,
232
,
83
,
159
,
252
,
126
,
90
,
27
,
1
,
250
,
158
,
217
,
172
,
255
,
167
,
171
,
107
,
43
,
183
,
204
,
102
,
61
,
179
,
233
,
140
,
201
,
100
,
66
,
149
,
176
,
4
,
1
,
173
,
53
,
70
,
163
,
17
,
173
,
181
,
87
,
128
,
255
,
102
,
54
,
27
,
254
,
143
,
214
,
114
,
248
,
198
,
83
,
79
,
243
,
221
,
168
,
241
,
215
,
208
,
237
,
183
,
221
,
66
,
102
,
94
,
93
,
195
,
240
,
63
,
207
,
102
,
211
,
251
,
214
,
86
,
39
,
172
,
156
,
91
,
101
,
101
,
117
,
194
,
249
,
149
,
53
,
250
,
97
,
96
,
50
,
157
,
113
,
254
,
252
,
10
,
67
,
153
,
201
,
116
,
74
,
149
,
182
,
70
,
196
,
71
,
50
,
242
,
108
,
102
,
62
,
177
,
107
,
231
,
14
,
31
,
57
,
122
,
140
,
239
,
54
,
141
,
191
,
160
,
237
,
91
,
55
,
51
,
30
,
141
,
216
,
182
,
109
,
235
,
120
,
211
,
198
,
13
,
235
,
150
,
214
,
45
,
141
,
186
,
46
,
180
,
113
,
227
,
6
,
175
,
174
,
174
,
241
,
87
,
237
,
83
,
159
,
122
,
132
,
79
,
127
,
252
,
251
,
121
,
97
,
223
,
190
,
191
,
63
,
235
,
251
,
31
,
95
,
91
,
155
,
196
,
233
,
211
,
167
,
89
,
93
,
153
,
176
,
54
,
153
,
48
,
212
,
192
,
80
,
66
,
18
,
85
,
98
,
54
,
155
,
49
,
157
,
78
,
137
,
8
,
76
,
44
,
142
,
70
,
221
,
123
,
35
,
120
,
153
,
244
,
179
,
87
,
238
,
216
,
195
,
145
,
99
,
135
,
248
,
110
,
210
,
241
,
29
,
186
,
239
,
190
,
123
,
233
,
103
,
253
,
226
,
120
,
220
,
30
,
176
,
253
,
48
,
196
,
93
,
147
,
201
,
100
,
199
,
80
,
53
,
93
,
92
,
92
,
124
,
117
,
109
,
109
,
237
,
209
,
141
,
27
,
55
,
254
,
193
,
245
,
215
,
95
,
127
,
124
,
239
,
222
,
189
,
12
,
195
,
192
,
95
,
133
,
8
,
248
,
151
,
127
,
240
,
185
,
235
,
134
,
161
,
255
,
143
,
38
,
147
,
181
,
56
,
123
,
246
,
12
,
179
,
217
,
140
,
201
,
108
,
74
,
169
,
232
,
135
,
129
,
140
,
4
,
155
,
204
,
100
,
174
,
170
,
88
,
93
,
93
,
69
,
18
,
227
,
81
,
183
,
117
,
97
,
60
,
254
,
197
,
136
,
120
,
146
,
54
,
125
,
133
,
239
,
50
,
29
,
223
,
198
,
189
,
247
,
220
,
197
,
179
,
207
,
189
,
196
,
226
,
194
,
232
,
254
,
229
,
117
,
139
,
63
,
11
,
60
,
50
,
244
,
195
,
150
,
217
,
48
,
208
,
186
,
14
,
19
,
100
,
22
,
227
,
241
,
194
,
143
,
75
,
254
,
234
,
139
,
47
,
190
,
248
,
143
,
134
,
97
,
248
,
131
,
204
,
212
,
5
,
252
,
101
,
75
,
155
,
176
,
63
,
58
,
153
,
206
,
110
,
155
,
76
,
166
,
172
,
172
,
174
,
49
,
153
,
206
,
24
,
134
,
1
,
99
,
144
,
113
,
136
,
204
,
196
,
54
,
153
,
201
,
92
,
85
,
49
,
157
,
78
,
89
,
89
,
93
,
163
,
181
,
188
,
167
,
139
,
246
,
31
,
63
,
249
,
141
,
39
,
126
,
249
,
129
,
251
,
31
,
224
,
137
,
39
,
159
,
230
,
187
,
69
,
242
,
45
,
188
,
255
,
125
,
239
,
37
,
91
,
151
,
239
,
125
,
207
,
253
,
63
,
178
,
180
,
180
,
244
,
235
,
227
,
209
,
232
,
51
,
150
,
183
,
204
,
102
,
51
,
214
,
214
,
86
,
89
,
91
,
155
,
176
,
178
,
178
,
198
,
116
,
58
,
163
,
239
,
135
,
113
,
149
,
190
,
39
,
34
,
254
,
151
,
174
,
235
,
62
,
35
,
41
,
248
,
75
,
246
,
233
,
79
,
125
,
146
,
197
,
241
,
186
,
5
,
75
,
223
,
95
,
67
,
181
,
233
,
116
,
202
,
116
,
50
,
101
,
24
,
6
,
108
,
97
,
153
,
214
,
26
,
17
,
193
,
91
,
108
,
51
,
215
,
90
,
35
,
34
,
152
,
205
,
102
,
72
,
34
,
51
,
31
,
121
,
224
,
254
,
7
,
183
,
65
,
240
,
221
,
164
,
227
,
29
,
124
,
240
,
131
,
239
,
103
,
113
,
221
,
152
,
209
,
180
,
251
,
248
,
226
,
120
,
252
,
63
,
88
,
190
,
106
,
101
,
117
,
149
,
181
,
181
,
53
,
86
,
86
,
87
,
153
,
245
,
51
,
250
,
190
,
152
,
78
,
103
,
72
,
98
,
24
,
6
,
134
,
97
,
32
,
34
,
118
,
117
,
93
,
247
,
43
,
85
,
117
,
40
,
51
,
63
,
95
,
85
,
252
,
165
,
137
,
160
,
52
,
236
,
138
,
200
,
123
,
38
,
211
,
9
,
125
,
223
,
51
,
87
,
85
,
64
,
144
,
25
,
204
,
69
,
4
,
146
,
200
,
76
,
230
,
36
,
49
,
55
,
12
,
3
,
17
,
48
,
12
,
3
,
195
,
208
,
174
,
109
,
173
,
93
,
11
,
188
,
201
,
119
,
145
,
142
,
119
,
176
,
184
,
48
,
198
,
131
,
239
,
88
,
183
,
184
,
244
,
143
,
9
,
174
,
90
,
89
,
91
,
97
,
50
,
153
,
178
,
58
,
153
,
50
,
157
,
245
,
204
,
102
,
61
,
85
,
98
,
78
,
18
,
195
,
48
,
48
,
23
,
17
,
116
,
93
,
119
,
181
,
164
,
95
,
152
,
205
,
102
,
79
,
3
,
199
,
184
,
140
,
255
,
226
,
231
,
126
,
158
,
151
,
95
,
126
,
153
,
135
,
191
,
239
,
225
,
118
,
195
,
13
,
215
,
143
,
55
,
109
,
222
,
180
,
28
,
17
,
203
,
4
,
75
,
24
,
108
,
97
,
27
,
75
,
171
,
42
,
77
,
215
,
38
,
107
,
43
,
215
,
93
,
119
,
195
,
228
,
23
,
254
,
193
,
127
,
185
,
222
,
25
,
155
,
185
,
96
,
54
,
155
,
209
,
15
,
3
,
85
,
34
,
51
,
177
,
185
,
40
,
34
,
152
,
179
,
205
,
219
,
169
,
68
,
63
,
155
,
49
,
30
,
143
,
151
,
34
,
189
,
17
,
155
,
239
,
38
,
29
,
151
,
241
,
177
,
143
,
62
,
76
,
223
,
15
,
227
,
117
,
235
,
22
,
255
,
243
,
209
,
168
,
187
,
107
,
229
,
252
,
10
,
125
,
223
,
51
,
157
,
245
,
12
,
67
,
49
,
157
,
245
,
244
,
179
,
30
,
219
,
204
,
101
,
38
,
173
,
53
,
102
,
179
,
25
,
17
,
65
,
215
,
117
,
116
,
93
,
247
,
189
,
125
,
223
,
255
,
141
,
241
,
120
,
252
,
63
,
78
,
167
,
83
,
126
,
255
,
115
,
191
,
203
,
71
,
63
,
246
,
253
,
60
,
250
,
232
,
23
,
214
,
173
,
91
,
183
,
124
,
205
,
194
,
120
,
124
,
71
,
55
,
234
,
238
,
24
,
141
,
186
,
155
,
33
,
174
,
109
,
45
,
183
,
69
,
198
,
186
,
140
,
88
,
144
,
205
,
156
,
36
,
106
,
24
,
214
,
84
,
53
,
147
,
106
,
165
,
239
,
215
,
142
,
255
,
237
,
191
,
243
,
183
,
103
,
191
,
246
,
107
,
255
,
219
,
50
,
113
,
2
,
8
,
44
,
19
,
209
,
184
,
28
,
219
,
188
,
197
,
54
,
195
,
48
,
48
,
26
,
141
,
48
,
38
,
34
,
107
,
227
,
198
,
205
,
62
,
124
,
248
,
48
,
255
,
221
,
63
,
250
,
21
,
254
,
193
,
47
,
254
,
87
,
124
,
55
,
232
,
120
,
155
,
77
,
159
,
249
,
40
,
221
,
73
,
104
,
109
,
116
,
111
,
215
,
181
,
31
,
150
,
204
,
116
,
54
,
99
,
58
,
157
,
49
,
155
,
205
,
152
,
205
,
102
,
212
,
48
,
80
,
85
,
100
,
38
,
85
,
69
,
85
,
49
,
215
,
90
,
35
,
51
,
145
,
68
,
187
,
228
,
111
,
76
,
167
,
211
,
127
,
246
,
244
,
51
,
79
,
158
,
95
,
89
,
89
,
187
,
243
,
217
,
103
,
159
,
126
,
248
,
154
,
107
,
118
,
127
,
100
,
52
,
30
,
223
,
213
,
117
,
221
,
14
,
240
,
66
,
107
,
13
,
73
,
16
,
96
,
155
,
0
,
100
,
19
,
128
,
36
,
172
,
17
,
86
,
97
,
25
,
89
,
220
,
112
,
195
,
117
,
220
,
121
,
231
,
237
,
28
,
56
,
112
,
128
,
204
,
36
,
91
,
226
,
161
,
199
,
134
,
136
,
96
,
46
,
34
,
136
,
8
,
36
,
17
,
17
,
100
,
38
,
146
,
200
,
76
,
50
,
131
,
42
,
113
,
197
,
21
,
59
,
151
,
127
,
241
,
151
,
126
,
241
,
31
,
110
,
221
,
182
,
245
,
137
,
243
,
231
,
206
,
125
,
227
,
87
,
255
,
215
,
127
,
122
,
240
,
153
,
167
,
159
,
62
,
182
,
119
,
239
,
222
,
67
,
207
,
61
,
255
,
210
,
217
,
67
,
135
,
143
,
206
,
214
,
173
,
91
,
226
,
228
,
201
,
147
,
252
,
255
,
169
,
227
,
109
,
62
,
112
,
2
,
214
,
111
,
88
,
100
,
50
,
233
,
63
,
156
,
25
,
59
,
167
,
211
,
158
,
97
,
24
,
24
,
134
,
1
,
169
,
24
,
106
,
192
,
54
,
17
,
129
,
109
,
170
,
10
,
73
,
216
,
166
,
181
,
70
,
102
,
98
,
67
,
102
,
50
,
26
,
141
,
238
,
254
,
91
,
127
,
235
,
51
,
127
,
127
,
58
,
153
,
221
,
186
,
121
,
243
,
166
,
143
,
108
,
216
,
176
,
113
,
231
,
120
,
52
,
138
,
11
,
32
,
192
,
54
,
24
,
162
,
5
,
146
,
136
,
72
,
230
,
194
,
5
,
1
,
68
,
16
,
145
,
68
,
66
,
89
,
96
,
179
,
176
,
176
,
192
,
35
,
143
,
124
,
130
,
190
,
239
,
249
,
220
,
231
,
254
,
128
,
51
,
103
,
206
,
48
,
244
,
61
,
217
,
26
,
93
,
215
,
17
,
17
,
216
,
102
,
46
,
34
,
152
,
155
,
205
,
102
,
84
,
21
,
17
,
1
,
4
,
216
,
220
,
127
,
255
,
125
,
163
,
235
,
174
,
223
,
243
,
189
,
182
,
190
,
119
,
221
,
226
,
130
,
55
,
172
,
95
,
158
,
94
,
123
,
237
,
53
,
167
,
239
,
190
,
231
,
174
,
35
,
251
,
247
,
237
,
123
,
229
,
200
,
161
,
67
,
207
,
156
,
59
,
119
,
246
,
107
,
131
,
227
,
233
,
126
,
82
,
135
,
178
,
197
,
240
,
235
,
191
,
249
,
47
,
249
,
171
,
214
,
120
,
155
,
219
,
111
,
185
,
153
,
67
,
175
,
29
,
203
,
205
,
91
,
55
,
252
,
116
,
73
,
119
,
77
,
38
,
83
,
38
,
147
,
9
,
147
,
201
,
132
,
201
,
108
,
74
,
85
,
81
,
37
,
170
,
138
,
97
,
24
,
136
,
8
,
50
,
147
,
185
,
136
,
192
,
54
,
182
,
129
,
196
,
214
,
194
,
35
,
143
,
124
,
226
,
131
,
119
,
222
,
121
,
199
,
221
,
235
,
214
,
173
,
91
,
191
,
110
,
105
,
41
,
50
,
27
,
115
,
153
,
73
,
70
,
227
,
146
,
32
,
35
,
9
,
130
,
224
,
146
,
8
,
200
,
76
,
8
,
192
,
129
,
205
,
69
,
182
,
88
,
183
,
110
,
29
,
119
,
220
,
113
,
7
,
119
,
221
,
117
,
23
,
235
,
215
,
47
,
115
,
228
,
240
,
97
,
222
,
60
,
121
,
18
,
201
,
64
,
48
,
103
,
27
,
73
,
84
,
21
,
146
,
176
,
77
,
102
,
178
,
48
,
30
,
179
,
107
,
215
,
21
,
252
,
196
,
79
,
254
,
36
,
187
,
174
,
184
,
2
,
213
,
64
,
215
,
90
,
100
,
102
,
183
,
254
,
130
,
43
,
175
,
188
,
114
,
215
,
158
,
61
,
187
,
239
,
216
,
182
,
125
,
219
,
135
,
218
,
104
,
244
,
239
,
163
,
250
,
161
,
104
,
220
,
23
,
65
,
222
,
114
,
203
,
205
,
39
,
206
,
157
,
247
,
234
,
67
,
15
,
220
,
195
,
254
,
253
,
251
,
249
,
171
,
208
,
120
,
155
,
219
,
110
,
185
,
153
,
174
,
235
,
218
,
120
,
113
,
244
,
119
,
74
,
190
,
233
,
252
,
202
,
10
,
147
,
201
,
148
,
201
,
116
,
194
,
116
,
58
,
101
,
58
,
235
,
25
,
250
,
1
,
73
,
84
,
21
,
182
,
153
,
147
,
132
,
109
,
34
,
130
,
204
,
96
,
46
,
51
,
248
,
208
,
135
,
62
,
148
,
55
,
223
,
124
,
51
,
219
,
182
,
109
,
103
,
52
,
26
,
17
,
17
,
68
,
64
,
102
,
99
,
46
,
34
,
200
,
76
,
34
,
32
,
51
,
177
,
77
,
107
,
13
,
99
,
36
,
147
,
145
,
32
,
99
,
204
,
92
,
4
,
23
,
101
,
6
,
59
,
118
,
236
,
224
,
190
,
251
,
238
,
225
,
193
,
119
,
63
,
200
,
116
,
54
,
227
,
229
,
151
,
94
,
102
,
50
,
153
,
50
,
30
,
143
,
176
,
77
,
85
,
81
,
85
,
84
,
21
,
153
,
73
,
215
,
53
,
150
,
151
,
215
,
241
,
31
,
252
,
216
,
143
,
242
,
177
,
143
,
125
,
148
,
57
,
169
,
192
,
198
,
54
,
17
,
129
,
44
,
70
,
227
,
17
,
59
,
118
,
238
,
224
,
154
,
107
,
174
,
25
,
109
,
221
,
190
,
117
,
219
,
116
,
50
,
185
,
119
,
229
,
252
,
202
,
15
,
73
,
254
,
200
,
85
,
87
,
109
,
95
,
159
,
45
,
14
,
62
,
255
,
252
,
139
,
103
,
127
,
247
,
243
,
191
,
207
,
193
,
215
,
223
,
224
,
47
,
83
,
227
,
109
,
110
,
186
,
233
,
6
,
206
,
158
,
95
,
99
,
105
,
221
,
248
,
135
,
250
,
26
,
238
,
152
,
78
,
167
,
172
,
173
,
173
,
49
,
157
,
205
,
232
,
251
,
129
,
201
,
100
,
74
,
13
,
133
,
109
,
108
,
83
,
85
,
204
,
117
,
221
,
136
,
136
,
96
,
110
,
54
,
155
,
97
,
155
,
135
,
30
,
122
,
128
,
31
,
251
,
177
,
31
,
229
,
166
,
155
,
110
,
98
,
97
,
97
,
76
,
102
,
35
,
51
,
201
,
76
,
32
,
120
,
75
,
102
,
146
,
25
,
204
,
101
,
6
,
178
,
201
,
76
,
46
,
49
,
17
,
1
,
17
,
68
,
4
,
17
,
129
,
109
,
36
,
33
,
21
,
17
,
176
,
109
,
251
,
22
,
222
,
253
,
238
,
7
,
185
,
118
,
247
,
110
,
94
,
124
,
241
,
69
,
78
,
157
,
58
,
141
,
109
,
50
,
19
,
12
,
17
,
65
,
215
,
53
,
70
,
163
,
17
,
215
,
93
,
183
,
135
,
159
,
248
,
201
,
159
,
96
,
231
,
206
,
157
,
72
,
133
,
106
,
160
,
170
,
176
,
141
,
109
,
140
,
177
,
133
,
100
,
108
,
179
,
101
,
235
,
22
,
246
,
92
,
183
,
135
,
133
,
165
,
133
,
238
,
244
,
169
,
83
,
187
,
39
,
147
,
181
,
143
,
102
,
196
,
71
,
126
,
253
,
127
,
255
,
103
,
53
,
38
,
247
,
221
,
117
,
231
,
237
,
147
,
231
,
94
,
124
,
137
,
191
,
44
,
141
,
183
,
185
,
241
,
198
,
235
,
89
,
191
,
97
,
209
,
67
,
213
,
13
,
195
,
48
,
124
,
223
,
100
,
50
,
101
,
232
,
7
,
166
,
179
,
25
,
211
,
217
,
12
,
201
,
88
,
38
,
51
,
105
,
173
,
33
,
137
,
136
,
96
,
52
,
26
,
33
,
153
,
190
,
239
,
217
,
180
,
105
,
19
,
63
,
250
,
163
,
159
,
230
,
231
,
126
,
238
,
103
,
185
,
251
,
238
,
187
,
89
,
88
,
24
,
3
,
65
,
4
,
23
,
101
,
38
,
17
,
129
,
109
,
34
,
130
,
8
,
200
,
108
,
92
,
18
,
68
,
4
,
16
,
16
,
92
,
18
,
16
,
17
,
68
,
38
,
193
,
5
,
22
,
223
,
148
,
168
,
68
,
215
,
37
,
183
,
220
,
122
,
51
,
119
,
220
,
126
,
27
,
123
,
247
,
62
,
203
,
177
,
99
,
199
,
200
,
72
,
90
,
235
,
232
,
90
,
99
,
52
,
234
,
88
,
90
,
28
,
211
,
247
,
61
,
207
,
61
,
247
,
28
,
235
,
55
,
172
,
103
,
215
,
174
,
157
,
180
,
214
,
144
,
196
,
156
,
36
,
164
,
66
,
22
,
82
,
17
,
128
,
109
,
90
,
107
,
236
,
220
,
185
,
157
,
171
,
174
,
186
,
138
,
243
,
231
,
207
,
230
,
233
,
211
,
167
,
174
,
12
,
226
,
227
,
209
,
229
,
157
,
147
,
89
,
191
,
111
,
251
,
142
,
157
,
135
,
111
,
191
,
237
,
86
,
246
,
237
,
219
,
207
,
191
,
171
,
198
,
219
,
188
,
252
,
202
,
62
,
174
,
191
,
238
,
58
,
192
,
107
,
54
,
159
,
236
,
251
,
217
,
198
,
217
,
108
,
198
,
80
,
133
,
36
,
230
,
84
,
98
,
206
,
54
,
153
,
73
,
102
,
50
,
153
,
76
,
168
,
42
,
62
,
240
,
129
,
247
,
243
,
203
,
191
,
252
,
75
,
252
,
248
,
143
,
255
,
56
,
187
,
119
,
95
,
67
,
102
,
0
,
65
,
107
,
73
,
102
,
35
,
34
,
152
,
203
,
12
,
50
,
147
,
204
,
4
,
76
,
68
,
2
,
6
,
2
,
219
,
68
,
4
,
17
,
96
,
155
,
57
,
27
,
108
,
17
,
4
,
145
,
129
,
101
,
8
,
136
,
224
,
34
,
203
,
216
,
102
,
215
,
174
,
157
,
220
,
118
,
199
,
109
,
28
,
56
,
112
,
128
,
55
,
79
,
158
,
100
,
212
,
37
,
59
,
118
,
108
,
227
,
193
,
135
,
238
,
103
,
195
,
134
,
245
,
156
,
58
,
117
,
134
,
55
,
222
,
56
,
200
,
151
,
191
,
252
,
37
,
206
,
157
,
59
,
207
,
205
,
183
,
220
,
194
,
242
,
242
,
50
,
150
,
152
,
179
,
5
,
97
,
36
,
3
,
193
,
220
,
48
,
244
,
68
,
152
,
165
,
229
,
101
,
174
,
187
,
126
,
15
,
37
,
113
,
232
,
240
,
209
,
110
,
24
,
234
,
182
,
136
,
252
,
216
,
104
,
212
,
206
,
175
,
77
,
39
,
207
,
222
,
120
,
227
,
245
,
195
,
171
,
251
,
95
,
227
,
223
,
69
,
227
,
50
,
174
,
191
,
238
,
90
,
52
,
232
,
168
,
131
,
205
,
217
,
242
,
123
,
134
,
126
,
136
,
42
,
49
,
155
,
206
,
232
,
135
,
162
,
159
,
13
,
204
,
101
,
38
,
146
,
153
,
78
,
39
,
44
,
175
,
95
,
230
,
239
,
254
,
244
,
79
,
241
,
75
,
191
,
244
,
11
,
220
,
123
,
223
,
189
,
116
,
221
,
136
,
136
,
32
,
51
,
128
,
36
,
179
,
49
,
23
,
17
,
100
,
38
,
54
,
68
,
4
,
151
,
4
,
223
,
20
,
68
,
4
,
23
,
5
,
216
,
38
,
34
,
137
,
224
,
162
,
0
,
36
,
1
,
6
,
2
,
219
,
72
,
194
,
6
,
35
,
170
,
6
,
182
,
111
,
223
,
202
,
189
,
247
,
222
,
195
,
174
,
93
,
59
,
185
,
250
,
170
,
43
,
121
,
224
,
129
,
123
,
185
,
247
,
190
,
187
,
216
,
115
,
221
,
53
,
28
,
120
,
253
,
0
,
231
,
206
,
157
,
103
,
214
,
207
,
120
,
234
,
169
,
63
,
101
,
255
,
171
,
175
,
114
,
251
,
109
,
183
,
178
,
188
,
188
,
76
,
213
,
128
,
109
,
36
,
17
,
201
,
69
,
85
,
69
,
85
,
1
,
102
,
168
,
129
,
214
,
117
,
92
,
117
,
213
,
46
,
22
,
23
,
23
,
56
,
240
,
218
,
27
,
244
,
125
,
191
,
57
,
91
,
126
,
95
,
215
,
229
,
122
,
13
,
122
,
252
,
198
,
27
,
175
,
155
,
236
,
219
,
255
,
26
,
255
,
95
,
53
,
46
,
99
,
223
,
254
,
215
,
216
,
189
,
231
,
106
,
151
,
244
,
188
,
237
,
123
,
250
,
126
,
184
,
81
,
85
,
24
,
51
,
244
,
3
,
17
,
65
,
107
,
141
,
214
,
26
,
125
,
223
,
179
,
105
,
211
,
70
,
254
,
235
,
95
,
250
,
69
,
126
,
234
,
167
,
126
,
130
,
141
,
27
,
54
,
98
,
65
,
68
,
16
,
193
,
5
,
65
,
102
,
71
,
68
,
2
,
65
,
68
,
146
,
217
,
128
,
32
,
34
,
137
,
72
,
90
,
235
,
136
,
8
,
230
,
34
,
2
,
219
,
204
,
5
,
193
,
156
,
13
,
216
,
4
,
193
,
156
,
13
,
118
,
96
,
23
,
150
,
33
,
184
,
32
,
48
,
34
,
2
,
108
,
179
,
97
,
253
,
50
,
183
,
220
,
114
,
51
,
123
,
246
,
92
,
67
,
235
,
26
,
163
,
81
,
199
,
246
,
237
,
219
,
216
,
178
,
121
,
51
,
47
,
60
,
255
,
34
,
253
,
48
,
96
,
155
,
125
,
175
,
236
,
231
,
165
,
23
,
95
,
226
,
214
,
91
,
111
,
101
,
243
,
150
,
77
,
88
,
96
,
27
,
169
,
144
,
10
,
187
,
176
,
141
,
109
,
176
,
177
,
12
,
152
,
93
,
187
,
174
,
96
,
113
,
105
,
145
,
87
,
247
,
191
,
74
,
223
,
207
,
70
,
153
,
249
,
158
,
204
,
184
,
186
,
134
,
225
,
177
,
155
,
111
,
190
,
126
,
101
,
180
,
48
,
226
,
196
,
137
,
147
,
252
,
69
,
53
,
222
,
193
,
85
,
187
,
175
,
68
,
131
,
206
,
75
,
250
,
211
,
174
,
181
,
251
,
193
,
87
,
151
,
69
,
16
,
64
,
96
,
155
,
217
,
108
,
198
,
194
,
194
,
152
,
159
,
255
,
249
,
159
,
227
,
111
,
254
,
205
,
207
,
48
,
26
,
143
,
136
,
8
,
34
,
130
,
136
,
32
,
51
,
137
,
8
,
50
,
27
,
17
,
65
,
68
,
144
,
153
,
68
,
4
,
153
,
73
,
102
,
18
,
17
,
204
,
69
,
152
,
136
,
224
,
45
,
17
,
65
,
68
,
96
,
131
,
45
,
140
,
177
,
141
,
101
,
100
,
17
,
17
,
128
,
145
,
69
,
68
,
32
,
9
,
171
,
176
,
141
,
109
,
108
,
99
,
139
,
165
,
165
,
37
,
54
,
108
,
88
,
79
,
102
,
208
,
90
,
227
,
202
,
171
,
174
,
224
,
220
,
249
,
243
,
188
,
254
,
218
,
27
,
68
,
36
,
115
,
7
,
15
,
30
,
228
,
197
,
23
,
95
,
226
,
206
,
119
,
189
,
139
,
205
,
155
,
55
,
33
,
9
,
91
,
84
,
21
,
17
,
193
,
91
,
36
,
35
,
21
,
115
,
182
,
216
,
177
,
99
,
59
,
75
,
75
,
75
,
188
,
252
,
242
,
126
,
250
,
126
,
200
,
150
,
121
,
87
,
100
,
187
,
106
,
58
,
12
,
95
,
218
,
184
,
97
,
227
,
234
,
171
,
251
,
95
,
227
,
47
,
170
,
241
,
14
,
222
,
56
,
112
,
144
,
173
,
155
,
183
,
48
,
30
,
181
,
163
,
150
,
190
,
38
,
124
,
147
,
97
,
79
,
215
,
186
,
28
,
134
,
129
,
217
,
108
,
198
,
250
,
245
,
235
,
249
,
217
,
159
,
253
,
25
,
62
,
243
,
153
,
255
,
144
,
209
,
104
,
4
,
17
,
180
,
76
,
50
,
147
,
204
,
36
,
34
,
200
,
12
,
32
,
153
,
203
,
76
,
34
,
130
,
136
,
32
,
51
,
137
,
8
,
222
,
98
,
155
,
75
,
204
,
156
,
109
,
108
,
115
,
73
,
96
,
155
,
136
,
192
,
54
,
115
,
17
,
96
,
27
,
8
,
230
,
108
,
48
,
38
,
194
,
72
,
102
,
24
,
10
,
48
,
96
,
90
,
107
,
44
,
45
,
45
,
50
,
30
,
143
,
24
,
47
,
140
,
217
,
190
,
109
,
59
,
207
,
62
,
251
,
60
,
103
,
207
,
157
,
7
,
76
,
68
,
114
,
232
,
208
,
97
,
14
,
29
,
60
,
200
,
61
,
247
,
220
,
205
,
242
,
242
,
50
,
182
,
136
,
48
,
182
,
168
,
26
,
176
,
141
,
109
,
36
,
17
,
17
,
216
,
98
,
110
,
231
,
206
,
157
,
200
,
197
,
171
,
251
,
95
,
165
,
74
,
145
,
173
,
189
,
43
,
35
,
54
,
206
,
166
,
179
,
71
,
175
,
191
,
110
,
207
,
236
,
181
,
215
,
14
,
240
,
23
,
209
,
248
,
22
,
142
,
30
,
59
,
198
,
198
,
13
,
203
,
196
,
168
,
29
,
173
,
97
,
248
,
125
,
219
,
71
,
183
,
108
,
218
,
116
,
237
,
21
,
59
,
119
,
236
,
184
,
249
,
230
,
155
,
248
,
233
,
191
,
247
,
119
,
249
,
244
,
143
,
124
,
154
,
241
,
194
,
136
,
204
,
32
,
72
,
34
,
130
,
204
,
36
,
34
,
136
,
8
,
50
,
147
,
204
,
36
,
34
,
137
,
8
,
34
,
130
,
204
,
36
,
34
,
176
,
77
,
68
,
96
,
27
,
155
,
11
,
2
,
169
,
0
,
19
,
145
,
128
,
177
,
185
,
36
,
192
,
64
,
96
,
34
,
130
,
32
,
144
,
10
,
108
,
100
,
35
,
21
,
198
,
204
,
73
,
5
,
24
,
16
,
54
,
23
,
24
,
48
,
182
,
176
,
204
,
250
,
245
,
203
,
156
,
61
,
115
,
150
,
23
,
94
,
120
,
9
,
99
,
48
,
100
,
118
,
28
,
56
,
112
,
144
,
147
,
39
,
79
,
241
,
192
,
253
,
247
,
50
,
26
,
53
,
108
,
83
,
85
,
216
,
2
,
2
,
73
,
100
,
114
,
145
,
36
,
108
,
176
,
205
,
206
,
157
,
59
,
56
,
117
,
242
,
36
,
135
,
14
,
29
,
37
,
35
,
35
,
91
,
222
,
29
,
48
,
153
,
76
,
214
,
30
,
187
,
238
,
186
,
61
,
126
,
253
,
192
,
27
,
124
,
167
,
26
,
223
,
198
,
241
,
19
,
39
,
57
,
124
,
232
,
40
,
191
,
250
,
107
,
191
,
186
,
242
,
145
,
143
,
124
,
100
,
239
,
39
,
63
,
249
,
3
,
31
,
249
,
129
,
71
,
30
,
185
,
229
,
147
,
159
,
250
,
36
,
119
,
190
,
235
,
93
,
100
,
75
,
178
,
53
,
130
,
32
,
35
,
200
,
76
,
230
,
34
,
160
,
181
,
198
,
92
,
102
,
146
,
153
,
180
,
214
,
176
,
77
,
68
,
48
,
23
,
17
,
204
,
73
,
34
,
34
,
184
,
196
,
68
,
128
,
109
,
222
,
34
,
21
,
127
,
78
,
198
,
128
,
45
,
100
,
97
,
132
,
108
,
2
,
144
,
4
,
8
,
201
,
128
,
1
,
99
,
131
,
84
,
72
,
66
,
18
,
17
,
73
,
68
,
176
,
113
,
211
,
70
,
158
,
123
,
246
,
121
,
206
,
159
,
95
,
37
,
162
,
17
,
17
,
24
,
216
,
191
,
111
,
63
,
227
,
209
,
136
,
119
,
189
,
235
,
14
,
108
,
99
,
11
,
219
,
204
,
217
,
194
,
54
,
182
,
128
,
192
,
22
,
96
,
50
,
147
,
29
,
59
,
182
,
179
,
111
,
223
,
126
,
206
,
157
,
59
,
79
,
16
,
173
,
107
,
237
,
222
,
214
,
186
,
231
,
118
,
108
,
223
,
250
,
194
,
166
,
205
,
155
,
121
,
227
,
141
,
131
,
124
,
39
,
146
,
239
,
208
,
149
,
87
,
94
,
193
,
246
,
237
,
91
,
127
,
96
,
215
,
174
,
157
,
31
,
222
,
185
,
115
,
7
,
203
,
203
,
235
,
80
,
21
,
216
,
96
,
46
,
138
,
72
,
164
,
194
,
54
,
115
,
182
,
153
,
139
,
72
,
34
,
130
,
203
,
145
,
68
,
102
,
146
,
153
,
128
,
153
,
139
,
8
,
254
,
159
,
108
,
176
,
13
,
54
,
68
,
32
,
9
,
73
,
24
,
227
,
8
,
8
,
254
,
156
,
36
,
34
,
130
,
136
,
196
,
54
,
182
,
0
,
19
,
1
,
17
,
9
,
24
,
73
,
92
,
113
,
197
,
14
,
238
,
124
,
215
,
237
,
100
,
54
,
90
,
107
,
216
,
38
,
35
,
176
,
204
,
111
,
252
,
250
,
191
,
224
,
241
,
175
,
61
,
65
,
132
,
145
,
140
,
36
,
36
,
1
,
129
,
109
,
108
,
83
,
85
,
216
,
198
,
54
,
132
,
216
,
177
,
115
,
27
,
239
,
123
,
223
,
131
,
216
,
102
,
24
,
122
,
100
,
109
,
203
,
204
,
255
,
246
,
232
,
241
,
55
,
111
,
24
,
143
,
70
,
124
,
167
,
26
,
223
,
129
,
47
,
252
,
225
,
239
,
115
,
246
,
244
,
233
,
77
,
155
,
55
,
111
,
254
,
149
,
165
,
165
,
117
,
183
,
102
,
36
,
68
,
210
,
90
,
66
,
4
,
217
,
146
,
140
,
196
,
230
,
162
,
214
,
146
,
136
,
192
,
134
,
204
,
36
,
34
,
176
,
33
,
34
,
136
,
8
,
50
,
147
,
214
,
26
,
182
,
249
,
127
,
51
,
118
,
17
,
145
,
216
,
6
,
204
,
156
,
36
,
108
,
17
,
128
,
36
,
28
,
38
,
8
,
176
,
40
,
21
,
24
,
44
,
35
,
21
,
145
,
96
,
11
,
169
,
144
,
138
,
57
,
219
,
84
,
21
,
182
,
144
,
140
,
100
,
2
,
51
,
234
,
70
,
60
,
245
,
141
,
167
,
233
,
251
,
129
,
42
,
97
,
27
,
34
,
56
,
191
,
178
,
202
,
225
,
35
,
135
,
121
,
240
,
161
,
7
,
88
,
94
,
183
,
12
,
24
,
169
,
176
,
69
,
4
,
84
,
137
,
170
,
1
,
219
,
72
,
2
,
11
,
89
,
108
,
218
,
188
,
145
,
67
,
7
,
143
,
112
,
236
,
232
,
9
,
32
,
232
,
186
,
182
,
43
,
35
,
125
,
246
,
236
,
217
,
63
,
188
,
238
,
218
,
107
,
244
,
198
,
193
,
67
,
124
,
59
,
141
,
111
,
227
,
119
,
126
,
251
,
179
,
108
,
218
,
180
,
145
,
174
,
235
,
62
,
182
,
126
,
253
,
250
,
159
,
233
,
90
,
55
,
142
,
76
,
8
,
46
,
138
,
8
,
34
,
147
,
136
,
4
,
67
,
215
,
117
,
68
,
4
,
16
,
180
,
214
,
0
,
19
,
209
,
200
,
76
,
34
,
130
,
185
,
136
,
192
,
54
,
115
,
182
,
121
,
139
,
109
,
108
,
51
,
103
,
27
,
73
,
204
,
217
,
134
,
0
,
89
,
4
,
1
,
6
,
169
,
48
,
198
,
50
,
82
,
17
,
128
,
45
,
108
,
99
,
27
,
73
,
128
,
145
,
140
,
36
,
108
,
99
,
11
,
219
,
204
,
73
,
197
,
186
,
165
,
37
,
94
,
122
,
121
,
31
,
39
,
142
,
191
,
73
,
73
,
188
,
37
,
51
,
56
,
116
,
232
,
48
,
155
,
54
,
109
,
228
,
206
,
59
,
111
,
71
,
18
,
182
,
144
,
4
,
4
,
96
,
230
,
108
,
99
,
155
,
108
,
129
,
84
,
140
,
186
,
17
,
93
,
55
,
226
,
249
,
231
,
95
,
64
,
50
,
153
,
73
,
102
,
222
,
212
,
186
,
246
,
39
,
227
,
241
,
248
,
213
,
173
,
219
,
182
,
112
,
248
,
240
,
81
,
190
,
149
,
228
,
219
,
24
,
141
,
70
,
124
,
245
,
79
,
30
,
111
,
11
,
11
,
11
,
63
,
220
,
186
,
92
,
150
,
141
,
100
,
34
,
146
,
204
,
4
,
2
,
149
,
80
,
21
,
17
,
96
,
27
,
219
,
68
,
112
,
129
,
137
,
72
,
108
,
97
,
27
,
73
,
204
,
217
,
70
,
18
,
182
,
105
,
173
,
49
,
103
,
155
,
185
,
204
,
64
,
18
,
96
,
50
,
147
,
185
,
214
,
26
,
173
,
37
,
115
,
146
,
192
,
64
,
4
,
24
,
146
,
32
,
34
,
33
,
76
,
68
,
128
,
3
,
27
,
34
,
130
,
136
,
0
,
140
,
13
,
17
,
193
,
55
,
153
,
185
,
165
,
165
,
69
,
110
,
187
,
245
,
102
,
50
,
147
,
204
,
68
,
18
,
96
,
108
,
3
,
201
,
231
,
126
,
239
,
243
,
28
,
58
,
120
,
24
,
48
,
182
,
153
,
147
,
10
,
219
,
68
,
4
,
111
,
145
,
140
,
13
,
170
,
226
,
198
,
27
,
246
,
176
,
123
,
247
,
213
,
244
,
179
,
25
,
179
,
217
,
20
,
169
,
182
,
183
,
214
,
254
,
211
,
217
,
172
,
95
,
94
,
90
,
90
,
226
,
219
,
73
,
190
,
141
,
108
,
112
,
219
,
237
,
55
,
95
,
51
,
234
,
186
,
15
,
102
,
36
,
17
,
144
,
105
,
112
,
97
,
27
,
91
,
24
,
51
,
103
,
155
,
8
,
136
,
0
,
27
,
36
,
3
,
198
,
22
,
118
,
97
,
23
,
146
,
176
,
141
,
36
,
108
,
83
,
85
,
84
,
21
,
85
,
3
,
32
,
108
,
176
,
141
,
109
,
108
,
19
,
1
,
146
,
80
,
153
,
57
,
89
,
148
,
197
,
69
,
6
,
99
,
176
,
145
,
140
,
109
,
34
,
32
,
2
,
108
,
115
,
73
,
16
,
17
,
216
,
38
,
34
,
176
,
141
,
84
,
128
,
32
,
204
,
77
,
55
,
94
,
199
,
104
,
220
,
97
,
23
,
173
,
5
,
17
,
92
,
96
,
198
,
227
,
17
,
111
,
28
,
56
,
200
,
23
,
190
,
240
,
40
,
96
,
36
,
243
,
150
,
170
,
162
,
74
,
24
,
99
,
138
,
26
,
122
,
40
,
225
,
18
,
227
,
81
,
227
,
93
,
119
,
220
,
138
,
129
,
26
,
196
,
48
,
12
,
4
,
254
,
104
,
102
,
124
,
111
,
215
,
26
,
223
,
78
,
242
,
109
,
44
,
45
,
45
,
49
,
30
,
47
,
220
,
215
,
186
,
182
,
199
,
54
,
182
,
144
,
132
,
44
,
170
,
6
,
108
,
131
,
65
,
18
,
85
,
66
,
50
,
16
,
188
,
165
,
74
,
84
,
21
,
85
,
133
,
109
,
164
,
162
,
170
,
136
,
224
,
2
,
35
,
21
,
182
,
200
,
12
,
192
,
216
,
102
,
174
,
74
,
216
,
66
,
50
,
85
,
3
,
165
,
66
,
50
,
153
,
137
,
45
,
84
,
194
,
54
,
182
,
145
,
4
,
2
,
99
,
74
,
133
,
36
,
230
,
170
,
4
,
4
,
17
,
96
,
27
,
201
,
216
,
226
,
45
,
42
,
177
,
243
,
138
,
237
,
92
,
121
,
229
,
14
,
50
,
131
,
136
,
0
,
76
,
102
,
163
,
181
,
198
,
220
,
163
,
143
,
126
,
137
,
19
,
39
,
78
,
146
,
13
,
36
,
33
,
137
,
136
,
192
,
22
,
150
,
176
,
5
,
54
,
17
,
65
,
112
,
201
,
245
,
55
,
92
,
203
,
134
,
245
,
203
,
76
,
166
,
19
,
250
,
126
,
64
,
210
,
198
,
204
,
248
,
204
,
217
,
243
,
231
,
199
,
239
,
126
,
207
,
3
,
124
,
43
,
201
,
183
,
240
,
220
,
115
,
207
,
114
,
195
,
13
,
123
,
232
,
186
,
238
,
193
,
136
,
24
,
219
,
198
,
54
,
146
,
176
,
77
,
68
,
18
,
17
,
128
,
201
,
76
,
50
,
19
,
91
,
72
,
162
,
170
,
152
,
139
,
128
,
214
,
146
,
136
,
96
,
206
,
22
,
32
,
134
,
161
,
167
,
170
,
7
,
132
,
45
,
164
,
66
,
50
,
182
,
137
,
8
,
50
,
131
,
136
,
224
,
146
,
32
,
34
,
136
,
0
,
3
,
153
,
13
,
2
,
108
,
33
,
137
,
57
,
99
,
108
,
99
,
155
,
57
,
219
,
216
,
70
,
18
,
182
,
153
,
179
,
69
,
68
,
48
,
103
,
153
,
185
,
229
,
229
,
37
,
174
,
185
,
230
,
106
,
108
,
211
,
90
,
3
,
130
,
57
,
73
,
116
,
221
,
136
,
3
,
175
,
31
,
228
,
79
,
159
,
122
,
6
,
219
,
72
,
162
,
170
,
168
,
42
,
170
,
10
,
219
,
216
,
252
,
185
,
136
,
192
,
18
,
155
,
55
,
109
,
228
,
202
,
171
,
175
,
96
,
24
,
6
,
134
,
97
,
96
,
24
,
138
,
11
,
30
,
94
,
88
,
24
,
223
,
213
,
90
,
227
,
91
,
73
,
190
,
133
,
87
,
246
,
189
,
196
,
231
,
191
,
240
,
229
,
133
,
209
,
104
,
116
,
71
,
102
,
98
,
155
,
32
,
136
,
8
,
144
,
209
,
48
,
96
,
153
,
32
,
176
,
133
,
93
,
12
,
53
,
96
,
139
,
57
,
73
,
204
,
217
,
6
,
140
,
109
,
34
,
2
,
91
,
72
,
66
,
18
,
54
,
68
,
4
,
182
,
145
,
10
,
91
,
72
,
194
,
6
,
219
,
216
,
34
,
18
,
108
,
99
,
131
,
101
,
84
,
3
,
168
,
176
,
184
,
32
,
176
,
193
,
22
,
96
,
230
,
108
,
144
,
4
,
24
,
16
,
146
,
1
,
51
,
103
,
27
,
99
,
108
,
131
,
69
,
6
,
92
,
187
,
251
,
106
,
70
,
93
,
135
,
109
,
90
,
107
,
204
,
217
,
6
,
204
,
172
,
31
,
248
,
202
,
87
,
191
,
206
,
172
,
47
,
36
,
17
,
17
,
72
,
34
,
49
,
137
,
73
,
192
,
50
,
150
,
40
,
137
,
185
,
214
,
53
,
174
,
189
,
230
,
106
,
230
,
170
,
68
,
213
,
128
,
228
,
93
,
45
,
242
,
145
,
43
,
175
,
220
,
193
,
67
,
15
,
222
,
207
,
59
,
73
,
190
,
5
,
73
,
44
,
173
,
91
,
220
,
16
,
25
,
187
,
249
,
51
,
178
,
176
,
141
,
13
,
198
,
204
,
73
,
194
,
54
,
102
,
206
,
148
,
6
,
108
,
35
,
137
,
97
,
24
,
24
,
134
,
162
,
170
,
144
,
132
,
84
,
216
,
96
,
27
,
201
,
216
,
194
,
54
,
146
,
145
,
140
,
100
,
108
,
35
,
139
,
170
,
66
,
18
,
85
,
3
,
82
,
97
,
11
,
108
,
2
,
19
,
54
,
145
,
208
,
50
,
1
,
99
,
132
,
109
,
108
,
3
,
193
,
156
,
205
,
159
,
49
,
54
,
23
,
25
,
3
,
102
,
78
,
42
,
84
,
3
,
187
,
118
,
237
,
100
,
121
,
121
,
153
,
136
,
32
,
2
,
50
,
147
,
136
,
128
,
8
,
34
,
147
,
103
,
159
,
125
,
158
,
147
,
39
,
79
,
49
,
103
,
131
,
109
,
192
,
96
,
99
,
137
,
136
,
192
,
64
,
4
,
216
,
66
,
42
,
118
,
94
,
177
,
157
,
174
,
107
,
12
,
195
,
192
,
48
,
20
,
82
,
113
,
193
,
199
,
95
,
127
,
245
,
208
,
102
,
219
,
188
,
147
,
228
,
91
,
24
,
141
,
58
,
22
,
198
,
11
,
75
,
192
,
14
,
219
,
216
,
198
,
50
,
146
,
176
,
133
,
109
,
36
,
97
,
27
,
12
,
182
,
49
,
96
,
115
,
129
,
137
,
8
,
170
,
132
,
109
,
36
,
3
,
198
,
6
,
169
,
136
,
8
,
108
,
51
,
12
,
133
,
36
,
164
,
34
,
2
,
108
,
35
,
23
,
118
,
225
,
48
,
229
,
226
,
146
,
192
,
54
,
210
,
192
,
225
,
195
,
135
,
120
,
230
,
153
,
167
,
121
,
225
,
133
,
231
,
57
,
118
,
252
,
24
,
114
,
145
,
17
,
216
,
66
,
42
,
108
,
17
,
1
,
17
,
32
,
25
,
73
,
72
,
133
,
109
,
130
,
96
,
206
,
24
,
12
,
178
,
217
,
188
,
121
,
35
,
203
,
203
,
75
,
64
,
0
,
65
,
107
,
141
,
214
,
26
,
151
,
152
,
227
,
199
,
79
,
240
,
250
,
107
,
175
,
147
,
153
,
72
,
194
,
54
,
16
,
148
,
132
,
13
,
182
,
177
,
4
,
4
,
82
,
97
,
196
,
230
,
45
,
155
,
88
,
92
,
92
,
64
,
85
,
84
,
13
,
12
,
195
,
128
,
237
,
59
,
51
,
243
,
142
,
204
,
224
,
157
,
116
,
124
,
11
,
163
,
174
,
195
,
242
,
250
,
8
,
22
,
165
,
129
,
200
,
14
,
34
,
176
,
205
,
156
,
109
,
170
,
6
,
130
,
70
,
89
,
180
,
174
,
35
,
72
,
44
,
81
,
12
,
200
,
34
,
34
,
176
,
141
,
109
,
34
,
184
,
32
,
201
,
12
,
170
,
10
,
201
,
204
,
101
,
6
,
146
,
1
,
35
,
9
,
219
,
148
,
138
,
136
,
196
,
18
,
24
,
130
,
11
,
100
,
158
,
254
,
198
,
55
,
248
,
173
,
223
,
254
,
44
,
71
,
14
,
31
,
165
,
4
,
91
,
54
,
109
,
230
,
246
,
59
,
110
,
229
,
193
,
135
,
30
,
228
,
202
,
171
,
174
,
36
,
34
,
168
,
42
,
36
,
81
,
85
,
128
,
1
,
243
,
22
,
169
,
168
,
42
,
108
,
99
,
140
,
37
,
70
,
227
,
17
,
155
,
54
,
111
,
228
,
240
,
145
,
227
,
16
,
102
,
46
,
34
,
136
,
8
,
34
,
146
,
26
,
6
,
246
,
237
,
123
,
141
,
123
,
239
,
126
,
23
,
184
,
8
,
11
,
243
,
103
,
108
,
50
,
130
,
146
,
168
,
42
,
48
,
80
,
98
,
121
,
105
,
137
,
197
,
165
,
5
,
78
,
159
,
62
,
75
,
14
,
73
,
215
,
4
,
205
,
155
,
51
,
121
,
223
,
194
,
194
,
226
,
99
,
239
,
126
,
232
,
94
,
190
,
250
,
181
,
111
,
240
,
118
,
29
,
239
,
224
,
7
,
30
,
249
,
56
,
88
,
188
,
242
,
202
,
43
,
55
,
222
,
183
,
241
,
238
,
245
,
94
,
24
,
97
,
11
,
57
,
104
,
36
,
146
,
201
,
228
,
2
,
33
,
65
,
107
,
13
,
11
,
8
,
99
,
12
,
134
,
48
,
36
,
137
,
84
,
68
,
4
,
32
,
106
,
16
,
163
,
241
,
8
,
2
,
108
,
17
,
17
,
92
,
20
,
70
,
26
,
144
,
141
,
109
,
108
,
3
,
6
,
131
,
74
,
204
,
157
,
124
,
243
,
77
,
126
,
231
,
119
,
254
,
53
,
127
,
250
,
212
,
94
,
206
,
157
,
95
,
101
,
24
,
6
,
146
,
198
,
222
,
103
,
159
,
227
,
235
,
143
,
127
,
157
,
135
,
31
,
254
,
48
,
247
,
63
,
120
,
31
,
163
,
241
,
2
,
146
,
177
,
3
,
91
,
216
,
102
,
78
,
18
,
54
,
216
,
198
,
18
,
150
,
49
,
166
,
181
,
198
,
120
,
60
,
38
,
2
,
186
,
236
,
152
,
14
,
61
,
115
,
54
,
100
,
38
,
195
,
96
,
94
,
123
,
245
,
0
,
53
,
244
,
128
,
1
,
19
,
17
,
72
,
166
,
170
,
104
,
173
,
97
,
46
,
176
,
177
,
141
,
92
,
68
,
4
,
75
,
139
,
11
,
84
,
137
,
42
,
161
,
18
,
170
,
66
,
248
,
125
,
199
,
79
,
188
,
185
,
48
,
234
,
186
,
41
,
151
,
209
,
241
,
14
,
178
,
5
,
63
,
253
,
247
,
254
,
179
,
117
,
63
,
242
,
233
,
31
,
254
,
79
,
238
,
190
,
231
,
206
,
101
,
73
,
100
,
38
,
216
,
24
,
131
,
133
,
20
,
68
,
4
,
151
,
4
,
32
,
108
,
209
,
90
,
67
,
18
,
9
,
84
,
152
,
32
,
56
,
115
,
234
,
20
,
79
,
61
,
249
,
4
,
47
,
189
,
242
,
10
,
235
,
214
,
45
,
243
,
61
,
223
,
243
,
65
,
246
,
236
,
185
,
14
,
147
,
12
,
85
,
204
,
25
,
99
,
137
,
57
,
219
,
148
,
6
,
194
,
32
,
137
,
140
,
224
,
141
,
131
,
7
,
121
,
225
,
165
,
87
,
56
,
125
,
230
,
28
,
147
,
217
,
12
,
167
,
32
,
130
,
213
,
179
,
107
,
156
,
223
,
187
,
194
,
177
,
227
,
39
,
56
,
118
,
252
,
56
,
15
,
127
,
223
,
135
,
25
,
47
,
44
,
0
,
198
,
54
,
146
,
169
,
42
,
36
,
97
,
11
,
217
,
4
,
96
,
46
,
48
,
100
,
4
,
11
,
139
,
11
,
4
,
1
,
152
,
214
,
26
,
195
,
48
,
144
,
25
,
64
,
80
,
85
,
28
,
63
,
118
,
130
,
233
,
100
,
202
,
226
,
210
,
24
,
8
,
108
,
192
,
134
,
8
,
74
,
66
,
85
,
16
,
193
,
92
,
56
,
104
,
153
,
44
,
44
,
44
,
82
,
85
,
216
,
66
,
54
,
146
,
136
,
204
,
59
,
22
,
198
,
227
,
45
,
16
,
71
,
184
,
140
,
142
,
119
,
48
,
110
,
141
,
219
,
110
,
190
,
233
,
190
,
233
,
116
,
242
,
33
,
219
,
216
,
66
,
18
,
17
,
1
,
81
,
32
,
200
,
108
,
132
,
131
,
204
,
164
,
170
,
128
,
36
,
34
,
176
,
1
,
131
,
109
,
144
,
56
,
124
,
248
,
16
,
159
,
253
,
236
,
255
,
197
,
147
,
95
,
127
,
130
,
147
,
167
,
78
,
209
,
151
,
248
,
218
,
227
,
95
,
231
,
103
,
126
,
230
,
103
,
184
,
254
,
250
,
235
,
81
,
9
,
115
,
65
,
128
,
36
,
108
,
176
,
69
,
73
,
132
,
185
,
192
,
148
,
138
,
35
,
71
,
15
,
115
,
238
,
220
,
121
,
102
,
195
,
140
,
133
,
205
,
29
,
59
,
174
,
217
,
201
,
120
,
97
,
204
,
137
,
163
,
39
,
56
,
125
,
240
,
44
,
7
,
15
,
31
,
229
,
247
,
62
,
247
,
111
,
200
,
22
,
124
,
232
,
195
,
255
,
30
,
173
,
107
,
84
,
21
,
182
,
128
,
128
,
0
,
91
,
96
,
99
,
9
,
91
,
216
,
166
,
36
,
250
,
217
,
64
,
169
,
144
,
76
,
102
,
71
,
102
,
34
,
9
,
219
,
100
,
54
,
78
,
158
,
60
,
197
,
100
,
50
,
101
,
97
,
113
,
140
,
84
,
216
,
92
,
96
,
34
,
192
,
18
,
182
,
152
,
179
,
140
,
44
,
140
,
137
,
12
,
84
,
69
,
149
,
168
,
42
,
134
,
128
,
110
,
60
,
222
,
158
,
153
,
87
,
3
,
71
,
184
,
140
,
228
,
50
,
126
,
240
,
83
,
159
,
96
,
235
,
230
,
141
,
140
,
23
,
198
,
31
,
30
,
250
,
126
,
107
,
213
,
0
,
4
,
146
,
144
,
10
,
187
,
176
,
11
,
91
,
204
,
85
,
21
,
182
,
169
,
234
,
177
,
6
,
108
,
33
,
21
,
200
,
28
,
57
,
116
,
144
,
95
,
255
,
231
,
255
,
156
,
47
,
124
,
225
,
139
,
236
,
59
,
240
,
58
,
167
,
166
,
167
,
89
,
141
,
21
,
190
,
241
,
220
,
147
,
252
,
198
,
111
,
254
,
6
,
171
,
171
,
171
,
88
,
198
,
18
,
150
,
128
,
32
,
50
,
104
,
93
,
71
,
102
,
98
,
27
,
91
,
216
,
197
,
234
,
234
,
121
,
134
,
26
,
136
,
81
,
114
,
199
,
125
,
119
,
242
,
209
,
135
,
63
,
198
,
13
,
55
,
220
,
194
,
109
,
247
,
220
,
206
,
134
,
157
,
235
,
25
,
106
,
224
,
248
,
137
,
147
,
252
,
209
,
23
,
190
,
200
,
222
,
189
,
123
,
177
,
140
,
84
,
216
,
198
,
54
,
82
,
97
,
21
,
150
,
168
,
18
,
146
,
32
,
2
,
108
,
102
,
179
,
25
,
173
,
53
,
34
,
130
,
170
,
66
,
18
,
153
,
137
,
109
,
90
,
75
,
86
,
86
,
86
,
153
,
76
,
103
,
128
,
177
,
132
,
85
,
84
,
21
,
118
,
81
,
26
,
48
,
2
,
12
,
22
,
152
,
139
,
102
,
211
,
41
,
6
,
36
,
49
,
235
,
123
,
6
,
9
,
73
,
27
,
171
,
106
,
183
,
36
,
46
,
39
,
185
,
12
,
219
,
188
,
126
,
248
,
248
,
82
,
68
,
190
,
123
,
54
,
155
,
49
,
157
,
78
,
121
,
139
,
109
,
170
,
10
,
219
,
72
,
194
,
54
,
16
,
128
,
33
,
12
,
97
,
164
,
30
,
44
,
206
,
156
,
62
,
197
,
191
,
250
,
173
,
207
,
242
,
229
,
199
,
190
,
194
,
145
,
19
,
199
,
89
,
220
,
182
,
196
,
109
,
15
,
189
,
139
,
59
,
31
,
186
,
135
,
93
,
55
,
93
,
201
,
87
,
158
,
248
,
99
,
246
,
238
,
125
,
22
,
34
,
144
,
196
,
48
,
12
,
16
,
208
,
181
,
70
,
70
,
50
,
234
,
58
,
186
,
174
,
67
,
18
,
182
,
105
,
173
,
209
,
117
,
29
,
163
,
197
,
17
,
91
,
55
,
110
,
99
,
247
,
230
,
107
,
57
,
245
,
250
,
73
,
22
,
218
,
2
,
155
,
182
,
110
,
196
,
36
,
125
,
63
,
112
,
232
,
232
,
81
,
30
,
251
,
242
,
99
,
156
,
57
,
125
,
138
,
57
,
73
,
72
,
133
,
36
,
108
,
35
,
137
,
57
,
27
,
176
,
233
,
251
,
129
,
149
,
213
,
21
,
130
,
160
,
235
,
58
,
34
,
2
,
219
,
68
,
4
,
182
,
177
,
205
,
48
,
12
,
172
,
172
,
172
,
128
,
193
,
22
,
178
,
80
,
21
,
85
,
198
,
6
,
219
,
72
,
194
,
152
,
204
,
196
,
130
,
149
,
149
,
85
,
44
,
97
,
9
,
219
,
216
,
198
,
246
,
66
,
68
,
236
,
204
,
12
,
238
,
184
,
253
,
86
,
222
,
46
,
185
,
140
,
22
,
201
,
66
,
215
,
109
,
25
,
117
,
163
,
91
,
170
,
138
,
213
,
149
,
85
,
134
,
161
,
71
,
42
,
170
,
10
,
73
,
216
,
32
,
137
,
170
,
98
,
24
,
122
,
164
,
194
,
22
,
146
,
24
,
106
,
96
,
152
,
205
,
248
,
234
,
87
,
190
,
204
,
99
,
143
,
125
,
133
,
227
,
111
,
158
,
34
,
70
,
112
,
195
,
237
,
55
,
241
,
137
,
135
,
63
,
201
,
117
,
219
,
111
,
96
,
195
,
120
,
19
,
238
,
204
,
87
,
190
,
242
,
37
,
166
,
147
,
53
,
164
,
98
,
46
,
51
,
105
,
109
,
68
,
215
,
117
,
100
,
54
,
34
,
130
,
185
,
42
,
177
,
115
,
199
,
118
,
182
,
109
,
221
,
68
,
20
,
60
,
245
,
196
,
83
,
252
,
247
,
255
,
228
,
159
,
240
,
248
,
19
,
95
,
231
,
141
,
131
,
7
,
56
,
127
,
102
,
5
,
44
,
108
,
51
,
89
,
235
,
217
,
183
,
239
,
85
,
94
,
126
,
233
,
101
,
192
,
96
,
97
,
21
,
72
,
216
,
6
,
11
,
169
,
8
,
32
,
34
,
56
,
123
,
238
,
28
,
43
,
231
,
87
,
137
,
12
,
50
,
147
,
204
,
32
,
34
,
136
,
8
,
70
,
163
,
17
,
17
,
129
,
108
,
134
,
190
,
71
,
18
,
230
,
2
,
155
,
136
,
0
,
12
,
152
,
32
,
152
,
179
,
77
,
4
,
204
,
102
,
61
,
231
,
206
,
173
,
80
,
18
,
37
,
1
,
70
,
50
,
146
,
136
,
136
,
45
,
139
,
139
,
75
,
128
,
121
,
187
,
228
,
50
,
50
,
147
,
214
,
186
,
43
,
91
,
230
,
214
,
201
,
218
,
132
,
179
,
231
,
206
,
97
,
23
,
85
,
61
,
85
,
3
,
182
,
169
,
42
,
84
,
133
,
36
,
36
,
161
,
18
,
42
,
83
,
37
,
112
,
112
,
228
,
216
,
17
,
254
,
237
,
151
,
31
,
227
,
240
,
145
,
99
,
244
,
253
,
64
,
118
,
29
,
145
,
240
,
252
,
222
,
23
,
57
,
248
,
202
,
33
,
78
,
188
,
113
,
2
,
15
,
226
,
245
,
215
,
95
,
229
,
220
,
217
,
211
,
168
,
138
,
136
,
0
,
130
,
136
,
32
,
72
,
130
,
164
,
101
,
71
,
70
,
99
,
24
,
6
,
110
,
190
,
229
,
22
,
30
,
254
,
190
,
135
,
89
,
236
,
22
,
57
,
119
,
234
,
44
,
125
,
78
,
217
,
184
,
115
,
153
,
55
,
143
,
188
,
201
,
153
,
35
,
103
,
120
,
75
,
73
,
156
,
61
,
187
,
194
,
190
,
125
,
251
,
25
,
102
,
83
,
194
,
194
,
26
,
176
,
132
,
101
,
176
,
176
,
197
,
92
,
100
,
114
,
234
,
228
,
105
,
166
,
147
,
25
,
173
,
117
,
216
,
32
,
153
,
204
,
36
,
34
,
136
,
8
,
50
,
147
,
140
,
128
,
0
,
169
,
176
,
5
,
1
,
132
,
137
,
0
,
12
,
4
,
151
,
68
,
16
,
145
,
156
,
59
,
191
,
194
,
202
,
234
,
20
,
3
,
178
,
40
,
11
,
169
,
168
,
42
,
134
,
161
,
182
,
92
,
125
,
213
,
46
,
170
,
196
,
219
,
117
,
92
,
86
,
96
,
188
,
35
,
34
,
150
,
135
,
26
,
56
,
126
,
236
,
56
,
183
,
220
,
114
,
35
,
153
,
73
,
4
,
12
,
67
,
79
,
102
,
16
,
209
,
48
,
102
,
212
,
141
,
48
,
194
,
6
,
27
,
236
,
224
,
185
,
189
,
207
,
240
,
210
,
43
,
175
,
176
,
186
,
54
,
1
,
139
,
217
,
234
,
148
,
253
,
47
,
191
,
202
,
243
,
123
,
95
,
228
,
232
,
254
,
35
,
140
,
23
,
199
,
108
,
221
,
180
,
153
,
171
,
175
,
186
,
134
,
241
,
226
,
34
,
165
,
129
,
116
,
71
,
70
,
48
,
151
,
153
,
216
,
6
,
76
,
182
,
196
,
54
,
24
,
62
,
240
,
190
,
247
,
243
,
218
,
254
,
3
,
252
,
206
,
231
,
126
,
159
,
129
,
162
,
95
,
233
,
169
,
89
,
193
,
192
,
5
,
1
,
8
,
28
,
244
,
125
,
241
,
230
,
137
,
147
,
172
,
173
,
173
,
177
,
184
,
184
,
136
,
205
,
69
,
182
,
144
,
204
,
37
,
6
,
7
,
135
,
14
,
29
,
161
,
170
,
176
,
133
,
84
,
204
,
217
,
38
,
34
,
152
,
107
,
173
,
163
,
27
,
117
,
188
,
69
,
18
,
115
,
182
,
129
,
192
,
54
,
182
,
201
,
72
,
140
,
48
,
230
,
212
,
201
,
83
,
172
,
156
,
95
,
193
,
6
,
73
,
72
,
66
,
18
,
150
,
32
,
98
,
116
,
231
,
29
,
215
,
243
,
228
,
55
,
158
,
230
,
237
,
146
,
203
,
48
,
6
,
123
,
83
,
85
,
45
,
16
,
193
,
241
,
227
,
199
,
25
,
134
,
162
,
170
,
144
,
10
,
169
,
176
,
65
,
18
,
146
,
40
,
21
,
146
,
40
,
21
,
178
,
88
,
89
,
89
,
225
,
185
,
103
,
159
,
227
,
212
,
169
,
51
,
148
,
4
,
4
,
158
,
193
,
155
,
7
,
78
,
226
,
126
,
96
,
231
,
238
,
109
,
44
,
46
,
45
,
178
,
97
,
113
,
35
,
31
,
250
,
208
,
135
,
25
,
141
,
58
,
36
,
129
,
33
,
34
,
136
,
8
,
34
,
130
,
174
,
235
,
152
,
179
,
13
,
152
,
89
,
63
,
37
,
187
,
224
,
227
,
159
,
120
,
152
,
59
,
239
,
184
,
149
,
24
,
96
,
88
,
27
,
176
,
192
,
24
,
48
,
16
,
204
,
5
,
48
,
235
,
167
,
76
,
167
,
83
,
84
,
133
,
37
,
84
,
3
,
85
,
133
,
45
,
108
,
97
,
204
,
234
,
218
,
132
,
3
,
7
,
14
,
146
,
153
,
216
,
102
,
46
,
2
,
36
,
81
,
85
,
12
,
195
,
128
,
36
,
48
,
96
,
99
,
192
,
50
,
54
,
68
,
4
,
96
,
34
,
130
,
140
,
68
,
18
,
17
,
65
,
68
,
112
,
228
,
232
,
113
,
166
,
179
,
25
,
115
,
54
,
88
,
198
,
54
,
54
,
248
,
130
,
233
,
84
,
216
,
230
,
237
,
146
,
203
,
49
,
16
,
44
,
218
,
110
,
92
,
112
,
242
,
228
,
105
,
206
,
157
,
91
,
193
,
134
,
97
,
24
,
144
,
140
,
45
,
192
,
72
,
162
,
170
,
24
,
106
,
160
,
159
,
13
,
212
,
32
,
206
,
156
,
57
,
195
,
129
,
55
,
14
,
49
,
153
,
204
,
128
,
192
,
4
,
118
,
160
,
85
,
56
,
119
,
104
,
149
,
115
,
135
,
87
,
153
,
157
,
238
,
185
,
255
,
158
,
251
,
216
,
189
,
251
,
106
,
134
,
217
,
0
,
6
,
219
,
216
,
38
,
35
,
136
,
8
,
192
,
68
,
4
,
17
,
80
,
26
,
168
,
26
,
232
,
251
,
158
,
205
,
155
,
55
,
241
,
131
,
63
,
248
,
8
,
123
,
246
,
92
,
205
,
120
,
212
,
8
,
243
,
103
,
204
,
92
,
182
,
100
,
97
,
97
,
204
,
210
,
210
,
34
,
45
,
27
,
37
,
81
,
42
,
228
,
194
,
42
,
130
,
32
,
8
,
50
,
147
,
195
,
71
,
143
,
113
,
224
,
141
,
35
,
188
,
37
,
51
,
201
,
108
,
100
,
38
,
223
,
100
,
250
,
190
,
71
,
50
,
146
,
48
,
6
,
140
,
100
,
44
,
19
,
17
,
200
,
66
,
22
,
65
,
82
,
130
,
3
,
7
,
14
,
33
,
25
,
8
,
230
,
36
,
83
,
37
,
100
,
35
,
41
,
86
,
87
,
2
,
91
,
188
,
93
,
114
,
25
,
14
,
99
,
46
,
8
,
192
,
112
,
250
,
244
,
105
,
14
,
31
,
62
,
140
,
84
,
216
,
92
,
96
,
134
,
97
,
160
,
170
,
176
,
11
,
187
,
176
,
11
,
185
,
48
,
197
,
233
,
51
,
167
,
57
,
123
,
230
,
44
,
85
,
133
,
13
,
182
,
177
,
205
,
156
,
21
,
184
,
96
,
121
,
121
,
29
,
239
,
125
,
223
,
187
,
105
,
45
,
24
,
212
,
51
,
212
,
0
,
54
,
182
,
169
,
18
,
85
,
133
,
108
,
130
,
192
,
54
,
17
,
129
,
45
,
250
,
126
,
198
,
116
,
58
,
225
,
218
,
107
,
119
,
243
,
3
,
159
,
248
,
40
,
215
,
237
,
217
,
205
,
198
,
13
,
203
,
44
,
140
,
71
,
116
,
173
,
49
,
30
,
117
,
172
,
95
,
183
,
196
,
230
,
77
,
235
,
217
,
185
,
99
,
27
,
163
,
209
,
152
,
42
,
33
,
9
,
201
,
24
,
48
,
38
,
34
,
176
,
205
,
179
,
123
,
95
,
100
,
50
,
153
,
162
,
18
,
153
,
13
,
155
,
139
,
34
,
130
,
57
,
219
,
216
,
198
,
54
,
198
,
204
,
89
,
102
,
206
,
22
,
145
,
129
,
44
,
50
,
146
,
204
,
68
,
50
,
43
,
231
,
215
,
120
,
227
,
141
,
67
,
72
,
66
,
18
,
182
,
193
,
198
,
54
,
182
,
176
,
209
,
234
,
116
,
130
,
109
,
222
,
174
,
227
,
114
,
12
,
97
,
144
,
68
,
107
,
73
,
245
,
197
,
171
,
251
,
95
,
229
,
250
,
235
,
247
,
208
,
117
,
141
,
8
,
144
,
76
,
215
,
113
,
129
,
145
,
68
,
102
,
146
,
153
,
72
,
48
,
157
,
174
,
49
,
155
,
205
,
176
,
205
,
37
,
193
,
156
,
109
,
230
,
108
,
115
,
195
,
13
,
215
,
115
,
195
,
13
,
215
,
209
,
15
,
61
,
182
,
201
,
12
,
140
,
1
,
67
,
0
,
1
,
65
,
64
,
152
,
136
,
96
,
78
,
18
,
85
,
3
,
195
,
208
,
35
,
137
,
219
,
239
,
184
,
141
,
8
,
248
,
250
,
227
,
79
,
112
,
236
,
248
,
9
,
38
,
107
,
83
,
34
,
96
,
221
,
210
,
18
,
187
,
118
,
109
,
231
,
198
,
27
,
111
,
32
,
2
,
36
,
161
,
42
,
164
,
98
,
206
,
152
,
108
,
201
,
177
,
99
,
111
,
242
,
252
,
243
,
47
,
19
,
36
,
173
,
5
,
174
,
129
,
8
,
144
,
132
,
109
,
108
,
19
,
17
,
216
,
134
,
224
,
207
,
152
,
136
,
192
,
134
,
136
,
224
,
34
,
131
,
49
,
17
,
65
,
100
,
227
,
196
,
137
,
55
,
57
,
122
,
244
,
4
,
153
,
9
,
24
,
219
,
204
,
101
,
6
,
182
,
177
,
125
,
230
,
137
,
39
,
255
,
4
,
203
,
188
,
93
,
199
,
101
,
132
,
184
,
72
,
37
,
164
,
194
,
14
,
246
,
239
,
127
,
141
,
123
,
78
,
158
,
100
,
219
,
182
,
45
,
216
,
38
,
2
,
164
,
192
,
54
,
153
,
137
,
13
,
146
,
1
,
179
,
176
,
176
,
64
,
107
,
73
,
70
,
80
,
46
,
32
,
136
,
8
,
230
,
194
,
176
,
176
,
48
,
230
,
221
,
15
,
221
,
207
,
186
,
117
,
235
,
24
,
134
,
129
,
139
,
28
,
212
,
208
,
83
,
53
,
166
,
181
,
129
,
140
,
6
,
153
,
72
,
194
,
54
,
115
,
153
,
73
,
85
,
49
,
212
,
128
,
52
,
144
,
4
,
183
,
223
,
118
,
11
,
219
,
183
,
109
,
225
,
181
,
87
,
95
,
227
,
212
,
169
,
147
,
148
,
196
,
250
,
245
,
235
,
185
,
118
,
207
,
53
,
92
,
125
,
205
,
85
,
72
,
61
,
182
,
136
,
4
,
156
,
96
,
46
,
16
,
67
,
153
,
175
,
125
,
253
,
105
,
206
,
156
,
57
,
71
,
4
,
32
,
8
,
131
,
37
,
108
,
19
,
17
,
68
,
4
,
17
,
65
,
102
,
146
,
153
,
88
,
98
,
46
,
50
,
80
,
137
,
200
,
192
,
134
,
200
,
192
,
54
,
150
,
201
,
113
,
240
,
210
,
43
,
251
,
57
,
119
,
126
,
133
,
136
,
68
,
50
,
173
,
129
,
109
,
170
,
68
,
132
,
80
,
213
,
217
,
51
,
167
,
207
,
98
,
155
,
183
,
235
,
184
,
44
,
99
,
3
,
1
,
25
,
193
,
80
,
197
,
241
,
227
,
39
,
121
,
118
,
239
,
243
,
124
,
207
,
7
,
223
,
139
,
84
,
124
,
83
,
210
,
154
,
169
,
42
,
90
,
107
,
216
,
102
,
211
,
198
,
141
,
108
,
219
,
190
,
149
,
215
,
14
,
28
,
164
,
175
,
1
,
108
,
36
,
136
,
128
,
209
,
168
,
113
,
195
,
13
,
123
,
120
,
224
,
254
,
251
,
1
,
35
,
9
,
219
,
68
,
4
,
82
,
33
,
21
,
195
,
80
,
100
,
152
,
200
,
100
,
46
,
34
,
136
,
8
,
50
,
19
,
219
,
168
,
138
,
161
,
6
,
40
,
211
,
50
,
217
,
190
,
99
,
59
,
219
,
183
,
111
,
99
,
168
,
1
,
219
,
180
,
214
,
145
,
25
,
88
,
133
,
36
,
108
,
99
,
27
,
155
,
139
,
50
,
130
,
151
,
247
,
189
,
206
,
51
,
79
,
63
,
135
,
109
,
8
,
232
,
85
,
72
,
98
,
46
,
34
,
152
,
139
,
8
,
108
,
115
,
145
,
161
,
36
,
36
,
33
,
153
,
200
,
32
,
8
,
100
,
1
,
193
,
69
,
1
,
179
,
89
,
207
,
222
,
189
,
47
,
32
,
153
,
174
,
131
,
204
,
64
,
18
,
182
,
177
,
132
,
36
,
151
,
244
,
166
,
44
,
94
,
125
,
253
,
13
,
222
,
46
,
185
,
12
,
217
,
216
,
194
,
50
,
17
,
129
,
36
,
50
,
131
,
103
,
158
,
121
,
150
,
163
,
71
,
143
,
99
,
27
,
73
,
84
,
9
,
169
,
24
,
134
,
1
,
91
,
72
,
98
,
24
,
138
,
165
,
165
,
37
,
222
,
243
,
158
,
247
,
176
,
121
,
243
,
38
,
90
,
38
,
4
,
180
,
46
,
89
,
92
,
90
,
96
,
215
,
149
,
59
,
249
,
232
,
199
,
30
,
102
,
215
,
149
,
87
,
48
,
12
,
3
,
85
,
3
,
195
,
48
,
80
,
53
,
32
,
23
,
170
,
194
,
22
,
146
,
81
,
9
,
201
,
24
,
147
,
145
,
72
,
34
,
34
,
176
,
141
,
74
,
12
,
195
,
64
,
63
,
12
,
12
,
195
,
64
,
97
,
218
,
104
,
196
,
104
,
97
,
129
,
236
,
26
,
146
,
40
,
21
,
182
,
193
,
32
,
153
,
8
,
147
,
25
,
156
,
58
,
117
,
150
,
127
,
251
,
197
,
175
,
194
,
196
,
203
,
222
,
0
,
0
,
32
,
0
,
73
,
68
,
65
,
84
,
48
,
153
,
204
,
192
,
129
,
10
,
178
,
53
,
200
,
32
,
91
,
35
,
34
,
168
,
42
,
190
,
41
,
144
,
68
,
63
,
155
,
17
,
4
,
216
,
216
,
134
,
128
,
32
,
192
,
96
,
155
,
214
,
26
,
135
,
14
,
29
,
101
,
255
,
190
,
215
,
201
,
72
,
34
,
130
,
185
,
136
,
64
,
18
,
6
,
50
,
98
,
5
,
124
,
156
,
119
,
208
,
113
,
25
,
150
,
145
,
189
,
58
,
194
,
131
,
236
,
142
,
11
,
50
,
147
,
179
,
103
,
207
,
243
,
199
,
127
,
252
,
85
,
62
,
254
,
241
,
135
,
89
,
92
,
92
,
4
,
140
,
36
,
34
,
2
,
48
,
54
,
23
,
4
,
153
,
201
,
3
,
15
,
61
,
64
,
180
,
228
,
171
,
127
,
242
,
56
,
7
,
222
,
56
,
192
,
208
,
247
,
236
,
220
,
185
,
131
,
247
,
127
,
224
,
189
,
188
,
251
,
221
,
15
,
32
,
13
,
216
,
198
,
54
,
17
,
193
,
48
,
64
,
63
,
43
,
70
,
157
,
104
,
77
,
68
,
64
,
102
,
34
,
9
,
149
,
32
,
160
,
181
,
164
,
69
,
16
,
54
,
97
,
46
,
178
,
132
,
128
,
4
,
108
,
48
,
16
,
97
,
108
,
161
,
18
,
178
,
137
,
8
,
34
,
128
,
8
,
206
,
173
,
174
,
242
,
249
,
63
,
250
,
18
,
135
,
14
,
31
,
35
,
34
,
32
,
32
,
19
,
100
,
147
,
17
,
244
,
85
,
216
,
69
,
132
,
0
,
49
,
39
,
21
,
195
,
32
,
250
,
161
,
144
,
5
,
17
,
68
,
128
,
36
,
50
,
18
,
27
,
50
,
3
,
8
,
158
,
120
,
226
,
25
,
78
,
159
,
57
,
71
,
107
,
13
,
27
,
36
,
17
,
209
,
32
,
184
,
168
,
164
,
21
,
201
,
71
,
9
,
115
,
57
,
29
,
151
,
97
,
11
,
236
,
73
,
16
,
195
,
208
,
247
,
157
,
36
,
136
,
100
,
238
,
133
,
231
,
95
,
226
,
170
,
43
,
175
,
224
,
129
,
7
,
239
,
67
,
226
,
162
,
136
,
192
,
54
,
146
,
200
,
76
,
32
,
137
,
8
,
30
,
122
,
247
,
131
,
220
,
115
,
207
,
221
,
156
,
58
,
121
,
146
,
126
,
232
,
89
,
183
,
110
,
29
,
219
,
182
,
109
,
165
,
181
,
198
,
48
,
20
,
96
,
108
,
19
,
17
,
128
,
169
,
234
,
169
,
234
,
169
,
161
,
145
,
217
,
40
,
21
,
150
,
176
,
197
,
92
,
70
,
35
,
51
,
201
,
76
,
50
,
2
,
1
,
6
,
74
,
194
,
24
,
59
,
200
,
108
,
88
,
162
,
84
,
216
,
230
,
18
,
19
,
1
,
231
,
206
,
175
,
241
,
232
,
23
,
255
,
152
,
151
,
95
,
218
,
71
,
68
,
32
,
21
,
85
,
3
,
146
,
128
,
64
,
18
,
153
,
9
,
85
,
100
,
54
,
36
,
19
,
17
,
100
,
38
,
4
,
96
,
46
,
138
,
128
,
32
,
152
,
51
,
16
,
1
,
153
,
201
,
137
,
55
,
79
,
243
,
248
,
227
,
79
,
98
,
27
,
219
,
204
,
101
,
6
,
115
,
54
,
72
,
2
,
251
,
84
,
223
,
247
,
199
,
34
,
184
,
172
,
142
,
203
,
176
,
141
,
237
,
53
,
225
,
33
,
91
,
35
,
29
,
24
,
136
,
8
,
250
,
94
,
60
,
246
,
216
,
87
,
89
,
94
,
191
,
142
,
91
,
110
,
185
,
153
,
136
,
96
,
206
,
22
,
6
,
44
,
33
,
7
,
65
,
195
,
54
,
173
,
5
,
59
,
175
,
216
,
78
,
68
,
96
,
7
,
85
,
162
,
74
,
100
,
6
,
182
,
121
,
75
,
132
,
25
,
106
,
160
,
52
,
80
,
53
,
96
,
139
,
104
,
201
,
48
,
12
,
244
,
179
,
158
,
190
,
31
,
144
,
0
,
7
,
56
,
48
,
23
,
68
,
128
,
141
,
37
,
132
,
177
,
19
,
48
,
182
,
145
,
196
,
92
,
4
,
16
,
201
,
177
,
99
,
111
,
242
,
232
,
23
,
255
,
152
,
87
,
95
,
61
,
8
,
52
,
170
,
122
,
108
,
147
,
153
,
64
,
32
,
9
,
219
,
24
,
51
,
87
,
85
,
188
,
69
,
18
,
227
,
81
,
71
,
100
,
16
,
17
,
216
,
38
,
51
,
144
,
64
,
22
,
38
,
176
,
197
,
215
,
30
,
127
,
146
,
131
,
7
,
143
,
16
,
17
,
216
,
38
,
34
,
136
,
8
,
32
,
152
,
139
,
8
,
100
,
191
,
90
,
85
,
231
,
50
,
147
,
203
,
233
,
184
,
140
,
194
,
24
,
175
,
150
,
220
,
119
,
93
,
7
,
97
,
134
,
190
,
199
,
230
,
2
,
115
,
238
,
236
,
10
,
159
,
251
,
189
,
63
,
164
,
74
,
220
,
118
,
219
,
45
,
24
,
145
,
110
,
4
,
16
,
153
,
68
,
4
,
25
,
32
,
21
,
115
,
17
,
65
,
68
,
48
,
103
,
155
,
136
,
64
,
10
,
34
,
130
,
57
,
219
,
68
,
36
,
85
,
197
,
202
,
249
,
21
,
78
,
245
,
103
,
57
,
191
,
178
,
202
,
249
,
243
,
231
,
89
,
89
,
89
,
101
,
58
,
153
,
34
,
137
,
204
,
100
,
212
,
53
,
198
,
227
,
96
,
52
,
78
,
34
,
6
,
108
,
97
,
10
,
28
,
128
,
169
,
18
,
96
,
34
,
146
,
136
,
100
,
117
,
50
,
229
,
229
,
151
,
94
,
228
,
169
,
111
,
236
,
229
,
216
,
241
,
147
,
212
,
32
,
100
,
83
,
37
,
36
,
19
,
145
,
192
,
128
,
36
,
136
,
0
,
67
,
102
,
3
,
68
,
213
,
128
,
109
,
230
,
100
,
131
,
33
,
2
,
236
,
160
,
100
,
34
,
0
,
65
,
100
,
112
,
226
,
196
,
105
,
30
,
125
,
244
,
49
,
134
,
161
,
232
,
186
,
17
,
111
,
169
,
18
,
173
,
5
,
184
,
17
,
36
,
114
,
61
,
127
,
227
,
181
,
55
,
173
,
236
,
123
,
99
,
31
,
151
,
211
,
113
,
25
,
178
,
177
,
125
,
182
,
164
,
105
,
200
,
12
,
253
,
64
,
149
,
176
,
197
,
48
,
12
,
216
,
112
,
252
,
248
,
73
,
126
,
235
,
179
,
191
,
203
,
185
,
115
,
231
,
185
,
251
,
158
,
59
,
24
,
141
,
70
,
204
,
133
,
130
,
204
,
134
,
195
,
204
,
69
,
36
,
32
,
34
,
130
,
185
,
136
,
192
,
134
,
8
,
243
,
22
,
201
,
128
,
120
,
243
,
196
,
97
,
14
,
31
,
62
,
206
,
155
,
39
,
79
,
113
,
230
,
204
,
89
,
214
,
214
,
214
,
152
,
205
,
102
,
72
,
34
,
51
,
25
,
143
,
199
,
44
,
46
,
45
,
177
,
113
,
253
,
50
,
187
,
119
,
111
,
99
,
243
,
166
,
69
,
2
,
136
,
8
,
46
,
49
,
17
,
9
,
209
,
88
,
89
,
89
,
227
,
224
,
27
,
135
,
120
,
102
,
239
,
11
,
28
,
58
,
124
,
148
,
26
,
138
,
97
,
40
,
8
,
192
,
38
,
51
,
145
,
138
,
185
,
190
,
31
,
176
,
69
,
16
,
152
,
192
,
54
,
153
,
137
,
36
,
108
,
99
,
155
,
170
,
194
,
54
,
24
,
164
,
34
,
8
,
34
,
147
,
108
,
13
,
1
,
127
,
248
,
135
,
95
,
226
,
245
,
215
,
14
,
67
,
36
,
182
,
137
,
8
,
46
,
49
,
182
,
137
,
8
,
36
,
203
,
142
,
103
,
143
,
28
,
63
,
202
,
209
,
163
,
199
,
185
,
156
,
142
,
203
,
144
,
10
,
73
,
103
,
236
,
209
,
164
,
170
,
40
,
137
,
170
,
129
,
136
,
36
,
34
,
8
,
32
,
51
,
56
,
119
,
110
,
133
,
223
,
251
,
189
,
207
,
115
,
244
,
232
,
49
,
222
,
243
,
158
,
7
,
217
,
186
,
109
,
11
,
182
,
176
,
193
,
97
,
230
,
34
,
132
,
13
,
17
,
16
,
17
,
68
,
4
,
17
,
193
,
156
,
13
,
182
,
152
,
59
,
117
,
250
,
60
,
123
,
159
,
121
,
153
,
227
,
199
,
223
,
228
,
204
,
153
,
83
,
156
,
59
,
119
,
158
,
213
,
213
,
85
,
250
,
190
,
199
,
54
,
151
,
4
,
27
,
54
,
108
,
96
,
219
,
150
,
205
,
172
,
223
,
208
,
177
,
101
,
243
,
18
,
198
,
204
,
69
,
36
,
231
,
207
,
175
,
113
,
252
,
216
,
155
,
188
,
113
,
248
,
8
,
175
,
189
,
250
,
58
,
167
,
78
,
157
,
161
,
202
,
116
,
93
,
135
,
29
,
100
,
38
,
150
,
17
,
66
,
18
,
96
,
44
,
97
,
11
,
8
,
34
,
2
,
169
,
176
,
185
,
40
,
51
,
177
,
205
,
92
,
70
,
64
,
0
,
17
,
64
,
16
,
153
,
148
,
138
,
209
,
104
,
204
,
51
,
207
,
60
,
207
,
31
,
253
,
209
,
151
,
33
,
18
,
34
,
152
,
139
,
8
,
230
,
34
,
146
,
204
,
100
,
78
,
82
,
95
,
85
,
175
,
172
,
13
,
3
,
239
,
164
,
227
,
50
,
60
,
8
,
171
,
86
,
145
,
78
,
87
,
137
,
214
,
18
,
169
,
97
,
139
,
57
,
89
,
180
,
214
,
33
,
153
,
97
,
86
,
60
,
246
,
229
,
175
,
241
,
242
,
75
,
251
,
121
,
255
,
251
,
30
,
226
,
182
,
219
,
111
,
102
,
253
,
250
,
117
,
148
,
5
,
1
,
4
,
23
,
152
,
185
,
204
,
164
,
69
,
195
,
54
,
182
,
113
,
128
,
129
,
32
,
56
,
123
,
246
,
44
,
175
,
31
,
120
,
157
,
195
,
135
,
142
,
114
,
232
,
208
,
65
,
250
,
126
,
32
,
2
,
140
,
152
,
77
,
123
,
78
,
156
,
56
,
65
,
75
,
184
,
239
,
222
,
187
,
185
,
246
,
158
,
155
,
185
,
98
,
199
,
22
,
44
,
19
,
17
,
180
,
214
,
120
,
241
,
165
,
215
,
248
,
252
,
191
,
249
,
34
,
167
,
78
,
157
,
166
,
4
,
153
,
73
,
107
,
73
,
68
,
146
,
145
,
200
,
34
,
34
,
24
,
84
,
188
,
165
,
101
,
67
,
37
,
186
,
110
,
68
,
85
,
81
,
42
,
36
,
49
,
12
,
34
,
34
,
200
,
76
,
134
,
97
,
64
,
50
,
221
,
66
,
199
,
210
,
226
,
24
,
91
,
100
,
4
,
115
,
153
,
141
,
195
,
71
,
79
,
240
,
155
,
255
,
231
,
191
,
226
,
236
,
217
,
85
,
50
,
19
,
219
,
204
,
217
,
38
,
51
,
185
,
196
,
68
,
6
,
17
,
76
,
92
,
58
,
103
,
204
,
59
,
233
,
184
,
12
,
169
,
168
,
170
,
169
,
170
,
142
,
141
,
198
,
99
,
196
,
55
,
85
,
21
,
125
,
223
,
19
,
17
,
68
,
4
,
198
,
84
,
137
,
3
,
7
,
14
,
241
,
47
,
14
,
255
,
54
,
187
,
119
,
95
,
201
,
61
,
247
,
220
,
193
,
173
,
183
,
220
,
204
,
150
,
173
,
155
,
232
,
186
,
134
,
44
,
34
,
18
,
75
,
252
,
223
,
213
,
193
,
91
,
240
,
231
,
247
,
125
,
223
,
245
,
231
,
235
,
253
,
254
,
252
,
254
,
199
,
213
,
238
,
234
,
96
,
157
,
173
,
147
,
79
,
137
,
92
,
199
,
78
,
161
,
101
,
154
,
50
,
147
,
146
,
25
,
66
,
153
,
41
,
229
,
152
,
97
,
114
,
65
,
153
,
97
,
166
,
189
,
229
,
146
,
43
,
110
,
24
,
46
,
152
,
1
,
238
,
128
,
14
,
195
,
5
,
164
,
153
,
0
,
197
,
197
,
83
,
26
,
55
,
208
,
184
,
57
,
214
,
137
,
237
,
38
,
150
,
101
,
71
,
138
,
117
,
176
,
180
,
90
,
89
,
210
,
106
,
87
,
218
,
243
,
254
,
79
,
191
,
239
,
231
,
253
,
126
,
177
,
63
,
41
,
10
,
30
,
198
,
146
,
108
,
147
,
148
,
244
,
241
,
88
,
92
,
72
,
194
,
221
,
72
,
66
,
136
,
182
,
185
,
251
,
206
,
59
,
120
,
226
,
177
,
135
,
184
,
117
,
227
,
58
,
135
,
7
,
55
,
184
,
120
,
233
,
45
,
118
,
118
,
246
,
56
,
123
,
246
,
12
,
203
,
178
,
240
,
224
,
67
,
31
,
225
,
95
,
249
,
233
,
191
,
196
,
103
,
62
,
253
,
41
,
238
,
190
,
231
,
110
,
70
,
6
,
221
,
69
,
100
,
112
,
245
,
234
,
77
,
190
,
244
,
171
,
191
,
197
,
235
,
111
,
92
,
100
,
123
,
123
,
133
,
36
,
64
,
72
,
193
,
200
,
4
,
9
,
33
,
108
,
3
,
166
,
102
,
177
,
209
,
110
,
218
,
6
,
140
,
221
,
204
,
57
,
217
,
144
,
68
,
85
,
81
,
85
,
188
,
39
,
34
,
216
,
221
,
219
,
5
,
27
,
99
,
66
,
201
,
173
,
131
,
35
,
254
,
247
,
191
,
247
,
69
,
94
,
120
,
241
,
28
,
82
,
34
,
9
,
73
,
188
,
199
,
54
,
146
,
216
,
176
,
27
,
155
,
19
,
211
,
39
,
182
,
121
,
63
,
131
,
247
,
113
,
243
,
230
,
225
,
209
,
222
,
222
,
238
,
69
,
4
,
53
,
27
,
108
,
64
,
68
,
4
,
153
,
73
,
85
,
1
,
162
,
170
,
145
,
132
,
109
,
142
,
79
,
78
,
120
,
241
,
197
,
115
,
188
,
248
,
226
,
75
,
220
,
117
,
247
,
157
,
60
,
242
,
200
,
195
,
60
,
246
,
216
,
35
,
60
,
112
,
223
,
125
,
220
,
121
,
215
,
89
,
118
,
118
,
86
,
172
,
198
,
32
,
51
,
201
,
76
,
66
,
162
,
108
,
108
,
179
,
26
,
193
,
103
,
63
,
251
,
41
,
62
,
246
,
177
,
135
,
249
,
169
,
191
,
244
,
19
,
60
,
255
,
194
,
139
,
124
,
243
,
155
,
207
,
241
,
246
,
229
,
235
,
220
,
127
,
255
,
93
,
252
,
244
,
79
,
255
,
11
,
60
,
252
,
224
,
253
,
40
,
205
,
156
,
107
,
114
,
236
,
160
,
16
,
54
,
60
,
253
,
141
,
103
,
120
,
243
,
205
,
75
,
140
,
76
,
108
,
147
,
153
,
72
,
162
,
187
,
209
,
106
,
240
,
46
,
209
,
221
,
72
,
65
,
68
,
96
,
160
,
187
,
17
,
208
,
109
,
48
,
216
,
38
,
51
,
233
,
158
,
72
,
98
,
163
,
187
,
137
,
16
,
123
,
123
,
187
,
236
,
237
,
238
,
210
,
109
,
20
,
226
,
120
,
61
,
249
,
194
,
23
,
126
,
133
,
175
,
124
,
245
,
235
,
68
,
36
,
27
,
221
,
77
,
68
,
176
,
33
,
137
,
119
,
137
,
238
,
166
,
91
,
140
,
49
,
144
,
132
,
109
,
222
,
207
,
224
,
125
,
60
,
244
,
209
,
251
,
234
,
228
,
120
,
253
,
90
,
85
,
209
,
213
,
68
,
6
,
85
,
133
,
16
,
32
,
64
,
188
,
203
,
128
,
137
,
16
,
115
,
26
,
133
,
168
,
130
,
75
,
23
,
223
,
230
,
194
,
27
,
151
,
248
,
234
,
87
,
190
,
206
,
246
,
246
,
54
,
219
,
219
,
43
,
78
,
157
,
222
,
231
,
212
,
222
,
62
,
35
,
7
,
247
,
220
,
115
,
55
,
255
,
242
,
95
,
254
,
139
,
220
,
255
,
192
,
71
,
0
,
179
,
49
,
107
,
178
,
44
,
199
,
236
,
238
,
38
,
31
,
255
,
216
,
131
,
156
,
218
,
31
,
60
,
243
,
204
,
243
,
220
,
243
,
145
,
59
,
217
,
221
,
9
,
14
,
15
,
111
,
161
,
16
,
85
,
133
,
27
,
132
,
185
,
114
,
237
,
58
,
223
,
120
,
250
,
15
,
88
,
102
,
177
,
181
,
21
,
136
,
160
,
219
,
128
,
201
,
4
,
204
,
109
,
166
,
170
,
168
,
106
,
196
,
109
,
130
,
174
,
162
,
13
,
8
,
20
,
66
,
36
,
217
,
201
,
156
,
197
,
156
,
133
,
109
,
36
,
145
,
153
,
116
,
55
,
119
,
222
,
121
,
150
,
221
,
189
,
29
,
114
,
12
,
110
,
221
,
58
,
228
,
239
,
125
,
225
,
87
,
248
,
245
,
95
,
255
,
50
,
221
,
38
,
34
,
216
,
176
,
205
,
134
,
36
,
254
,
31
,
70
,
18
,
54
,
216
,
2
,
2
,
73
,
188
,
159
,
193
,
247
,
241
,
235
,
191
,
253
,
59
,
252
,
107
,
63
,
251
,
51
,
148
,
253
,
138
,
219
,
29
,
82
,
148
,
27
,
73
,
84
,
55
,
85
,
19
,
219
,
72
,
65
,
183
,
177
,
65
,
10
,
4
,
184
,
77
,
42
,
32
,
204
,
156
,
19
,
12
,
135
,
71
,
39
,
220
,
188
,
117
,
200
,
197
,
75
,
87
,
216
,
168
,
42
,
108
,
243
,
135
,
223
,
126
,
158
,
159
,
255
,
249
,
127
,
155
,
143
,
127
,
236
,
81
,
170
,
38
,
115
,
46
,
204
,
229
,
132
,
147
,
245
,
49
,
235
,
245
,
154
,
213
,
74
,
124
,
226
,
19
,
15
,
33
,
193
,
250
,
228
,
132
,
145
,
43
,
150
,
165
,
56
,
58
,
58
,
38
,
115
,
197
,
214
,
106
,
197
,
243
,
207
,
189
,
196
,
197
,
75
,
111
,
99
,
139
,
110
,
19
,
1
,
2
,
186
,
27
,
9
,
102
,
21
,
18
,
84
,
21
,
96
,
64
,
84
,
53
,
179
,
138
,
141
,
170
,
194
,
109
,
170
,
10
,
219
,
108
,
100
,
38
,
85
,
69
,
119
,
227
,
110
,
78
,
214
,
107
,
238
,
190
,
231
,
46
,
118
,
119
,
118
,
185
,
116
,
233
,
10
,
255
,
219
,
231
,
255
,
1
,
95
,
253
,
218
,
83
,
116
,
155
,
136
,
192
,
54
,
17
,
129
,
36
,
108
,
99
,
27
,
73
,
72
,
2
,
68
,
102
,
18
,
145
,
216
,
148
,
77
,
217
,
226
,
253
,
12
,
222
,
199
,
178
,
94
,
48
,
188
,
92
,
85
,
107
,
208
,
78
,
117
,
33
,
5
,
115
,
46
,
216
,
166
,
219
,
216
,
147
,
170
,
34
,
36
,
26
,
48
,
208
,
93
,
8
,
49
,
103
,
97
,
243
,
142
,
136
,
160
,
187
,
145
,
68
,
68
,
176
,
81
,
85
,
156
,
123
,
229
,
85
,
126
,
225
,
239
,
252
,
93
,
254
,
195
,
191
,
241
,
239
,
243
,
177
,
39
,
62
,
74
,
119
,
115
,
116
,
124
,
204
,
141
,
27
,
55
,
185
,
114
,
229
,
42
,
151
,
47
,
95
,
225
,
230
,
205
,
27
,
44
,
203
,
100
,
181
,
218
,
102
,
103
,
123
,
155
,
179
,
103
,
239
,
228
,
145
,
71
,
30
,
225
,
244
,
233
,
51
,
28
,
28
,
28
,
243
,
244
,
55
,
158
,
97
,
89
,
79
,
198
,
24
,
116
,
21
,
206
,
32
,
98
,
133
,
16
,
99
,
12
,
220
,
205
,
106
,
123
,
11
,
27
,
214
,
235
,
53
,
17
,
73
,
183
,
17
,
194
,
54
,
115
,
22
,
182
,
89
,
150
,
133
,
238
,
198
,
54
,
18
,
239
,
152
,
115
,
98
,
155
,
173
,
213
,
138
,
71
,
30
,
125
,
152
,
103
,
190
,
253
,
34
,
159
,
255
,
252
,
63
,
224
,
197
,
23
,
207
,
33
,
9
,
73
,
216
,
70
,
18
,
221
,
77
,
68
,
16
,
17
,
116
,
55
,
146
,
176
,
141
,
36
,
170
,
10
,
41
,
144
,
116
,
36
,
233
,
8
,
204
,
251
,
73
,
222
,
199
,
195
,
15
,
63
,
68
,
119
,
239
,
68
,
232
,
231
,
16
,
119
,
180
,
193
,
221
,
84
,
23
,
93
,
13
,
24
,
119
,
99
,
140
,
13
,
203
,
178
,
96
,
27
,
219
,
216
,
96
,
55
,
118
,
99
,
131
,
219
,
84
,
55
,
182
,
145
,
132
,
109
,
108
,
99
,
224
,
250
,
245
,
155
,
188
,
114
,
254
,
187
,
60
,
242
,
200
,
67
,
220
,
115
,
207
,
93
,
172
,
215
,
199
,
92
,
185
,
114
,
133
,
215
,
94
,
191
,
192
,
133
,
11
,
111
,
241
,
246
,
219
,
215
,
184
,
121
,
243
,
144
,
245
,
201
,
194
,
206
,
206
,
54
,
15
,
61
,
120
,
63
,
15
,
63
,
252
,
16
,
251
,
251
,
167
,
248
,
218
,
215
,
158
,
226
,
235
,
95
,
255
,
38
,
153
,
43
,
114
,
12
,
144
,
176
,
27
,
183
,
81
,
136
,
136
,
96
,
35
,
51
,
177
,
161
,
170
,
153
,
115
,
34
,
192
,
54
,
146
,
152
,
53
,
169
,
106
,
16
,
116
,
155
,
170
,
162
,
202
,
84
,
21
,
221
,
13
,
8
,
219
,
68
,
4
,
191
,
246
,
143
,
127
,
139
,
215
,
95
,
127
,
147
,
136
,
64
,
18
,
239
,
145
,
68
,
68
,
176
,
33
,
9
,
219
,
72
,
34
,
51
,
201
,
76
,
192
,
128
,
136
,
136
,
55
,
109
,
255
,
79
,
146
,
110
,
28
,
28
,
28
,
240
,
253
,
12
,
62
,
64
,
87
,
95
,
4
,
93
,
168
,
238
,
7
,
187
,
27
,
219
,
100
,
14
,
108
,
179
,
177
,
120
,
66
,
55
,
85
,
133
,
221
,
216
,
198
,
54
,
110
,
35
,
132
,
16
,
229
,
162
,
91
,
216
,
102
,
163
,
187
,
145
,
132
,
36
,
82
,
73
,
35
,
206
,
157
,
251
,
46
,
191
,
240
,
119
,
62
,
207
,
127
,
240
,
55
,
254
,
61
,
30
,
126
,
240
,
35
,
60
,
248
,
224
,
3
,
108
,
111
,
111
,
241
,
224
,
3
,
247
,
113
,
116
,
120
,
4
,
152
,
221
,
189
,
93
,
206
,
158
,
61
,
195
,
153
,
59
,
78
,
179
,
179
,
189
,
197
,
235
,
175
,
95
,
228
,
119
,
191
,
242
,
251
,
44
,
179
,
136
,
48
,
138
,
193
,
24
,
131
,
170
,
66
,
17
,
108
,
116
,
155
,
204
,
192
,
54
,
221
,
141
,
109
,
192
,
180
,
205
,
70
,
117
,
19
,
145
,
40
,
26
,
181
,
144
,
64
,
18
,
17
,
98
,
189
,
94
,
179
,
209
,
93
,
172
,
215
,
39
,
124
,
235
,
155
,
207
,
18
,
17
,
140
,
49
,
248
,
94
,
182
,
177
,
141
,
36
,
54
,
108
,
35
,
137
,
136
,
0
,
68
,
85
,
49
,
70
,
16
,
17
,
216
,
190
,
105
,
251
,
150
,
36
,
222
,
79
,
242
,
62
,
62
,
250
,
208
,
131
,
92
,
189
,
118
,
125
,
189
,
183
,
191
,
247
,
87
,
36
,
253
,
57
,
219
,
96
,
110
,
51
,
54
,
116
,
23
,
115
,
78
,
34
,
130
,
238
,
166
,
170
,
217
,
48
,
198
,
24
,
219
,
216
,
70
,
10
,
186
,
141
,
36
,
222
,
83
,
85
,
216
,
102
,
195
,
54
,
182
,
185
,
126
,
253
,
38
,
231
,
206
,
189
,
202
,
71
,
31
,
126
,
136
,
187
,
238
,
60
,
139
,
4
,
91
,
219
,
43
,
246
,
246
,
119
,
216
,
223
,
223
,
229
,
212
,
169
,
83
,
236
,
237
,
237
,
177
,
187
,
183
,
207
,
193
,
193
,
49
,
191
,
252
,
203
,
95
,
226
,
252
,
171
,
111
,
144
,
25
,
216
,
38
,
35
,
177
,
205
,
198
,
106
,
12
,
54
,
50
,
147
,
204
,
164
,
187
,
232
,
54
,
27
,
17
,
73
,
85
,
81
,
53
,
193
,
80
,
221
,
116
,
55
,
179
,
138
,
170
,
137
,
36
,
230
,
44
,
186
,
155
,
238
,
166
,
170
,
144
,
196
,
24
,
3
,
73
,
116
,
55
,
27
,
221
,
205
,
134
,
36
,
222
,
35
,
9
,
73
,
108
,
72
,
66
,
2
,
73
,
68
,
136
,
49
,
18
,
41
,
158
,
94
,
175
,
215
,
191
,
152
,
153
,
125
,
112
,
112
,
192
,
247
,
147
,
188
,
143
,
143
,
126
,
244
,
33
,
238
,
187
,
239
,
94
,
47
,
203
,
242
,
99
,
153
,
227
,
103
,
170
,
138
,
57
,
39
,
221
,
205
,
70
,
87
,
211
,
221
,
216
,
208
,
221
,
216
,
77
,
85
,
99
,
155
,
119
,
24
,
12
,
216
,
198
,
136
,
141
,
170
,
162
,
187
,
233
,
110
,
54
,
108
,
51
,
231
,
68
,
18
,
27
,
87
,
175
,
222
,
224
,
249
,
231
,
191
,
195
,
238
,
222
,
46
,
31
,
249
,
200
,
221
,
172
,
182
,
86
,
100
,
14
,
182
,
183
,
118
,
216
,
218
,
222
,
1
,
39
,
175
,
191
,
246
,
22
,
255
,
215
,
255
,
249
,
155
,
60
,
255
,
252
,
75
,
40
,
196
,
70
,
230
,
64
,
33
,
16
,
140
,
49
,
104
,
155
,
80
,
96
,
67
,
102
,
130
,
1
,
1
,
54
,
221
,
141
,
219
,
216
,
166
,
170
,
17
,
48
,
171
,
88
,
47
,
107
,
170
,
154
,
13
,
155
,
119
,
84
,
21
,
221
,
77
,
102
,
34
,
9
,
73
,
108
,
216
,
70
,
18
,
182
,
249
,
94
,
17
,
129
,
109
,
36
,
177
,
33
,
9
,
73
,
216
,
38
,
34
,
1
,
125
,
233
,
210
,
165
,
75
,
255
,
112
,
127
,
127
,
159
,
131
,
131
,
3
,
190
,
159
,
228
,
125
,
124
,
247
,
181
,
215
,
121
,
224
,
254
,
251
,
232
,
246
,
61
,
171
,
213
,
248
,
183
,
128
,
49
,
70
,
82
,
213
,
204
,
185
,
176
,
209
,
213
,
108
,
216
,
96
,
155
,
119
,
25
,
119
,
99
,
27
,
187
,
193
,
6
,
137
,
110
,
211
,
221
,
116
,
55
,
182
,
121
,
143
,
109
,
54
,
36
,
1
,
230
,
224
,
224
,
144
,
231
,
158
,
251
,
14
,
175
,
189
,
246
,
38
,
235
,
165
,
88
,
102
,
115
,
229
,
234
,
77
,
190
,
243
,
226
,
119
,
249
,
202
,
239
,
126
,
131
,
223
,
253
,
202
,
239
,
115
,
249
,
242
,
85
,
20
,
65
,
230
,
224
,
61
,
54
,
100
,
4
,
57
,
6
,
27
,
145
,
73
,
68
,
16
,
18
,
109
,
35
,
137
,
57
,
139
,
234
,
6
,
137
,
147
,
147
,
53
,
85
,
147
,
89
,
69
,
119
,
209
,
54
,
32
,
230
,
156
,
128
,
88
,
150
,
133
,
57
,
39
,
182
,
89
,
173
,
86
,
124
,
175
,
136
,
192
,
54
,
146
,
136
,
8
,
54
,
108
,
179
,
33
,
137
,
136
,
96
,
35
,
66
,
68
,
136
,
136
,
96
,
140
,
193
,
109
,
191
,
116
,
230
,
204
,
153
,
175
,
85
,
21
,
7
,
7
,
7
,
124
,
63
,
131
,
15
,
96
,
27
,
219
,
207
,
117
,
251
,
114
,
68
,
62
,
184
,
44
,
107
,
34
,
68
,
102
,
82
,
85
,
204
,
57
,
65
,
98
,
206
,
194
,
110
,
54
,
108
,
110
,
19
,
118
,
97
,
155
,
101
,
78
,
20
,
73
,
85
,
209
,
221
,
216
,
70
,
18
,
182
,
169
,
42
,
50
,
147
,
170
,
162
,
187
,
217
,
144
,
130
,
101
,
22
,
207
,
254
,
225
,
119
,
120
,
238
,
249
,
151
,
89
,
173
,
2
,
41
,
49
,
224
,
134
,
72
,
145
,
17
,
68
,
4
,
138
,
6
,
195
,
200
,
32
,
199
,
0
,
137
,
170
,
98
,
181
,
90
,
33
,
9
,
219
,
108
,
68
,
136
,
245
,
122
,
193
,
109
,
170
,
38
,
110
,
35
,
241
,
142
,
49
,
6
,
179
,
38
,
27
,
221
,
133
,
109
,
192
,
72
,
194
,
54
,
99
,
12
,
54
,
50
,
147
,
238
,
230
,
61
,
17
,
193
,
123
,
36
,
97
,
155
,
238
,
102
,
140
,
129
,
109
,
36
,
33
,
5
,
182
,
217
,
144
,
226
,
150
,
221
,
223
,
182
,
205
,
165
,
75
,
151
,
120
,
63
,
131
,
15
,
48
,
231
,
194
,
156
,
245
,
250
,
24
,
227
,
249
,
49
,
242
,
193
,
57
,
11
,
219
,
8
,
17
,
10
,
222
,
147
,
25
,
204
,
217
,
72
,
252
,
49
,
41
,
80
,
192
,
24
,
131
,
101
,
54
,
146
,
136
,
8
,
54
,
108
,
179
,
209
,
221
,
68
,
4
,
146
,
88
,
150
,
197
,
85
,
245
,
150
,
237
,
206
,
204
,
123
,
51
,
51
,
186
,
77
,
21
,
183
,
53
,
118
,
147
,
153
,
96
,
176
,
141
,
109
,
236
,
38
,
35
,
105
,
55
,
234
,
194
,
134
,
213
,
24
,
72
,
162
,
187
,
193
,
70
,
219
,
91
,
128
,
145
,
192
,
128
,
20
,
156
,
44
,
199
,
8
,
144
,
68
,
119
,
131
,
65
,
10
,
64
,
216
,
32
,
129
,
36
,
108
,
19
,
17
,
108
,
216
,
70
,
18
,
182
,
217
,
144
,
132
,
109
,
170
,
138
,
204
,
68
,
18
,
146
,
216
,
136
,
72
,
192
,
216
,
77
,
166
,
0
,
211
,
61
,
223
,
236
,
230
,
5
,
219
,
124
,
144
,
224
,
3
,
44
,
179
,
249
,
115
,
159
,
254
,
228
,
141
,
170
,
249
,
7
,
85
,
133
,
221
,
108
,
204
,
42
,
102
,
53
,
57
,
6
,
82
,
16
,
145
,
216
,
166
,
219
,
108
,
216
,
166
,
186
,
233
,
110
,
20
,
129
,
36
,
108
,
99
,
27
,
219
,
116
,
55
,
203
,
178
,
176
,
81
,
85
,
172
,
215
,
107
,
159
,
156
,
156
,
252
,
175
,
221
,
253
,
87
,
151
,
101
,
249
,
217
,
101
,
89
,
254
,
251
,
170
,
90
,
115
,
219
,
156
,
69
,
85
,
209
,
109
,
54
,
50
,
131
,
119
,
216
,
132
,
18
,
73
,
108
,
84
,
53
,
96
,
12
,
204
,
101
,
193
,
54
,
17
,
129
,
36
,
108
,
35
,
5
,
237
,
198
,
110
,
34
,
130
,
234
,
102
,
163
,
186
,
152
,
85
,
44
,
75
,
209
,
13
,
17
,
201
,
156
,
147
,
245
,
122
,
189
,
72
,
42
,
254
,
72
,
85
,
97
,
155
,
13
,
219
,
116
,
55
,
182
,
249
,
127
,
179
,
161
,
219
,
216
,
16
,
17
,
68
,
4
,
153
,
201
,
109
,
79
,
207
,
89
,
23
,
108
,
243
,
65
,
146
,
15
,
112
,
225
,
194
,
155
,
156
,
58
,
117
,
138
,
110
,
223
,
3
,
250
,
55
,
193
,
17
,
18
,
27
,
85
,
141
,
13
,
221
,
133
,
128
,
57
,
11
,
219
,
116
,
55
,
118
,
35
,
9
,
27
,
108
,
3
,
98
,
195
,
54
,
203
,
178
,
176
,
145
,
153
,
100
,
38
,
221
,
205
,
241
,
241
,
241
,
83
,
221
,
253
,
183
,
186
,
251
,
57
,
73
,
151
,
186
,
251
,
183
,
129
,
251
,
199
,
24
,
127
,
62
,
51
,
177
,
141
,
13
,
99
,
36
,
96
,
36
,
145
,
99
,
96
,
192
,
109
,
16
,
100
,
36
,
25
,
129
,
34
,
64
,
16
,
17
,
100
,
36
,
17
,
65
,
119
,
99
,
155
,
245
,
122
,
205
,
198
,
156
,
147
,
141
,
170
,
194
,
109
,
204
,
134
,
168
,
42
,
186
,
155
,
170
,
98
,
206
,
249
,
173
,
204
,
140
,
219
,
78
,
69
,
4
,
146
,
176
,
205
,
134
,
36
,
34
,
130
,
13
,
73
,
108
,
72
,
66
,
18
,
27
,
17
,
66
,
18
,
99
,
36
,
153
,
1
,
8
,
219
,
127
,
123
,
140
,
252
,
202
,
155
,
111
,
94
,
228
,
131
,
4
,
31
,
98
,
189
,
94
,
152
,
115
,
126
,
203
,
246
,
91
,
99
,
12
,
218
,
102
,
206
,
201
,
134
,
36
,
164
,
160
,
109
,
192
,
108
,
216
,
141
,
13
,
221
,
102
,
195
,
54
,
115
,
78
,
108
,
99
,
155
,
49
,
6
,
146
,
168
,
42
,
150
,
101
,
97
,
89
,
22
,
108
,
255
,
221
,
204
,
60
,
47
,
9
,
219
,
68
,
196
,
205
,
170
,
250
,
47
,
215
,
203
,
250
,
133
,
170
,
66
,
18
,
99
,
36
,
54
,
216
,
220
,
38
,
36
,
177
,
97
,
160
,
102
,
33
,
137
,
182
,
169
,
154
,
116
,
27
,
12
,
109
,
51
,
231
,
100
,
206
,
73
,
85
,
147
,
145
,
116
,
55
,
17
,
65
,
102
,
82
,
213
,
28
,
31
,
31
,
83
,
213
,
216
,
166
,
187
,
169
,
42
,
186
,
251
,
0
,
248
,
98
,
132
,
150
,
204
,
68
,
18
,
153
,
137
,
36
,
36
,
33
,
9
,
219
,
72
,
34
,
34
,
200
,
76
,
34
,
130
,
204
,
100
,
181
,
74
,
50
,
69
,
166
,
200
,
12
,
64
,
68
,
196
,
5
,
219
,
191
,
93
,
85
,
124
,
152
,
224
,
67
,
216
,
80
,
213
,
175
,
116
,
247
,
75
,
199
,
71
,
199
,
204
,
57
,
201
,
28
,
72
,
66
,
2
,
219
,
204
,
57
,
233
,
54
,
221
,
77
,
183
,
233
,
110
,
186
,
139
,
170
,
162
,
187
,
137
,
16
,
115
,
78
,
230
,
156
,
72
,
194
,
54
,
146
,
216
,
168
,
170
,
235
,
192
,
151
,
185
,
205
,
54
,
27
,
22
,
216
,
126
,
177
,
170
,
254
,
143
,
238
,
102
,
67
,
18
,
221
,
13
,
4
,
82
,
178
,
94
,
79
,
92
,
32
,
5
,
17
,
194
,
54
,
146
,
48
,
48
,
198
,
32
,
50
,
201
,
76
,
186
,
155
,
185
,
20
,
235
,
245
,
194
,
122
,
89
,
232
,
106
,
220
,
102
,
206
,
137
,
109
,
36
,
192
,
102
,
206
,
201
,
187
,
68
,
151
,
191
,
177
,
202
,
124
,
54
,
34
,
238
,
144
,
196
,
134
,
109
,
34
,
130
,
136
,
32
,
34
,
144
,
132
,
109
,
34
,
130
,
136
,
32
,
66
,
216
,
133
,
4
,
146
,
200
,
12
,
64
,
100
,
174
,
144
,
242
,
203
,
115
,
214
,
243
,
32
,
62
,
76
,
240
,
33
,
186
,
155
,
175
,
63
,
245
,
244
,
77
,
219
,
79
,
101
,
38
,
182
,
177
,
77
,
205
,
133
,
101
,
89
,
176
,
141
,
36
,
54
,
236
,
70
,
18
,
221
,
141
,
36
,
54
,
34
,
196
,
156
,
133
,
36
,
36
,
209
,
221
,
72
,
66
,
18
,
182
,
185
,
237
,
130
,
237
,
215
,
248
,
30
,
174
,
102
,
140
,
97
,
204
,
175
,
74
,
58
,
144
,
196
,
134
,
36
,
186
,
155
,
182
,
17
,
2
,
9
,
187
,
81
,
4
,
237
,
38
,
51
,
201
,
76
,
186
,
155
,
174
,
162
,
187
,
168
,
106
,
34
,
19
,
108
,
186
,
139
,
182
,
169
,
46
,
108
,
112
,
55
,
182
,
105
,
55
,
138
,
96
,
140
,
193
,
109
,
221
,
230
,
239
,
175
,
86
,
91
,
91
,
224
,
59
,
248
,
35
,
146
,
120
,
143
,
36
,
34
,
130
,
204
,
228
,
93
,
198
,
54
,
17
,
137
,
20
,
72
,
34
,
34
,
1
,
35
,
105
,
13
,
124
,
97
,
127
,
255
,
212
,
73
,
55
,
31
,
42
,
248
,
16
,
221
,
205
,
191
,
244
,
23
,
255
,
188
,
171
,
230
,
87
,
21
,
90
,
86
,
171
,
65
,
8
,
20
,
129
,
36
,
170
,
38
,
27
,
182
,
145
,
132
,
109
,
108
,
99
,
243
,
142
,
101
,
153
,
116
,
55
,
27
,
17
,
129
,
36
,
36
,
97
,
27
,
219
,
84
,
213
,
53
,
219
,
87
,
186
,
155
,
199
,
31
,
251
,
24
,
143
,
63
,
250
,
24
,
143
,
63
,
250
,
152
,
94
,
125
,
234
,
89
,
34
,
226
,
5
,
219
,
175
,
74
,
66
,
18
,
146
,
216
,
112
,
55
,
10
,
97
,
55
,
180
,
145
,
130
,
136
,
100
,
206
,
137
,
219
,
84
,
21
,
203
,
156
,
84
,
53
,
96
,
186
,
27
,
219
,
140
,
49
,
176
,
77
,
119
,
51
,
231
,
164
,
109
,
186
,
77
,
87
,
51
,
151
,
133
,
245
,
122
,
205
,
178
,
44
,
47
,
111
,
111
,
109
,
125
,
25
,
241
,
241
,
188
,
45
,
66
,
68
,
4
,
153
,
73
,
102
,
146
,
153
,
72
,
66
,
18
,
239
,
145
,
32
,
51
,
136
,
72
,
108
,
144
,
68
,
119
,
3
,
194
,
237
,
111
,
206
,
57
,
127
,
227
,
228
,
228
,
132
,
183
,
222
,
186
,
196
,
135
,
9
,
62
,
196
,
55
,
158
,
254
,
22
,
115
,
22
,
115
,
246
,
83
,
115
,
214
,
155
,
110
,
83
,
221
,
128
,
144
,
130
,
136
,
68
,
18
,
171
,
213
,
138
,
213
,
88
,
177
,
33
,
137
,
170
,
162
,
187
,
17
,
16
,
17
,
116
,
55
,
221
,
77
,
119
,
211
,
221
,
116
,
55
,
2
,
36
,
85
,
68
,
244
,
103
,
126
,
236
,
211
,
82
,
207
,
196
,
94
,
185
,
123
,
235
,
167
,
254
,
218
,
207
,
238
,
158
,
57
,
117
,
199
,
173
,
174
,
122
,
163
,
187
,
145
,
132
,
109
,
36
,
17
,
17
,
72
,
66
,
1
,
229
,
166
,
170
,
232
,
42
,
150
,
101
,
97
,
35
,
51
,
201
,
76
,
192
,
216
,
102
,
206
,
201
,
172
,
162
,
102
,
97
,
27
,
219
,
116
,
155
,
89
,
141
,
9
,
20
,
73
,
102
,
98
,
27
,
236
,
95
,
191
,
99
,
127
,
239
,
138
,
228
,
79
,
70
,
4
,
82
,
176
,
97
,
155
,
141
,
170
,
162
,
187
,
145
,
68
,
68
,
32
,
9
,
16
,
27
,
146
,
201
,
12
,
34
,
2
,
99
,
66
,
242
,
106
,
140
,
207
,
239
,
140
,
173
,
139
,
221
,
205
,
15
,
34
,
248
,
1
,
116
,
55
,
115
,
206
,
87
,
109
,
255
,
65
,
85
,
97
,
155
,
238
,
194
,
54
,
153
,
129
,
109
,
108
,
83
,
221
,
100
,
38
,
99
,
12
,
70
,
38
,
238
,
34
,
34
,
136
,
16
,
27
,
182
,
217
,
176
,
141
,
36
,
102
,
21
,
6
,
237
,
239
,
237
,
143
,
91
,
7
,
183
,
182
,
218
,
222
,
118
,
247
,
142
,
237
,
157
,
238
,
222
,
221
,
222
,
222
,
201
,
136
,
184
,
32
,
137
,
238
,
102
,
195
,
54
,
223
,
43
,
51
,
8
,
137
,
141
,
144
,
216
,
144
,
32
,
66
,
116
,
53
,
85
,
13
,
54
,
17
,
193
,
172
,
162
,
187
,
176
,
65
,
17
,
100
,
14
,
108
,
51
,
231
,
164
,
187
,
89
,
150
,
229
,
237
,
49
,
198
,
111
,
218
,
125
,
151
,
34
,
158
,
224
,
29
,
6
,
76
,
119
,
19
,
33
,
50
,
19
,
219
,
188
,
71
,
18
,
18
,
68
,
8
,
73
,
188
,
103
,
100
,
146
,
153
,
207
,
85
,
213
,
23
,
14
,
79
,
142
,
216
,
223
,
221
,
231
,
137
,
199
,
158
,
224
,
195
,
4
,
63
,
128
,
111
,
60
,
253
,
7
,
236
,
237
,
237
,
28
,
86
,
213
,
111
,
42
,
2
,
219
,
116
,
27
,
48
,
235
,
245
,
194
,
156
,
147
,
238
,
98
,
206
,
133
,
8
,
97
,
155
,
234
,
162
,
219
,
116
,
55
,
182
,
145
,
132
,
36
,
54
,
36
,
241
,
14
,
9
,
68
,
108
,
175
,
86
,
59
,
221
,
181
,
211
,
221
,
187
,
213
,
189
,
219
,
221
,
123
,
93
,
189
,
7
,
236
,
72
,
186
,
213
,
221
,
116
,
55
,
221
,
205
,
70
,
85
,
81
,
53
,
89
,
150
,
53
,
27
,
145
,
73
,
132
,
136
,
8
,
186
,
138
,
170
,
166
,
170
,
49
,
32
,
137
,
118
,
51
,
231
,
66
,
119
,
179
,
94
,
175
,
169
,
154
,
184
,
155
,
238
,
166
,
187
,
169
,
42
,
214
,
235
,
53
,
182
,
127
,
127
,
103
,
103
,
231
,
181
,
234
,
122
,
56
,
20
,
143
,
100
,
38
,
153
,
34
,
51
,
136
,
0
,
27
,
108
,
147
,
153
,
100
,
38
,
153
,
137
,
36
,
34
,
2
,
73
,
72
,
34
,
34
,
136
,
8
,
86
,
171
,
45
,
219
,
253
,
63
,
175
,
74
,
231
,
239
,
216
,
63
,
21
,
1
,
162
,
139
,
39
,
30
,
125
,
156
,
15
,
50
,
248
,
1
,
29
,
159
,
172
,
177
,
249
,
39
,
171
,
149
,
46
,
71
,
232
,
110
,
48
,
115
,
153
,
84
,
21
,
85
,
69
,
132
,
144
,
196
,
178
,
76
,
170
,
154
,
57
,
27
,
69
,
96
,
68
,
119
,
1
,
98
,
195
,
54
,
221
,
205
,
70
,
132
,
88
,
229
,
216
,
157
,
85
,
103
,
203
,
190
,
233
,
246
,
176
,
157
,
224
,
180
,
73
,
64
,
183
,
29
,
75
,
162
,
187
,
89
,
173
,
86
,
100
,
38
,
153
,
9
,
152
,
110
,
211
,
109
,
186
,
155
,
28
,
3
,
100
,
54
,
50
,
147
,
57
,
39
,
153
,
65
,
68
,
224
,
54
,
203
,
178
,
96
,
64
,
145
,
116
,
23
,
221
,
147
,
110
,
19
,
17
,
116
,
21
,
174
,
62
,
92
,
229
,
248
,
178
,
32
,
192
,
159
,
24
,
35
,
239
,
228
,
54
,
219
,
128
,
145
,
2
,
137
,
219
,
154
,
136
,
68
,
130
,
8
,
209
,
13
,
18
,
72
,
16
,
17
,
68
,
136
,
140
,
68
,
248
,
27
,
224
,
255
,
101
,
108
,
15
,
149
,
59
,
64
,
213
,
10
,
132
,
249
,
32
,
193
,
15
,
168
,
219
,
204
,
89
,
207
,
44
,
203
,
242
,
251
,
85
,
69
,
119
,
211
,
54
,
146
,
200
,
76
,
34
,
130
,
80
,
80
,
93
,
40
,
68
,
102
,
50
,
198
,
138
,
13
,
41
,
176
,
141
,
36
,
36
,
33
,
9
,
219
,
140
,
28
,
8
,
206
,
84
,
213
,
71
,
220
,
222
,
177
,
123
,
215
,
238
,
221
,
238
,
222
,
107
,
247
,
94
,
119
,
239
,
131
,
182
,
184
,
77
,
18
,
153
,
137
,
36
,
36
,
81
,
213
,
8
,
8
,
9
,
108
,
150
,
101
,
97
,
206
,
66
,
18
,
221
,
133
,
109
,
164
,
96
,
89
,
47
,
84
,
55
,
146
,
176
,
161
,
187
,
169
,
106
,
230
,
44
,
230
,
156
,
84
,
21
,
115
,
22
,
221
,
253
,
252
,
214
,
106
,
245
,
74
,
87
,
239
,
71
,
198
,
147
,
153
,
177
,
189
,
90
,
37
,
138
,
32
,
51
,
200
,
12
,
34
,
130
,
213
,
106
,
69
,
132
,
176
,
27
,
219
,
100
,
6
,
146
,
200
,
76
,
36
,
200
,
72
,
34
,
226
,
176
,
187
,
255
,
219
,
17
,
171
,
215
,
203
,
29
,
128
,
16
,
18
,
230
,
195
,
4
,
63
,
160
,
170
,
102
,
127
,
119
,
235
,
86
,
119
,
253
,
67
,
80
,
71
,
4
,
171
,
213
,
138
,
213
,
24
,
216
,
166
,
187
,
105
,
27
,
41
,
248
,
94
,
82
,
96
,
27
,
219
,
108
,
216
,
198
,
54
,
239
,
177
,
57
,
235
,
246
,
125
,
118
,
111
,
87
,
247
,
110
,
117
,
239
,
181
,
189
,
219
,
221
,
123
,
213
,
181
,
111
,
247
,
25
,
73
,
68
,
4
,
221
,
77
,
85
,
81
,
85
,
68
,
4
,
57
,
6
,
198
,
68
,
136
,
238
,
162
,
187
,
1
,
97
,
131
,
36
,
106
,
78
,
102
,
21
,
33
,
17
,
145
,
96
,
179
,
44
,
11
,
27
,
17
,
129
,
109
,
54
,
236
,
94
,
34
,
226
,
107
,
72
,
13
,
156
,
14
,
197
,
143
,
75
,
65
,
230
,
64
,
130
,
136
,
96
,
140
,
65
,
102
,
32
,
37
,
17
,
65
,
102
,
34
,
137
,
8
,
145
,
153
,
68
,
36
,
82
,
16
,
17
,
216
,
254
,
130
,
237
,
47
,
74
,
4
,
32
,
254
,
152
,
0
,
241
,
65
,
130
,
31
,
208
,
179
,
207
,
254
,
33
,
199
,
39
,
107
,
230
,
236
,
95
,
5
,
206
,
71
,
4
,
221
,
77
,
219
,
100
,
38
,
54
,
116
,
55
,
35
,
19
,
119
,
35
,
65
,
132
,
176
,
139
,
136
,
32
,
34
,
168
,
42
,
108
,
19
,
17
,
68
,
4
,
182
,
81
,
232
,
84
,
211
,
31
,
45
,
123
,
167
,
187
,
119
,
186
,
189
,
227
,
238
,
93
,
119
,
239
,
85
,
213
,
190
,
225
,
78
,
254
,
72
,
119
,
35
,
9
,
73
,
216
,
166
,
187
,
9
,
5
,
17
,
193
,
214
,
214
,
54
,
91
,
91
,
91
,
68
,
136
,
174
,
98
,
46
,
11
,
85
,
69
,
102
,
98
,
160
,
187
,
104
,
27
,
27
,
170
,
76
,
85
,
97
,
155
,
170
,
194
,
246
,
43
,
91
,
91
,
91
,
47
,
218
,
30
,
202
,
184
,
127
,
107
,
103
,
247
,
209
,
49
,
182
,
168
,
134
,
49
,
182
,
128
,
4
,
68
,
68
,
18
,
33
,
34
,
146
,
136
,
224
,
93
,
98
,
53
,
6
,
35
,
147
,
145
,
137
,
224
,
235
,
180
,
255
,
235
,
85
,
172
,
14
,
176
,
184
,
205
,
128
,
217
,
144
,
248
,
48
,
193
,
15
,
161
,
38
,
220
,
188
,
113
,
244
,
98
,
85
,
255
,
74
,
119
,
51
,
231
,
68
,
130
,
238
,
6
,
76
,
102
,
0
,
70
,
226
,
29
,
221
,
69
,
102
,
242
,
30
,
73
,
68
,
4
,
27
,
17
,
65
,
102
,
18
,
17
,
163
,
237
,
143
,
119
,
247
,
142
,
237
,
29
,
187
,
119
,
186
,
122
,
183
,
187
,
119
,
186
,
123
,
223
,
246
,
221
,
220
,
38
,
137
,
136
,
192
,
54
,
182
,
145
,
32
,
4
,
146
,
168
,
42
,
236
,
6
,
76
,
85
,
35
,
9
,
99
,
12
,
116
,
55
,
203
,
178
,
80
,
85
,
132
,
2
,
27
,
36
,
97
,
131
,
36
,
230
,
156
,
5
,
122
,
42
,
34
,
142
,
5
,
219
,
33
,
61
,
250
,
137
,
79
,
124
,
226
,
236
,
125
,
247
,
63
,
192
,
131
,
15
,
62
,
196
,
24
,
43
,
238
,
191
,
255
,
126
,
246
,
246
,
246
,
57
,
125
,
250
,
12
,
99
,
172
,
200
,
76
,
36
,
17
,
17
,
100
,
38
,
182
,
1
,
3
,
62
,
95
,
213
,
255
,
77
,
106
,
188
,
37
,
148
,
2
,
27
,
12
,
24
,
227
,
173
,
154
,
216
,
205
,
7
,
9
,
126
,
8
,
221
,
197
,
233
,
51
,
123
,
93
,
85
,
191
,
4
,
92
,
138
,
8
,
36
,
129
,
141
,
219
,
72
,
194
,
230
,
29
,
153
,
9
,
136
,
238
,
166
,
187
,
137
,
8
,
50
,
147
,
238
,
102
,
195
,
54
,
27
,
153
,
73
,
102
,
126
,
188
,
230
,
220
,
119
,
123
,
203
,
221
,
219
,
118
,
111
,
219
,
222
,
110
,
247
,
105
,
73
,
119
,
74
,
98
,
67
,
18
,
153
,
137
,
36
,
36
,
33
,
5
,
221
,
69
,
85
,
99
,
67
,
68
,
16
,
17
,
40
,
2
,
33
,
186
,
139
,
154
,
147
,
170
,
194
,
134
,
101
,
153
,
72
,
162
,
187
,
177
,
77
,
85
,
97
,
251
,
149
,
213
,
106
,
245
,
135
,
64
,
70
,
228
,
174
,
164
,
211
,
23
,
46
,
92
,
200
,
245
,
250
,
132
,
157
,
157
,
29
,
246
,
246
,
246
,
184
,
247
,
222
,
123
,
57
,
125
,
250
,
52
,
247
,
222
,
123
,
47
,
71
,
71
,
71
,
204
,
89
,
68
,
4
,
171
,
213
,
138
,
13
,
73
,
220
,
246
,
70
,
205
,
250
,
69
,
183
,
223
,
104
,
247
,
221
,
192
,
54
,
82
,
27
,
186
,
81
,
163
,
240
,
58
,
146
,
115
,
175
,
158
,
231
,
131
,
36
,
63
,
132
,
183
,
47
,
95
,
230
,
238
,
187
,
239
,
98
,
89
,
47
,
23
,
115
,
228
,
227
,
17
,
241
,
47
,
118
,
155
,
28
,
3
,
69
,
128
,
33
,
199
,
96
,
86
,
209
,
93
,
8
,
48
,
70
,
10
,
34
,
130
,
170
,
34
,
51
,
169
,
42
,
222
,
35
,
137
,
238
,
118
,
72
,
191
,
43
,
81
,
109
,
111
,
217
,
94
,
25
,
70
,
117
,
223
,
135
,
248
,
87
,
51
,
115
,
63
,
51
,
137
,
8
,
34
,
2
,
219
,
100
,
36
,
153
,
66
,
18
,
146
,
144
,
4
,
134
,
145
,
9
,
18
,
216
,
116
,
155
,
165
,
38
,
27
,
85
,
69
,
119
,
19
,
145
,
116
,
55
,
238
,
166
,
103
,
45
,
192
,
151
,
86
,
171
,
213
,
75
,
66
,
139
,
4
,
15
,
62
,
248
,
208
,
195
,
183
,
110
,
222
,
252
,
204
,
193
,
193
,
173
,
184
,
118
,
245
,
42
,
115
,
78
,
46
,
95
,
190
,
204
,
209
,
209
,
17
,
87
,
174
,
92
,
225
,
228
,
228
,
4
,
73
,
140
,
28
,
8
,
17
,
138
,
217
,
246
,
183
,
215
,
235
,
229
,
239
,
183
,
121
,
46
,
20
,
7
,
138
,
184
,
21
,
210
,
77
,
164
,
99
,
164
,
6
,
219
,
152
,
115
,
175
,
190
,
194
,
135
,
73
,
126
,
72
,
111
,
189
,
125
,
153
,
251
,
30
,
184
,
175
,
221
,
253
,
122
,
100
,
254
,
213
,
64
,
103
,
109
,
35
,
160
,
221
,
84
,
53
,
203
,
156
,
132
,
4
,
152
,
110
,
131
,
2
,
219
,
84
,
21
,
17
,
129
,
109
,
186
,
155
,
204
,
68
,
18
,
85
,
165
,
219
,
126
,
39
,
34
,
14
,
128
,
149
,
97
,
24
,
71
,
187
,
31
,
31
,
99
,
252
,
149
,
213
,
106
,
53
,
248
,
35
,
146
,
144
,
68
,
102
,
48
,
198
,
32
,
51
,
145
,
68
,
68
,
144
,
17
,
84
,
55
,
118
,
83
,
213
,
72
,
208
,
109
,
140
,
233
,
110
,
218
,
208
,
109
,
170
,
138
,
185
,
44
,
244
,
236
,
231
,
182
,
183
,
183
,
127
,
45
,
20
,
7
,
130
,
67
,
164
,
163
,
204
,
188
,
188
,
179
,
189
,
115
,
243
,
240
,
224
,
224
,
12
,
104
,
107
,
189
,
94
,
198
,
178
,
172
,
181
,
172
,
23
,
186
,
155
,
237
,
237
,
109
,
86
,
171
,
213
,
146
,
138
,
91
,
192
,
185
,
154
,
243
,
55
,
150
,
245
,
252
,
146
,
164
,
239
,
100
,
230
,
91
,
25
,
113
,
49
,
35
,
222
,
82
,
196
,
117
,
41
,
22
,
103
,
88
,
136
,
147
,
48
,
55
,
175
,
93
,
231
,
195
,
12
,
126
,
4
,
181
,
76
,
94
,
120
,
245
,
252
,
211
,
79
,
62
,
241
,
196
,
223
,
150
,
244
,
159
,
27
,
143
,
57
,
39
,
109
,
211
,
110
,
50
,
147
,
141
,
42
,
131
,
68
,
40
,
176
,
77
,
102
,
82
,
85
,
100
,
38
,
221
,
141
,
109
,
50
,
19
,
73
,
219
,
221
,
125
,
150
,
228
,
117
,
64
,
108
,
152
,
141
,
135
,
35
,
98
,
123
,
206
,
73
,
102
,
18
,
17
,
100
,
38
,
146
,
0
,
209
,
54
,
33
,
80
,
4
,
182
,
81
,
8
,
170
,
153
,
101
,
36
,
81
,
221
,
44
,
115
,
98
,
55
,
221
,
141
,
20
,
72
,
98
,
163
,
171
,
15
,
50
,
243
,
183
,
71
,
142
,
171
,
224
,
35
,
224
,
8
,
116
,
120
,
237
,
234
,
181
,
183
,
35
,
116
,
126
,
172
,
86
,
95
,
202
,
200
,
143
,
2
,
119
,
67
,
110
,
129
,
19
,
36
,
33
,
187
,
250
,
96
,
218
,
111
,
185
,
251
,
34
,
112
,
101
,
172
,
198
,
141
,
80
,
92
,
85
,
232
,
74
,
70
,
92
,
27
,
210
,
65
,
75
,
19
,
133
,
163
,
154
,
151
,
206
,
159
,
227
,
7
,
53
,
248
,
17
,
92
,
60
,
127
,
157
,
79
,
61
,
246
,
168
,
151
,
101
,
249
,
31
,
86
,
57
,
254
,
66
,
142
,
252
,
119
,
157
,
1
,
221
,
156
,
172
,
139
,
8
,
209
,
221
,
128
,
200
,
8
,
20
,
193
,
178
,
76
,
108
,
19
,
17
,
116
,
55
,
146
,
136
,
8
,
186
,
27
,
73
,
43
,
236
,
125
,
65
,
27
,
10
,
16
,
144
,
146
,
30
,
1
,
97
,
55
,
221
,
77
,
102
,
82
,
53
,
137
,
8
,
198
,
24
,
96
,
19
,
49
,
232
,
46
,
50
,
18
,
73
,
68
,
36
,
166
,
153
,
115
,
97
,
89
,
22
,
54
,
164
,
100
,
195
,
134
,
101
,
89
,
179
,
44
,
11
,
22
,
95
,
219
,
217
,
217
,
121
,
86
,
161
,
67
,
208
,
33
,
112
,
8
,
28
,
73
,
58
,
1
,
234
,
182
,
55
,
187
,
251
,
91
,
66
,
72
,
10
,
133
,
36
,
48
,
182
,
5
,
51
,
34
,
22
,
101
,
158
,
32
,
29
,
11
,
142
,
20
,
113
,
28
,
210
,
90
,
168
,
44
,
250
,
47
,
124
,
234
,
113
,
254
,
233
,
115
,
47
,
115
,
238
,
252
,
43
,
252
,
48
,
6
,
63
,
130
,
123
,
238
,
63
,
69
,
157
,
52
,
63
,
243
,
115
,
159
,
188
,
242
,
91
,
95
,
120
,
225
,
63
,
149
,
185
,
127
,
53
,
198
,
95
,
70
,
77
,
196
,
130
,
0
,
41
,
16
,
5
,
18
,
115
,
22
,
27
,
146
,
168
,
42
,
108
,
19
,
17
,
140
,
49
,
144
,
68
,
85
,
33
,
41
,
35
,
2
,
119
,
79
,
192
,
183
,
157
,
150
,
244
,
88
,
102
,
0
,
38
,
51
,
129
,
166
,
187
,
145
,
192
,
110
,
148
,
3
,
48
,
93
,
197
,
136
,
100
,
86
,
209
,
109
,
186
,
155
,
101
,
153
,
44
,
203
,
66
,
230
,
138
,
136
,
64
,
50
,
39
,
39
,
199
,
44
,
203
,
66
,
85
,
189
,
188
,
183
,
187
,
247
,
143
,
34
,
227
,
26
,
112
,
44
,
233
,
16
,
56
,
4
,
142
,
129
,
69
,
82
,
73
,
154
,
192
,
20
,
154
,
10
,
77
,
161
,
10
,
81
,
146
,
166
,
164
,
10
,
152
,
72
,
37
,
169
,
128
,
146
,
84
,
141
,
220
,
96
,
117
,
243
,
181
,
239
,
92
,
224
,
149
,
243
,
175
,
240
,
195
,
74
,
126
,
4
,
119
,
157
,
189
,
19
,
4
,
231
,
158
,
125
,
59
,
14
,
15
,
214
,
151
,
35
,
245
,
117
,
227
,
79
,
43
,
244
,
104
,
68
,
48
,
171
,
168
,
154
,
72
,
65
,
87
,
113
,
199
,
233
,
51
,
156
,
57
,
115
,
134
,
101
,
89
,
120
,
228
,
145
,
71
,
56
,
58
,
58
,
226
,
201
,
39
,
159
,
228
,
214
,
173
,
91
,
252
,
228
,
79
,
254
,
36
,
175
,
191
,
254
,
250
,
113
,
70
,
252
,
222
,
24
,
227
,
138
,
224
,
4
,
180
,
238
,
238
,
79
,
41
,
227
,
95
,
143
,
136
,
149
,
36
,
50
,
69
,
102
,
32
,
137
,
136
,
32
,
51
,
16
,
2
,
243
,
142
,
145
,
131
,
101
,
153
,
156
,
172
,
79
,
0
,
1
,
166
,
219
,
204
,
217
,
204
,
57
,
145
,
68
,
119
,
179
,
44
,
203
,
173
,
213
,
106
,
245
,
75
,
123
,
187
,
123
,
207
,
6
,
28
,
41
,
226
,
86
,
72
,
7
,
146
,
14
,
37
,
29
,
41
,
98
,
29
,
138
,
147
,
144
,
214
,
82
,
172
,
35
,
99
,
137
,
136
,
69
,
210
,
58
,
165
,
69
,
210
,
18
,
210
,
130
,
52
,
37
,
77
,
80
,
129
,
74
,
33
,
55
,
197
,
208
,
224
,
165
,
243
,
231
,
184
,
118
,
245
,
109
,
126
,
20
,
131
,
31
,
153
,
48
,
246
,
246
,
206
,
86
,
156
,
28
,
215
,
51
,
217
,
245
,
55
,
35
,
243
,
63
,
137
,
204
,
159
,
3
,
157
,
18
,
1
,
134
,
136
,
100
,
119
,
119
,
135
,
199
,
31
,
127
,
130
,
91
,
183
,
110
,
241
,
227
,
63
,
254
,
227
,
92
,
186
,
116
,
137
,
123
,
239
,
189
,
151
,
87
,
207
,
191
,
202
,
197
,
55
,
47
,
50
,
114
,
220
,
112
,
247
,
137
,
164
,
221
,
200
,
60
,
176
,
122
,
161
,
253
,
185
,
204
,
177
,
27
,
25
,
224
,
102
,
140
,
164
,
170
,
217
,
144
,
132
,
13
,
166
,
129
,
96
,
140
,
21
,
179
,
138
,
200
,
96
,
197
,
138
,
170
,
70
,
10
,
164
,
192
,
158
,
116
,
55
,
182
,
153
,
203
,
82
,
17
,
241
,
197
,
83
,
251
,
251
,
191
,
19
,
210
,
145
,
164
,
35
,
208
,
145
,
196
,
17
,
112
,
2
,
44
,
66
,
133
,
84
,
18
,
133
,
84
,
192
,
148
,
212
,
130
,
146
,
84
,
130
,
66
,
42
,
65
,
11
,
25
,
201
,
220
,
246
,
157
,
87
,
206
,
241
,
39
,
33
,
249
,
17
,
156
,
61
,
123
,
39
,
33
,
129
,
4
,
88
,
10
,
228
,
230
,
234
,
156
,
253
,
27
,
93
,
253
,
124
,
40
,
238
,
207
,
200
,
7
,
164
,
72
,
110
,
59
,
58
,
58
,
164
,
170
,
185
,
124
,
249
,
45
,
230
,
156
,
92
,
187
,
118
,
157
,
27
,
55
,
110
,
112
,
116
,
120
,
200
,
229
,
203
,
151
,
233
,
234
,
175
,
142
,
49
,
158
,
202
,
136
,
107
,
146
,
174
,
172
,
151
,
245
,
67
,
18
,
127
,
51
,
51
,
239
,
16
,
38
,
115
,
176
,
97
,
131
,
36
,
198
,
72
,
4
,
140
,
145
,
116
,
55
,
182
,
89
,
150
,
133
,
89
,
147
,
238
,
166
,
219
,
204
,
89
,
84
,
21
,
27
,
221
,
205
,
122
,
189
,
118
,
119
,
255
,
218
,
233
,
253
,
83
,
191
,
176
,
26
,
227
,
154
,
20
,
7
,
146
,
110
,
69
,
198
,
129
,
164
,
195
,
144
,
142
,
36
,
173
,
35
,
98
,
157
,
210
,
146
,
17
,
235
,
144
,
214
,
138
,
152
,
33
,
45
,
138
,
88
,
80
,
76
,
164
,
137
,
212
,
142
,
52
,
136
,
151
,
206
,
159
,
227
,
202
,
245
,
107
,
252
,
73
,
17
,
63
,
162
,
187
,
31
,
122
,
132
,
51
,
41
,
12
,
132
,
20
,
216
,
1
,
72
,
110
,
150
,
246
,
67
,
109
,
255
,
27
,
134
,
127
,
39
,
34
,
126
,
114
,
246
,
114
,
186
,
27
,
173
,
215
,
39
,
236
,
238
,
238
,
114
,
120
,
116
,
140
,
128
,
174
,
238
,
154
,
243
,
247
,
182
,
183
,
183
,
127
,
97
,
123
,
107
,
251
,
21
,
227
,
43
,
93
,
117
,
180
,
244
,
252
,
143
,
87
,
171
,
213
,
127
,
180
,
94
,
175
,
137
,
8
,
50
,
19
,
73
,
128
,
217
,
216
,
218
,
218
,
194
,
110
,
50
,
130
,
110
,
35
,
137
,
234
,
102
,
89
,
22
,
192
,
84
,
65
,
119
,
179
,
81
,
85
,
156
,
156
,
156
,
208
,
221
,
191
,
115
,
199
,
254
,
169
,
255
,
106
,
119
,
119
,
247
,
2
,
102
,
65
,
58
,
150
,
56
,
1
,
142
,
5
,
107
,
73
,
19
,
104
,
65
,
133
,
212
,
64
,
73
,
106
,
67
,
11
,
44
,
100
,
11
,
115
,
219
,
75
,
231
,
95
,
225
,
79
,
139
,
248
,
255
,
224
,
241
,
199
,
158
,
32
,
49
,
141
,
144
,
91
,
216
,
97
,
8
,
1
,
182
,
115
,
153
,
243
,
158
,
118
,
127
,
118
,
186
,
127
,
234
,
228
,
100
,
253
,
185
,
49
,
242
,
225
,
101
,
153
,
187
,
64
,
217
,
190
,
132
,
249
,
202
,
222
,
238
,
238
,
63
,
94
,
141
,
241
,
166
,
205
,
9
,
176
,
92
,
189
,
118
,
245
,
161
,
159
,
248
,
236
,
79
,
252
,
143
,
171
,
173
,
173
,
79
,
188
,
250
,
234
,
121
,
50
,
147
,
155
,
55
,
111
,
145
,
25
,
116
,
23
,
146
,
216
,
222
,
222
,
38
,
34
,
16
,
198
,
134
,
182
,
89
,
150
,
133
,
170
,
162
,
170
,
17
,
162
,
109
,
132
,
56
,
62
,
62
,
242
,
178
,
204
,
47
,
239
,
237
,
237
,
253
,
23
,
167
,
246
,
247
,
95
,
5
,
166
,
96
,
45
,
233
,
4
,
233
,
4
,
88
,
11
,
166
,
160
,
5
,
109
,
169
,
3
,
89
,
162
,
185
,
173
,
52
,
124
,
237
,
244
,
3
,
156
,
190
,
117
,
137
,
243
,
47
,
63
,
207
,
159
,
54
,
241
,
39
,
224
,
137
,
71
,
31
,
167
,
99
,
69
,
244
,
130
,
109
,
9
,
75
,
16
,
186
,
109
,
100
,
82
,
85
,
99
,
233
,
222
,
61
,
62
,
57
,
57
,
211
,
213
,
123
,
17
,
234
,
49
,
198
,
173
,
213
,
106
,
117
,
212
,
221
,
216
,
14
,
131
,
70
,
68
,
95
,
186
,
114
,
249
,
167
,
158
,
120
,
226
,
137
,
95
,
60
,
60
,
60
,
188
,
227
,
51
,
159
,
249
,
12
,
111
,
188
,
241
,
6
,
27
,
103
,
207
,
158
,
229
,
249
,
231
,
159
,
231
,
129
,
7
,
30
,
224
,
245
,
215
,
95
,
35
,
51
,
176
,
77
,
85
,
97
,
155
,
57
,
155
,
170
,
162
,
230
,
36
,
16
,
182
,
89
,
230
,
156
,
213
,
245
,
155
,
251
,
123
,
251
,
255
,
221
,
254
,
222
,
222
,
183
,
109
,
31
,
2
,
235
,
148
,
22
,
96
,
45
,
105
,
1
,
38
,
96
,
192
,
128
,
21
,
233
,
188
,
126
,
139
,
186
,
243
,
14
,
190
,
243
,
242
,
75
,
252
,
179
,
54
,
248
,
19
,
240
,
242
,
249
,
115
,
108
,
124
,
252
,
177
,
199
,
177
,
100
,
57
,
12
,
182
,
49
,
235
,
57
,
5
,
56
,
165
,
121
,
199
,
222
,
222
,
77
,
221
,
102
,
59
,
170
,
42
,
220
,
173
,
128
,
64
,
82
,
131
,
70
,
142
,
14
,
233
,
198
,
133
,
11
,
23
,
214
,
146
,
184
,
120
,
241
,
34
,
175
,
190
,
250
,
42
,
79
,
62
,
249
,
36
,
111
,
189
,
245
,
22
,
103
,
206
,
156
,
225
,
190
,
251
,
238
,
227
,
141
,
55
,
94
,
163
,
170
,
144
,
68
,
119
,
211
,
93
,
128
,
136
,
8
,
10
,
49
,
171
,
152
,
115
,
94
,
147
,
244
,
143
,
78
,
157
,
186
,
227
,
151
,
183
,
183
,
182
,
222
,
182
,
221
,
33
,
221
,
2
,
142
,
145
,
166
,
208
,
148
,
100
,
41
,
124
,
112
,
120
,
145
,
83
,
251
,
15
,
240
,
194
,
185
,
23
,
249
,
99
,
87
,
47
,
241
,
255
,
7
,
241
,
167
,
232
,
241
,
71
,
159
,
224
,
93
,
6
,
91
,
41
,
176
,
45
,
144
,
192
,
226
,
93
,
178
,
45
,
64
,
25
,
193
,
213
,
27
,
55
,
118
,
151
,
154
,
255
,
153
,
34
,
254
,
214
,
169
,
253
,
253
,
237
,
131
,
195
,
67
,
30
,
120
,
224
,
1
,
174
,
95
,
191
,
206
,
238
,
238
,
46
,
25
,
201
,
193
,
225
,
45
,
186
,
139
,
238
,
166
,
109
,
220
,
13
,
4
,
85
,
197
,
92
,
150
,
195
,
174
,
126
,
118
,
140
,
241
,
27
,
219
,
219
,
219
,
223
,
202
,
204
,
75
,
145
,
121
,
41
,
35
,
46
,
14
,
233
,
42
,
104
,
177
,
228
,
163
,
213
,
142
,
199
,
92
,
243
,
221
,
87
,
94
,
226
,
207
,
18
,
241
,
207
,
208
,
39
,
31
,
255
,
56
,
118
,
19
,
26
,
204
,
94
,
99
,
54
,
36
,
113
,
155
,
13
,
152
,
207
,
253
,
216
,
147
,
254
,
39
,
95
,
255
,
189
,
59
,
142
,
79
,
78
,
254
,
58
,
240
,
243
,
57
,
198
,
231
,
20
,
186
,
43
,
51
,
119
,
186
,
91
,
171
,
28
,
108
,
111
,
111
,
179
,
94
,
214
,
172
,
151
,
5
,
139
,
118
,
247
,
81
,
47
,
117
,
177
,
219
,
207
,
103
,
196
,
211
,
171
,
213
,
234
,
133
,
28
,
249
,
86
,
68
,
92
,
141
,
136
,
203
,
17
,
113
,
57
,
34
,
174
,
167
,
98
,
145
,
18
,
187
,
121
,
233
,
252
,
203
,
252
,
89
,
36
,
254
,
140
,
250
,
220
,
103
,
63
,
199
,
119
,
95
,
251
,
238
,
30
,
240
,
216
,
241
,
241
,
241
,
39
,
247
,
246
,
246
,
158
,
152
,
203
,
124
,
48
,
35
,
246
,
70
,
142
,
81
,
93
,
89
,
221
,
199
,
118
,
95
,
150
,
116
,
33
,
35
,
223
,
204
,
204
,
43
,
17
,
113
,
32
,
116
,
168
,
208
,
77
,
73
,
183
,
34
,
226
,
48
,
164
,
117
,
219
,
30
,
17
,
188
,
116
,
254
,
21
,
254
,
44
,
19
,
255
,
28
,
240
,
23
,
223
,
64
,
127
,
237
,
65
,
62
,
251
,
233
,
207
,
228
,
181
,
27
,
215
,
87
,
115
,
206
,
40
,
125
,
211
,
16
,
0
,
0
,
0
,
35
,
73
,
68
,
65
,
84
,
149
,
164
,
204
,
8
,
133
,
132
,
13
,
22
,
190
,
173
,
132
,
22
,
133
,
166
,
164
,
186
,
251
,
158
,
143
,
248
,
248
,
248
,
136
,
103
,
158
,
125
,
134
,
127
,
94
,
252
,
223
,
160
,
16
,
125
,
12
,
251
,
15
,
241
,
139
,
0
,
0
,
0
,
0
,
73
,
69
,
78
,
68
,
174
,
66
,
96
,
130
])
let
testJpg
=
new
Uint8Array
([
255
,
216
,
255
,
224
,
0
,
16
,
74
,
70
,
73
,
70
,
0
,
1
,
1
,
1
,
0
,
96
,
0
,
96
,
0
,
0
,
255
,
219
,
0
,
67
,
0
,
2
,
1
,
1
,
2
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
3
,
5
,
3
,
3
,
3
,
3
,
3
,
6
,
4
,
4
,
3
,
5
,
7
,
6
,
7
,
7
,
7
,
6
,
7
,
7
,
8
,
9
,
11
,
9
,
8
,
8
,
10
,
8
,
7
,
7
,
10
,
13
,
10
,
10
,
11
,
12
,
12
,
12
,
12
,
7
,
9
,
14
,
15
,
13
,
12
,
14
,
11
,
12
,
12
,
12
,
255
,
219
,
0
,
67
,
1
,
2
,
2
,
2
,
3
,
3
,
3
,
6
,
3
,
3
,
6
,
12
,
8
,
7
,
8
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
255
,
192
,
0
,
17
,
8
,
0
,
226
,
1
,
216
,
3
,
1
,
34
,
0
,
2
,
17
,
1
,
3
,
17
,
1
,
255
,
196
,
0
,
31
,
0
,
0
,
1
,
5
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
255
,
196
,
0
,
181
,
16
,
0
,
2
,
1
,
3
,
3
,
2
,
4
,
3
,
5
,
5
,
4
,
4
,
0
,
0
,
1
,
125
,
1
,
2
,
3
,
0
,
4
,
17
,
5
,
18
,
33
,
49
,
65
,
6
,
19
,
81
,
97
,
7
,
34
,
113
,
20
,
50
,
129
,
145
,
161
,
8
,
35
,
66
,
177
,
193
,
21
,
82
,
209
,
240
,
36
,
51
,
98
,
114
,
130
,
9
,
10
,
22
,
23
,
24
,
25
,
26
,
37
,
38
,
39
,
40
,
41
,
42
,
52
,
53
,
54
,
55
,
56
,
57
,
58
,
67
,
68
,
69
,
70
,
71
,
72
,
73
,
74
,
83
,
84
,
85
,
86
,
87
,
88
,
89
,
90
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
115
,
116
,
117
,
118
,
119
,
120
,
121
,
122
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
138
,
146
,
147
,
148
,
149
,
150
,
151
,
152
,
153
,
154
,
162
,
163
,
164
,
165
,
166
,
167
,
168
,
169
,
170
,
178
,
179
,
180
,
181
,
182
,
183
,
184
,
185
,
186
,
194
,
195
,
196
,
197
,
198
,
199
,
200
,
201
,
202
,
210
,
211
,
212
,
213
,
214
,
215
,
216
,
217
,
218
,
225
,
226
,
227
,
228
,
229
,
230
,
231
,
232
,
233
,
234
,
241
,
242
,
243
,
244
,
245
,
246
,
247
,
248
,
249
,
250
,
255
,
196
,
0
,
31
,
1
,
0
,
3
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
255
,
196
,
0
,
181
,
17
,
0
,
2
,
1
,
2
,
4
,
4
,
3
,
4
,
7
,
5
,
4
,
4
,
0
,
1
,
2
,
119
,
0
,
1
,
2
,
3
,
17
,
4
,
5
,
33
,
49
,
6
,
18
,
65
,
81
,
7
,
97
,
113
,
19
,
34
,
50
,
129
,
8
,
20
,
66
,
145
,
161
,
177
,
193
,
9
,
35
,
51
,
82
,
240
,
21
,
98
,
114
,
209
,
10
,
22
,
36
,
52
,
225
,
37
,
241
,
23
,
24
,
25
,
26
,
38
,
39
,
40
,
41
,
42
,
53
,
54
,
55
,
56
,
57
,
58
,
67
,
68
,
69
,
70
,
71
,
72
,
73
,
74
,
83
,
84
,
85
,
86
,
87
,
88
,
89
,
90
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
115
,
116
,
117
,
118
,
119
,
120
,
121
,
122
,
130
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
138
,
146
,
147
,
148
,
149
,
150
,
151
,
152
,
153
,
154
,
162
,
163
,
164
,
165
,
166
,
167
,
168
,
169
,
170
,
178
,
179
,
180
,
181
,
182
,
183
,
184
,
185
,
186
,
194
,
195
,
196
,
197
,
198
,
199
,
200
,
201
,
202
,
210
,
211
,
212
,
213
,
214
,
215
,
216
,
217
,
218
,
226
,
227
,
228
,
229
,
230
,
231
,
232
,
233
,
234
,
242
,
243
,
244
,
245
,
246
,
247
,
248
,
249
,
250
,
255
,
218
,
0
,
12
,
3
,
1
,
0
,
2
,
17
,
3
,
17
,
0
,
63
,
0
,
253
,
16
,
162
,
138
,
43
,
252
,
99
,
63
,
170
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
2
,
138
,
40
,
160
,
15
,
255
,
217
])
export
{
testPng
,
testJpg
}
\ No newline at end of file
multimedia/image/image_js_standard/image/src/main/resources/base/element/string.json
浏览文件 @
36a866e6
{
"string"
:
[
{
"name"
:
"entry_MainAbility"
,
"value"
:
"ImageJSTestMain"
},
{
"name"
:
"mainability_description"
,
"value"
:
"ImageJSTestMain Ability"
}
]
{
"string"
:
[
{
"name"
:
"entry_MainAbility"
,
"value"
:
"ImageJSTestMain"
},
{
"name"
:
"mainability_description"
,
"value"
:
"ImageJSTestMain Ability"
},
{
"name"
:
"MainAbility_desc"
,
"value"
:
"description"
},
{
"name"
:
"MainAbility_label"
,
"value"
:
"label"
},
{
"name"
:
"TestAbility_desc"
,
"value"
:
"description"
},
{
"name"
:
"TestAbility_label"
,
"value"
:
"label"
}
]
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录