ng-cw-v12
Version:
Angular UI Component Library
595 lines • 154 kB
JavaScript
import { Component, Input } from '@angular/core';
import * as THREE from 'three';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
import { RoomEnvironment } from 'three/examples/jsm/environments/RoomEnvironment';
import { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader';
import { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js';
import { GUI } from 'three/examples/jsm/libs/lil-gui.module.min';
import * as i0 from "@angular/core";
import * as i1 from "./local.service";
import * as i2 from "@angular/common";
export class GltfViewerComponent {
constructor(eleRef, ls, ngZone) {
this.eleRef = eleRef;
this.ls = ls;
this.ngZone = ngZone;
/** 模型地址 */
this.ncUrl = '';
/** 摄像机初始方位 */
this.ncCameraPlacement = 'default';
/** 操作提示 */
this._tips = false;
/** 控制面板 */
this._control = false;
/** 背景是否透明 */
this._alpha = false;
this.showLoading = false;
this.domId = '#gltfViewer';
this.size = 0;
//动画
this.mixer = null;
this.clock = new THREE.Clock();
this.state = {
toneMapping: THREE.LinearToneMapping,
toneMappingExposure: 0,
background: false,
backgroundColor: '#191919',
axesHelper: false,
wireframe: false,
autoRotate: false,
animationIndex: -1,
ambientLight: true,
ambientLightColor: '#FFFFFF',
ambientLightIntensity: 2,
directionalLight: false,
directionalLightColor: '#FFFFFF',
directionalLightIntensity: 1,
directionalLightPosition: {
x: 0,
y: 0,
z: 0
},
directionalLightHelper: false,
pointLight: false,
pointLightColor: '#FFFFFF',
pointLightIntensity: 1,
pointLightDistance: 0,
pointLightDecay: 0.1,
pointLightPosition: {
x: 0,
y: 0,
z: 0
},
pointLightHelper: false
};
}
/** 是否启用背景色 */
set ncBg(value) {
this.state.background = value !== null && value !== undefined && value !== false && value !== 'false';
}
/** 背景色值 */
set ncBgColor(value) {
this.state.backgroundColor = value;
}
set ncTips(value) {
this._tips = value !== null && value !== undefined && value !== false && value !== 'false';
}
get ncTips() {
return this._tips;
}
set ncControl(value) {
this._control = value !== null && value !== undefined && value !== false && value !== 'false';
}
get ncControl() {
return this._control;
}
set ncAlpha(value) {
this._alpha = value !== null && value !== undefined && value !== false && value !== 'false';
}
get ncAlpha() {
return this._alpha;
}
ngOnChanges(changes) {
if (changes['ncUrl'] && !changes['ncUrl'].firstChange) {
this.updateModel();
}
if (changes['ncCameraPlacement'] && !changes['ncCameraPlacement'].firstChange) {
this.setCameraPlacement();
}
if (changes['ncBg'] && !changes['ncBg'].firstChange
|| changes['ncBgColor'] && !changes['ncBgColor'].firstChange) {
this.updateBackground();
}
}
ngAfterViewInit() {
this.onWindowResize = this.onWindowResize.bind(this);
this.animate = this.animate.bind(this);
if (this.ls.isBrowser) {
this.ngZone.runOutsideAngular(() => {
window.addEventListener('resize', this.onWindowResize);
});
}
setTimeout(() => {
this.ngZone.runOutsideAngular(() => {
this.init();
});
});
}
ngOnDestroy() {
if (this.ls.isBrowser) {
window.removeEventListener('resize', this.onWindowResize);
}
this.webglLoseContext();
}
init() {
let gltfArea = this.eleRef.nativeElement.querySelector(this.domId);
this.domWidth = gltfArea.offsetWidth;
this.domHeight = gltfArea.offsetHeight;
this.renderer = new THREE.WebGLRenderer({ antialias: true, alpha: this.ncAlpha });
this.renderer.setPixelRatio(gltfArea.devicePixelRatio);
this.renderer.setSize(this.domWidth, this.domHeight);
this.renderer.outputColorSpace = THREE.SRGBColorSpace;
gltfArea.appendChild(this.renderer.domElement);
this.scene = new THREE.Scene();
const environment = new RoomEnvironment();
const pmremGenerator = new THREE.PMREMGenerator(this.renderer);
this.scene.environment = pmremGenerator.fromScene(environment).texture;
const ktx2Loader = new KTX2Loader().setTranscoderPath('js/libs/basis/').detectSupport(this.renderer);
this.loader = new GLTFLoader(new THREE.LoadingManager());
this.loader.setKTX2Loader(ktx2Loader);
this.loader.setMeshoptDecoder(MeshoptDecoder);
this.updateModel();
}
render() {
this.renderer.render(this.scene, this.camera);
}
animate() {
requestAnimationFrame(this.animate);
// required if controls.enableDamping or controls.autoRotate are set to true
if (this.controls) {
this.controls.update();
}
if (this.scene && this.camera) {
this.renderer.render(this.scene, this.camera);
}
const delta = this.clock.getDelta();
// 更新动画混合器
if (this.mixer) {
this.mixer.update(delta);
}
}
onWindowResize() {
setTimeout(() => {
let gltfArea = this.eleRef.nativeElement.querySelector(this.domId);
const width = gltfArea.offsetWidth;
const height = gltfArea.offsetHeight;
this.renderer.setPixelRatio(gltfArea.devicePixelRatio);
this.renderer.setSize(width, height);
this.render();
});
}
//更新模型
updateModel() {
if (!this.ncUrl) {
return;
}
this.showLoading = true;
if (this.gltf) {
this.scene.remove(this.gltf.scene);
this.gltf = null;
}
this.loader.load(this.ncUrl, (gltf) => {
this.showLoading = false;
this.gltf = gltf;
const box = new THREE.Box3().setFromObject(this.gltf.scene);
this.size = box.getSize(new THREE.Vector3()).length();
this.center = box.getCenter(new THREE.Vector3());
//将坐标系原点设置在模型中心
this.gltf.scene.position.x -= this.center.x;
this.gltf.scene.position.y -= this.center.y;
this.gltf.scene.position.z -= this.center.z;
//PerspectiveCamera( fov : Number, aspect : Number, near : Number, far : Number )
// fov — 摄像机视锥体垂直视野角度,眼睛张开的角度,0闭眼
// aspect — 摄像机视锥体长宽比
// near — 摄像机视锥体近端面,能看到的最近垂直距离
// far — 摄像机视锥体远端面,能看到的最远垂直距离
this.camera = new THREE.PerspectiveCamera(50, this.domWidth / this.domHeight, this.size / 100, this.size * 100);
this.camera.updateProjectionMatrix();
//position-摄像机位置
//lookAt-摄像机望向位置
this.setCameraPlacement();
//controls
this.controls = new OrbitControls(this.camera, this.renderer.domElement);
//根据模型size初始化state部分参数
this.state.directionalLightPosition.x = 0;
this.state.directionalLightPosition.y = this.size / 2;
this.state.directionalLightPosition.z = 0;
this.state.pointLightPosition.x = this.size / 2;
this.state.pointLightPosition.y = 0;
this.state.pointLightPosition.z = 0;
this.state.pointLightDistance = this.size;
//有动画默认播放第一个动画
if (this.gltf.animations && this.gltf.animations.length) {
this.state.animationIndex = 0;
}
else {
this.state.animationIndex = -1;
}
//添加GUI控制面板
if (this.ncControl) {
this.addGUI();
}
else {
if (this.gui) {
this.gui.destroy();
this.gui = null;
}
}
//根据state参数初始化相关设置
this.updateToneMapping();
this.updateToneMappingExposure();
this.updateBackground();
this.toggleAxesHelper();
this.toggleWireframe();
this.toggleAutoRotate();
this.updateAnimation();
this.toggleAmbientLight();
// this.updateAmbientLight();
this.toggleDirectionalLight();
// this.updateDirectionalLight();
this.toggleDirectionalLightHelper();
this.togglePointLight();
// this.updatePointLight();
this.togglePointLightHelper();
this.scene.add(this.gltf.scene);
this.animate();
});
}
//设置相机角度和望向位置
setCameraPlacement() {
switch (this.ncCameraPlacement) {
case 'left': //x-红
this.camera.position.set(-this.size, 0, 0);
this.camera.lookAt(0, 0, 0);
break;
case 'right': //x-红
this.camera.position.set(this.size, 0, 0);
this.camera.lookAt(0, 0, 0);
break;
case 'top': //y-绿
this.camera.position.set(0, this.size, 0);
this.camera.lookAt(0, 0, 0);
break;
case 'bottom': //y-绿
this.camera.position.set(0, -this.size, 0);
this.camera.lookAt(0, 0, 0);
break;
case 'front': //z-蓝
this.camera.position.set(0, 0, this.size);
this.camera.lookAt(0, 0, 0);
break;
case 'back': //z-蓝
this.camera.position.set(0, 0, -this.size);
this.camera.lookAt(0, 0, 0);
break;
default:
this.camera.position.copy(this.center);
// this.camera.position.set(0, 0, 0);
this.camera.position.x += this.size / 2;
this.camera.position.y += this.size / 5;
this.camera.position.z += this.size / 2;
this.camera.lookAt(this.center);
break;
}
}
//add GUI
addGUI() {
//折叠参数
let closeState = {
gui: false,
displayFolder: false,
ambientLightFolder: true,
directionalLightFolder: true,
directionalLightHelperFolder: false,
pointLightFolder: true,
pointlLightHelperFolder: false
};
if (this.gui) {
//记录上个gui的面板折叠值
closeState = {
gui: this.gui._closed,
displayFolder: this.gui.children[0]._closed,
ambientLightFolder: this.gui.children[1]._closed,
directionalLightFolder: this.gui.children[2]._closed,
directionalLightHelperFolder: this.gui.children[2].children[3]._closed,
pointLightFolder: this.gui.children[3]._closed,
pointlLightHelperFolder: this.gui.children[3].children[5]._closed
};
this.gui.destroy();
this.gui = null;
}
this.gui = new GUI({ title: '控制面板', container: this.eleRef.nativeElement.querySelector('#control') });
if (closeState.gui) {
this.gui.close();
}
const displayFolder = this.gui.addFolder('显示设置');
if (closeState.displayFolder) {
displayFolder.close();
}
displayFolder.add(this.state, 'toneMapping', {
'ACESFilmic': THREE.ACESFilmicToneMapping,
'Linear': THREE.LinearToneMapping,
'Reinhard': THREE.ReinhardToneMapping,
'Cineon': THREE.CineonToneMapping,
'AgX': THREE.AgXToneMapping,
'Neutral': THREE.NeutralToneMapping
}).name('色调').onChange(() => this.updateToneMapping());
displayFolder.add(this.state, 'toneMappingExposure', -10, 5, 0.01).name('曝光').onChange(() => this.updateToneMappingExposure());
displayFolder.add(this.state, 'background').name('启用背景').listen().onChange(() => this.updateBackground());
displayFolder.addColor(this.state, 'backgroundColor').name('背景色').listen().onChange(() => this.updateBackground());
displayFolder.add(this.state, 'axesHelper').name('坐标系').onChange(() => this.toggleAxesHelper());
displayFolder.add(this.state, 'wireframe').name('线框模式').onChange(() => this.toggleWireframe());
displayFolder.add(this.state, 'autoRotate').name('自动旋转').onChange(() => this.toggleAutoRotate());
let animationList = { '无': -1 };
if (this.gltf.animations && this.gltf.animations.length) {
this.gltf.animations.map((animation, index) => {
animationList[animation.name ? animation.name : '动画' + (index + 1)] = index;
});
}
displayFolder.add(this.state, 'animationIndex', animationList).listen().name('动画').onChange(() => this.updateAnimation());
const ambientLightFolder = this.gui.addFolder('环境光');
if (closeState.ambientLightFolder) {
ambientLightFolder.close();
}
ambientLightFolder.add(this.state, 'ambientLight').name('启用').onChange(() => this.toggleAmbientLight());
ambientLightFolder.addColor(this.state, 'ambientLightColor').name('颜色').onChange(() => this.updateAmbientLight());
ambientLightFolder.add(this.state, 'ambientLightIntensity', 0, 10, 0.1).name('强度').onChange(() => this.updateAmbientLight());
const directionalLightFolder = this.gui.addFolder('定向光');
if (closeState.directionalLightFolder) {
directionalLightFolder.close();
}
directionalLightFolder.add(this.state, 'directionalLight').name('启用').onChange(() => this.toggleDirectionalLight());
directionalLightFolder.addColor(this.state, 'directionalLightColor').name('颜色').onChange(() => this.updateDirectionalLight());
directionalLightFolder.add(this.state, 'directionalLightIntensity', 0, 10, 0.1).name('强度').onChange(() => this.updateDirectionalLight());
const directionalLightHelperFolder = directionalLightFolder.addFolder('定向光位置');
if (closeState.directionalLightHelperFolder) {
directionalLightHelperFolder.close();
}
directionalLightHelperFolder.add(this.state, 'directionalLightHelper').listen().name('位置模拟').onChange(() => this.toggleDirectionalLightHelper());
directionalLightHelperFolder.add(this.state.directionalLightPosition, 'x', -this.size, this.size).name('x(坐标系-红)').decimals(2).onChange(() => this.updateDirectionalLight());
directionalLightHelperFolder.add(this.state.directionalLightPosition, 'y', -this.size, this.size).name('y(坐标系-绿)').decimals(2).onChange(() => this.updateDirectionalLight());
directionalLightHelperFolder.add(this.state.directionalLightPosition, 'z', -this.size, this.size).name('z(坐标系-蓝)').decimals(2).onChange(() => this.updateDirectionalLight());
const pointLightFolder = this.gui.addFolder('点光源');
if (closeState.pointLightFolder) {
pointLightFolder.close();
}
pointLightFolder.add(this.state, 'pointLight').name('启用').onChange(() => this.togglePointLight());
pointLightFolder.addColor(this.state, 'pointLightColor').name('颜色').onChange(() => this.updatePointLight());
pointLightFolder.add(this.state, 'pointLightIntensity', 0, 10, 0.1).name('强度').onChange(() => this.updatePointLight());
pointLightFolder.add(this.state, 'pointLightDistance', 0, this.size).name('范围').decimals(2).onChange(() => this.updatePointLight());
pointLightFolder.add(this.state, 'pointLightDecay', 0, 2, 0.1).name('衰减').onChange(() => this.updatePointLight());
const pointlLightHelperFolder = pointLightFolder.addFolder('点光源位置');
if (closeState.pointlLightHelperFolder) {
pointlLightHelperFolder.close();
}
pointlLightHelperFolder.add(this.state, 'pointLightHelper').listen().name('位置模拟').onChange(() => this.togglePointLightHelper());
pointlLightHelperFolder.add(this.state.pointLightPosition, 'x', -this.size, this.size).name('x(坐标系-红)').decimals(2).onChange(() => this.updatePointLight());
pointlLightHelperFolder.add(this.state.pointLightPosition, 'y', -this.size, this.size).name('y(坐标系-绿)').decimals(2).onChange(() => this.updatePointLight());
pointlLightHelperFolder.add(this.state.pointLightPosition, 'z', -this.size, this.size).name('z(坐标系-蓝)').decimals(2).onChange(() => this.updatePointLight());
}
//色调
updateToneMapping() {
this.renderer.toneMapping = this.state.toneMapping;
}
//曝光
updateToneMappingExposure() {
this.renderer.toneMappingExposure = Math.pow(2, this.state.toneMappingExposure);
}
//背景
updateBackground() {
if (this.state.background) {
this.scene.background = new THREE.Color(this.state.backgroundColor);
}
else {
this.scene.background = null;
}
}
toggleAxesHelper() {
//x-红,y-绿,z-蓝
if (this.state.axesHelper) {
if (this.axesHelper) {
this.scene.remove(this.axesHelper);
this.axesHelper = null;
}
this.axesHelper = new THREE.AxesHelper(this.size);
this.scene.add(this.axesHelper);
}
else {
if (this.axesHelper) {
this.scene.remove(this.axesHelper);
this.axesHelper = null;
}
}
}
//线框模式
toggleWireframe() {
this.traverseMaterials(this.gltf.scene, (material) => {
material.wireframe = this.state.wireframe;
if (material instanceof THREE.PointsMaterial) {
material.size = 1;
}
});
}
//遍历材质
traverseMaterials(object, callback) {
object.traverse((node) => {
if (!node.geometry)
return;
const materials = Array.isArray(node.material) ? node.material : [node.material];
materials.forEach(callback);
});
}
//自动旋转
toggleAutoRotate() {
this.controls.autoRotate = this.state.autoRotate;
}
//开关动画
updateAnimation() {
//先停止所有动画,否者关闭动画后会存在动作残留
if (this.mixer) {
this.mixer.stopAllAction();
this.mixer = null;
}
if (this.gltf.animations && this.gltf.animations.length && this.state.animationIndex != -1) {
this.mixer = new THREE.AnimationMixer(this.gltf.scene);
let animation = this.gltf.animations[this.state.animationIndex];
if (this.mixer) {
this.mixer.clipAction(animation).play();
}
}
}
toggleAmbientLight() {
if (this.state.ambientLight) {
if (this.ambientLight) {
this.scene.remove(this.ambientLight);
this.ambientLight = null;
}
this.ambientLight = new THREE.AmbientLight(this.state.ambientLightColor, this.state.ambientLightIntensity);
this.scene.add(this.ambientLight);
}
else {
if (this.ambientLight) {
this.scene.remove(this.ambientLight);
this.ambientLight = null;
}
}
}
//更新环境光
updateAmbientLight() {
if (this.state.ambientLight) {
this.ambientLight.color.set(this.state.ambientLightColor);
this.ambientLight.intensity = this.state.ambientLightIntensity;
}
}
toggleDirectionalLight() {
if (this.state.directionalLight) {
if (this.directionalLight) {
this.scene.remove(this.directionalLight);
this.directionalLight = null;
}
this.directionalLight = new THREE.DirectionalLight(this.state.directionalLightColor, this.state.directionalLightIntensity);
this.directionalLight.position.set(this.state.directionalLightPosition.x, this.state.directionalLightPosition.y, this.state.directionalLightPosition.z);
this.scene.add(this.directionalLight);
}
else {
if (this.directionalLight) {
this.scene.remove(this.directionalLight);
this.directionalLight = null;
}
//关闭位置模拟
this.state.directionalLightHelper = false;
this.toggleDirectionalLightHelper();
}
}
//更新定向光
updateDirectionalLight() {
if (this.state.directionalLight) {
this.directionalLight.color.set(this.state.directionalLightColor);
this.directionalLight.intensity = this.state.directionalLightIntensity;
this.directionalLight.position.set(this.state.directionalLightPosition.x, this.state.directionalLightPosition.y, this.state.directionalLightPosition.z);
if (this.directionalLightHelper) {
this.directionalLightHelper.update();
}
}
}
toggleDirectionalLightHelper() {
if (this.state.directionalLightHelper) {
if (this.directionalLight) { //开启定向光才能开启位置模拟
if (this.directionalLightHelper) {
this.scene.remove(this.directionalLightHelper);
this.directionalLightHelper = null;
}
this.directionalLightHelper = new THREE.DirectionalLightHelper(this.directionalLight, this.size / 20, 0xff0000);
this.scene.add(this.directionalLightHelper);
}
else {
this.state.directionalLightHelper = false;
}
}
else {
if (this.directionalLightHelper) {
this.scene.remove(this.directionalLightHelper);
this.directionalLightHelper = null;
}
}
}
togglePointLight() {
if (this.state.pointLight) {
if (this.pointLight) {
this.scene.remove(this.pointLight);
this.pointLight = null;
}
//PointLight( color : Integer, intensity : Float, distance : Number, decay : Float )
this.pointLight = new THREE.PointLight(this.state.pointLightColor, this.state.pointLightIntensity, this.state.pointLightDistance, this.state.pointLightDecay);
this.pointLight.position.set(this.state.pointLightPosition.x, this.state.pointLightPosition.y, this.state.pointLightPosition.z);
this.scene.add(this.pointLight);
}
else {
if (this.pointLight) {
this.scene.remove(this.pointLight);
this.pointLight = null;
}
//关闭位置模拟
this.state.pointLightHelper = false;
this.togglePointLightHelper();
}
}
//更新点光源
updatePointLight() {
if (this.state.pointLight) {
this.pointLight.color.set(this.state.pointLightColor);
this.pointLight.intensity = this.state.pointLightIntensity;
this.pointLight.decay = this.state.pointLightDecay;
this.pointLight.distance = this.state.pointLightDistance;
this.pointLight.position.set(this.state.pointLightPosition.x, this.state.pointLightPosition.y, this.state.pointLightPosition.z);
if (this.pointLightHelper) {
this.pointLightHelper.update();
}
}
}
togglePointLightHelper() {
if (this.state.pointLightHelper) {
if (this.pointLight) { //开启点光源才能开启位置模拟
if (this.pointLightHelper) {
this.scene.remove(this.pointLightHelper);
this.pointLightHelper = null;
}
this.pointLightHelper = new THREE.PointLightHelper(this.pointLight, this.size / 20, 0x2bff00);
this.scene.add(this.pointLightHelper);
}
else {
this.state.pointLightHelper = false;
}
}
else {
if (this.pointLightHelper) {
this.scene.remove(this.pointLightHelper);
this.pointLightHelper = null;
}
}
}
//webgl销毁
webglLoseContext() {
let gltfCanvasDom = this.eleRef.nativeElement.querySelector(`${this.domId} canvas`);
if (gltfCanvasDom) {
//手动销毁WebGL context对象(最多16个,超出的话最先加载的会被移除)
let gl = gltfCanvasDom.getContext('webgl2');
gl.getExtension('WEBGL_lose_context').loseContext();
//dom移除
gltfCanvasDom.remove();
}
}
}
GltfViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: GltfViewerComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
GltfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: GltfViewerComponent, selector: "nc-gltf-viewer", inputs: { ncUrl: "ncUrl", ncCameraPlacement: "ncCameraPlacement", ncBg: "ncBg", ncBgColor: "ncBgColor", ncTips: "ncTips", ncControl: "ncControl", ncAlpha: "ncAlpha" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"gltfViewer\">\r\n <div class=\"loading\" *ngIf=\"showLoading\">\r\n <div class=\"nc-loading\">\r\n <div class=\"spin29_default\"></div>\r\n <div style=\"color: 'rgb(255,165,91)';font-weight: 400;\" class=\"ncTips_default\">\u6A21\u578B\u52A0\u8F7D\u4E2D...</div>\r\n </div>\r\n </div>\r\n <div id=\"tips\" *ngIf=\"ncTips\">\r\n <div class=\"tip-row\">\r\n <div class=\"row-img\">\r\n <img\r\n src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSI2NHB4IgogICBoZWlnaHQ9IjY0cHgiCiAgIHZpZXdCb3g9IjAgMCA2NCA2NCIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjQgNjQiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuNDguNCByOTkzOSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iTW91c2VMZWZ0LnN2ZyI+PG1ldGFkYXRhCiAgIGlkPSJtZXRhZGF0YTIxIj48cmRmOlJERj48Y2M6V29yawogICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlIC8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgIGlkPSJkZWZzMTkiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICBib3JkZXJvcGFjaXR5PSIxIgogICBvYmplY3R0b2xlcmFuY2U9IjEwIgogICBncmlkdG9sZXJhbmNlPSIxMCIKICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMCIKICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxMjgyIgogICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI4ODYiCiAgIGlkPSJuYW1lZHZpZXcxNyIKICAgc2hvd2dyaWQ9ImZhbHNlIgogICBpbmtzY2FwZTp6b29tPSIzLjY4NzUiCiAgIGlua3NjYXBlOmN4PSItMTAuMzA1MDg1IgogICBpbmtzY2FwZTpjeT0iMzIiCiAgIGlua3NjYXBlOndpbmRvdy14PSIxMDQiCiAgIGlua3NjYXBlOndpbmRvdy15PSIxMzYiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImczIiAvPgo8ZwogICBpZD0iZzMiPgoJPGcKICAgaWQ9Imc1IgogICBzdHlsZT0iZmlsbDojNGQ0ZDRkO3N0cm9rZTojNGQ0ZDRkIj4KCQk8cGF0aAogICBmaWxsPSIjMDIwMjAyIgogICBkPSJNMzIuODU0LDIwLjAyOGMtMC4wMTUtMS4yNzQsMC41NzYtMi4yNjksMS4xNTEtMy4yMzZjMC43NTgtMS4yNzgsMS41NDMtMi42LDAuOTk3LTQuNDE3ICAgIGMtMC41NTUtMS42NjctMS42MDctMi40ODUtMi41MzktMy4yMTJjLTEuMjU0LTAuOTczLTIuMTU5LTEuNjc2LTEuNjg3LTQuMzQzbDAuMDQxLTAuMjI5bC0xLjM1LTAuMjM4TDI5LjQyNyw0LjU4ICAgIGMtMC42MTUsMy40ODQsMC44NzgsNC42NDMsMi4xOTUsNS42NjZjMC44NSwwLjY2MywxLjY1MywxLjI4OCwyLjA3MiwyLjU0MmMwLjM2NiwxLjIyNC0wLjE4LDIuMTQzLTAuODY5LDMuMzA2ICAgIGMtMC42NDEsMS4wODEtMS4zNjYsMi4zLTEuMzQ5LDMuOTMzYy02LjgzNywwLjAwNy0xMy44MjMsMC4yOTEtMTMuODIzLDI0LjU5YzAsMTAuOTUxLDguNzk5LDE1LjAzMiwxNC4zNDcsMTUuMDMyICAgIGM1LjU0NSwwLDE0LjM0Ny00LjA4MSwxNC4zNDctMTUuMDMyQzQ2LjM0NywyMC4zNDcsMzkuMjI4LDIwLjA0OCwzMi44NTQsMjAuMDI4eiBNMzIuNjg1LDIxLjM5OSAgICBjNS42NDMsMC4wMTIsMTAuOTI3LDAuMjM2LDEyLjA2MywxNi4xNTNjLTMuODYsMS44MDUtNy45MTYsMi43NjUtMTIuMDYzLDIuODZ2LTIuOTY2YzAuODQ1LTAuMTYyLDEuNDgxLTAuOTA5LDEuNDgxLTEuNzgydi04Ljk1NiAgICBjMC0wLjg3Ni0wLjYzNy0xLjYyMS0xLjQ4MS0xLjc4NFYyMS4zOTl6IE0zMS42NTgsMjYuMjU0aDAuNjg1YzAuMjQ5LDAsMC40NTMsMC4yMDUsMC40NTMsMC40NTR2OC45NTYgICAgYzAsMC4yNDktMC4yMDQsMC40NDktMC40NTMsMC40NDloLTAuNjg1Yy0wLjI0OSwwLTAuNDUyLTAuMi0wLjQ1Mi0wLjQ0OXYtOC45NTZDMzEuMjA2LDI2LjQ1OSwzMS40MDksMjYuMjU0LDMxLjY1OCwyNi4yNTR6ICAgICBNMzEuMzEzLDIxLjM5OXYzLjUyNWMtMC44NDUsMC4xNjMtMS40NzksMC45MS0xLjQ3OSwxLjc4NHY4Ljk1NmMwLDAuODczLDAuNjM0LDEuNjIsMS40NzksMS43ODJ2Mi45NjYgICAgYy02LjMxMS0wLjE0OC0xMC45MDUtMi4yNTItMTIuMDYzLTIuODM5QzIwLjM4MSwyMS42MzMsMjUuNjY4LDIxLjQxMSwzMS4zMTMsMjEuMzk5eiBNMzIsNTguMjc0ICAgIGMtNS4wMTYsMC0xMi45NzYtMy43MDctMTIuOTc2LTEzLjY1OGMwLTEuOTgzLDAuMDQ1LTMuODUzLDAuMTM0LTUuNTYzYzIuMDAzLDAuOTI5LDYuNjk2LDIuNzQsMTIuODY4LDIuNzQgICAgYzQuMzk0LDAsOC43MDQtMC45MzQsMTIuODEzLTIuNzcxYzAuMDg5LDEuNzE4LDAuMTM1LDMuNiwwLjEzNSw1LjU5NUM0NC45NzQsNTQuNTY3LDM3LjAxNiw1OC4yNzQsMzIsNTguMjc0eiIKICAgaWQ9InBhdGg3IgogICBzdHlsZT0iZmlsbDojNGQ0ZDRkO3N0cm9rZTojNGQ0ZDRkIiAvPgoJPC9nPgoJCgkKPHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yNzExODY0NCIKICAgZD0ibSAzMi45MjIwMzQsMzguOTUwNzkzIGMgMCwtMS4xMzU4MjUgMC4xMTQ5MTksLTEuNDU4MDQ1IDAuNjc3OTY2LC0xLjkwMDkzOCBsIDAuNjc3OTY2LC0wLjUzMzI4OCAwLC01LjI4MDc4IGMgMCwtNS4yNzEyNDkgLTAuMDAxMiwtNS4yODIwMDMgLTAuNjc3OTY2LC01Ljk1ODc0NSAtMC41NTc0MzksLTAuNTU3NDM5IC0wLjY3Nzk2NiwtMC45NDA5MzUgLTAuNjc3OTY2LC0yLjE1NzE2NSBsIDAsLTEuNDc5MTk5IDEuNTM1NDg3LDAgYyA1LjY1NzU1NCwwIDguNTg0MzM4LDMuNzI4NTI5IDkuNzE4NTUsMTIuMzgwNzkxIDAuNDk4NDM0LDMuODAyMjY1IDAuNTAzNDgsMy41MjU3MzEgLTAuMDY3NiwzLjcwNDU3MiAtMC4yNjEwMTcsMC4wODE3NCAtMS41Mjg2OTQsMC41MTIwMTYgLTIuODE3MDU5LDAuOTU2MTY3IC0yLjAzNzIwNiwwLjcwMjMwNiAtNC4wNDgwMzIsMS4xMTMwNDQgLTcuNDg4MDI2LDEuNTI5NTI4IGwgLTAuODgxMzU2LDAuMTA2NzA3IDAsLTEuMzY3NjUgeiIKICAgaWQ9InBhdGgzNzY4IgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjcxMTg2NDQiCiAgIGQ9Im0gMzEuNDg1MDgxLDM1Ljg0MjE0MyBjIC0wLjEwNDU5MSwtMC4xMDQ1OTEgLTAuMTkwMTY2LC0yLjIzMTM0NyAtMC4xOTAxNjYsLTQuNzI2MTIzIDAsLTMuOTgzOTk0IDAuMDU1MDIsLTQuNTU3MDcxIDAuNDUyMTI3LC00LjcwOTQ1NiAwLjI0ODY3LC0wLjA5NTQyIDAuNTU2ODAyLC0wLjA2ODgyIDAuNjg0NzM4LDAuMDU5MTIgMC4xMjc5MzcsMC4xMjc5MzYgMC4xOTkwNTYsMi4yOTY0ODEgMC4xNTgwNDMsNC44MTg5ODggLTAuMDYzMTksMy44ODY0MDUgLTAuMTM4NjcsNC41OTg2ODMgLTAuNDk0NTcyLDQuNjY3MDA5IC0wLjIzMTAwMywwLjA0NDM1IC0wLjUwNTU3OSwtMC4wMDQ5IC0wLjYxMDE3LC0wLjEwOTUzMyBsIDAsMCB6IgogICBpZD0icGF0aDM3NzAiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yNzExODY0NCIKICAgZD0ibSAzMC40NDA0MzMsNTcuOTQ1MzE2IGMgLTMuMDY0MDUzLC0wLjQyMTEzIC02Ljc3NzIzLC0yLjQ3NDk1MyAtOC40NTc2MjEsLTQuNjc4MDYgLTIuMTU4OCwtMi44MzAzMzMgLTMuMTEzOTE4LC02LjczNzcxNiAtMi43Njk1OTIsLTExLjMzMDM4NSBsIDAuMTkzMTIxLC0yLjU3NTg3MiAyLjA3OTg4LDAuNzM1NjI4IGMgMy41MjcwMjYsMS4yNDc0NjYgNi4zMzc3MDEsMS43MTkwNjggMTAuMjE1NDc0LDEuNzE0MDUgNC4xNzE3NzEsLTAuMDA1NCA2LjY0Mjk4MSwtMC4zODg2OCAxMC4yNTgzNiwtMS41OTEwNTggMi4xNzg5NzMsLTAuNzI0NjY4IDIuNjkyMTkzLC0wLjgxNTg1NiAyLjgxMzQ0NCwtMC40OTk4ODMgMC4wODE1NywwLjIxMjU2IDAuMDg2NjQsMi4xMTk4NjQgMC4wMTEyNyw0LjIzODQ1MyAtMC4xMDYyMTcsMi45ODU4MSAtMC4yNjY1MzEsNC4yMTI5MzggLTAuNzEyOTM1LDUuNDU3MjA4IC0xLjQ1MDIxNyw0LjA0MjIwNiAtNC40MDExMTgsNi44NDQxNTYgLTguNDM3OTM4LDguMDEyMDE3IC0yLjMxNDc0NywwLjY2OTY2MSAtMy4zNDMxNCwwLjc3MjIxNSAtNS4xOTM0NjUsMC41MTc5MDIgeiIKICAgaWQ9InBhdGgzNzcyIgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjwvZz4KPHBhdGgKICAgc3R5bGU9ImZpbGw6IzY2Q0NGRjtzdHJva2U6IzY2Q0NGRjtzdHJva2Utd2lkdGg6MC4yNzExODY0Mzk5OTk5OTk5NyIKICAgZD0ibSAyOC43NDA1NTYsNDAuMDYzNjgyIGMgLTIuNDU3Nzk1LC0wLjI4NDk5NSAtNS4yOTE1MjIsLTAuOTc2ODgxIC03LjQ3OTUzOSwtMS44MjYyMTIgLTAuOTY5NDkyLC0wLjM3NjMzMiAtMS43OTI5MzksLTAuNzA0OTYxIC0xLjgyOTg4NCwtMC43MzAyODcgLTAuMTUyNTY0LC0wLjEwNDU4NCAwLjc2NjAxNiwtNi4yNDI1NDEgMS4xNjgwMSwtNy44MDQ2NTYgMS40MjExOTEsLTUuNTIyNjMxIDQuMzA0NDc3LC04LjA2MTg0OSA5LjE1NDI0MSwtOC4wNjE4NDkgbCAxLjU0MTUzMSwwIDAsMS42MjcxMTkgYyAwLDEuMjM3MTI1IC0wLjA5MzgxLDEuNjI3MTE4IC0wLjM5MTQwMiwxLjYyNzExOCAtMC4yMTUyNzEsMCAtMC41ODEzNzMsMC4yNzEyMjEgLTAuODEzNTU5LDAuNjAyNzE0IC0wLjM0NTg4OSwwLjQ5MzgyNiAtMC40MjIxNTcsMS41Mjc1MjQgLTAuNDIyMTU3LDUuNzIxNzA2IGwgMCw1LjExODk5MiAwLjgxMzU1OSwwLjc1OTk3OCBjIDAuNjc1ODQ2LDAuNjMxMzM1IDAuODEzNTU5LDAuOTcxMDgzIDAuODEzNTU5LDIuMDA3MTA4IDAsMC44MzU5MjEgLTAuMTExNzcxLDEuMjM1Mzc4IC0wLjMzODk4MywxLjIxMTQ4OSAtMC4xODY0NCwtMC4wMTk2IC0xLjE4MzM2LC0wLjEzMzU1MSAtMi4yMTUzNzYsLTAuMjUzMjIgbCAwLDAgeiIKICAgaWQ9InBhdGgzNzY2IgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjwvc3ZnPg==\">\r\n </div>\r\n <div class=\"row-word\">\u65CB\u8F6C</div>\r\n </div>\r\n <div class=\"tip-row\">\r\n <div class=\"row-img\">\r\n <img\r\n src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSI2NHB4IgogICBoZWlnaHQ9IjY0cHgiCiAgIHZpZXdCb3g9IjAgMCA2NCA2NCIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjQgNjQiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuNDguNCByOTkzOSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iTW91c2VSaWdodC5zdmciPjxtZXRhZGF0YQogICBpZD0ibWV0YWRhdGEyMSI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPjxkYzp0aXRsZSAvPjwvY2M6V29yaz48L3JkZjpSREY+PC9tZXRhZGF0YT48ZGVmcwogICBpZD0iZGVmczE5IiAvPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgYm9yZGVyb3BhY2l0eT0iMSIKICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgIGd1aWRldG9sZXJhbmNlPSIxMCIKICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTI4MiIKICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iODg2IgogICBpZD0ibmFtZWR2aWV3MTciCiAgIHNob3dncmlkPSJmYWxzZSIKICAgaW5rc2NhcGU6em9vbT0iMy42ODc1IgogICBpbmtzY2FwZTpjeD0iMzIiCiAgIGlua3NjYXBlOmN5PSIzMiIKICAgaW5rc2NhcGU6d2luZG93LXg9IjMxIgogICBpbmtzY2FwZTp3aW5kb3cteT0iMTUiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImczIiAvPgo8ZwogICBpZD0iZzMiPgoJPGcKICAgaWQ9Imc1IgogICBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7ZmlsbDojNGQ0ZDRkIj4KCQk8cGF0aAogICBmaWxsPSIjMDIwMjAyIgogICBkPSJNMzIuODU0LDIwLjAyOGMtMC4wMTUtMS4yNzQsMC41NzYtMi4yNjksMS4xNTEtMy4yMzZjMC43NTgtMS4yNzgsMS41NDMtMi42LDAuOTk3LTQuNDE3ICAgIGMtMC41NTUtMS42NjctMS42MDctMi40ODUtMi41MzktMy4yMTJjLTEuMjU0LTAuOTczLTIuMTU5LTEuNjc2LTEuNjg3LTQuMzQzbDAuMDQxLTAuMjI5bC0xLjM1LTAuMjM4TDI5LjQyNyw0LjU4ICAgIGMtMC42MTUsMy40ODQsMC44NzgsNC42NDMsMi4xOTUsNS42NjZjMC44NSwwLjY2MywxLjY1MywxLjI4OCwyLjA3MiwyLjU0MmMwLjM2NiwxLjIyNC0wLjE4LDIuMTQzLTAuODY5LDMuMzA2ICAgIGMtMC42NDEsMS4wODEtMS4zNjYsMi4zLTEuMzQ5LDMuOTMzYy02LjgzNywwLjAwNy0xMy44MjMsMC4yOTEtMTMuODIzLDI0LjU5YzAsMTAuOTUxLDguNzk5LDE1LjAzMiwxNC4zNDcsMTUuMDMyICAgIGM1LjU0NSwwLDE0LjM0Ny00LjA4MSwxNC4zNDctMTUuMDMyQzQ2LjM0NywyMC4zNDcsMzkuMjI4LDIwLjA0OCwzMi44NTQsMjAuMDI4eiBNMzIuNjg1LDIxLjM5OSAgICBjNS42NDMsMC4wMTIsMTAuOTI3LDAuMjM2LDEyLjA2MywxNi4xNTNjLTMuODYsMS44MDUtNy45MTYsMi43NjUtMTIuMDYzLDIuODZ2LTIuOTY2YzAuODQ1LTAuMTYyLDEuNDgxLTAuOTA5LDEuNDgxLTEuNzgydi04Ljk1NiAgICBjMC0wLjg3Ni0wLjYzNy0xLjYyMS0xLjQ4MS0xLjc4NFYyMS4zOTl6IE0zMS42NTgsMjYuMjU0aDAuNjg1YzAuMjQ5LDAsMC40NTMsMC4yMDUsMC40NTMsMC40NTR2OC45NTYgICAgYzAsMC4yNDktMC4yMDQsMC40NDktMC40NTMsMC40NDloLTAuNjg1Yy0wLjI0OSwwLTAuNDUyLTAuMi0wLjQ1Mi0wLjQ0OXYtOC45NTZDMzEuMjA2LDI2LjQ1OSwzMS40MDksMjYuMjU0LDMxLjY1OCwyNi4yNTR6ICAgICBNMzEuMzEzLDIxLjM5OXYzLjUyNWMtMC44NDUsMC4xNjMtMS40NzksMC45MS0xLjQ3OSwxLjc4NHY4Ljk1NmMwLDAuODczLDAuNjM0LDEuNjIsMS40NzksMS43ODJ2Mi45NjYgICAgYy02LjMxMS0wLjE0OC0xMC45MDUtMi4yNTItMTIuMDYzLTIuODM5QzIwLjM4MSwyMS42MzMsMjUuNjY4LDIxLjQxMSwzMS4zMTMsMjEuMzk5eiBNMzIsNTguMjc0ICAgIGMtNS4wMTYsMC0xMi45NzYtMy43MDctMTIuOTc2LTEzLjY1OGMwLTEuOTgzLDAuMDQ1LTMuODUzLDAuMTM0LTUuNTYzYzIuMDAzLDAuOTI5LDYuNjk2LDIuNzQsMTIuODY4LDIuNzQgICAgYzQuMzk0LDAsOC43MDQtMC45MzQsMTIuODEzLTIuNzcxYzAuMDg5LDEuNzE4LDAuMTM1LDMuNiwwLjEzNSw1LjU5NUM0NC45NzQsNTQuNTY3LDM3LjAxNiw1OC4yNzQsMzIsNTguMjc0eiIKICAgaWQ9InBhdGg3IgogICBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7ZmlsbDojNGQ0ZDRkIiAvPgoJPC9nPgoJCgkKPHBhdGgKICAgc3R5bGU9ImZpbGw6IzY1RkQwMDtzdHJva2U6IzY1RkQwMDtzdHJva2Utd2lkdGg6MC4yNzExODY0Mzk5OTk5OTk5NyIKICAgZD0ibSAzMi45MjIwMzQsMzguOTUwNzkzIGMgMCwtMS4xMzU4MjUgMC4xMTQ5MTksLTEuNDU4MDQ1IDAuNjc3OTY2LC0xLjkwMDkzOCBsIDAuNjc3OTY2LC0wLjUzMzI4OCAwLC01LjI4MDc4IGMgMCwtNS4yNzEyNDkgLTAuMDAxMiwtNS4yODIwMDMgLTAuNjc3OTY2LC01Ljk1ODc0NSAtMC41NTc0MzksLTAuNTU3NDM5IC0wLjY3Nzk2NiwtMC45NDA5MzUgLTAuNjc3OTY2LC0yLjE1NzE2NSBsIDAsLTEuNDc5MTk5IDEuNTM1NDg3LDAgYyA1LjY1NzU1NCwwIDguNTg0MzM4LDMuNzI4NTI5IDkuNzE4NTUsMTIuMzgwNzkxIDAuNDk4NDM0LDMuODAyMjY1IDAuNTAzNDgsMy41MjU3MzEgLTAuMDY3NiwzLjcwNDU3MiAtMC4yNjEwMTcsMC4wODE3NCAtMS41Mjg2OTQsMC41MTIwMTYgLTIuODE3MDU5LDAuOTU2MTY3IC0yLjAzNzIwNiwwLjcwMjMwNiAtNC4wNDgwMzIsMS4xMTMwNDQgLTcuNDg4MDI2LDEuNTI5NTI4IGwgLTAuODgxMzU2LDAuMTA2NzA3IDAsLTEuMzY3NjUgeiIKICAgaWQ9InBhdGgzNzY4IgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjcxMTg2NDQiCiAgIGQ9Im0gMzEuNDg1MDgxLDM1Ljg0MjE0MyBjIC0wLjEwNDU5MSwtMC4xMDQ1OTEgLTAuMTkwMTY2LC0yLjIzMTM0NyAtMC4xOTAxNjYsLTQuNzI2MTIzIDAsLTMuOTgzOTk0IDAuMDU1MDIsLTQuNTU3MDcxIDAuNDUyMTI3LC00LjcwOTQ1NiAwLjI0ODY3LC0wLjA5NTQyIDAuNTU2ODAyLC0wLjA2ODgyIDAuNjg0NzM4LDAuMDU5MTIgMC4xMjc5MzcsMC4xMjc5MzYgMC4xOTkwNTYsMi4yOTY0ODEgMC4xNTgwNDMsNC44MTg5ODggLTAuMDYzMTksMy44ODY0MDUgLTAuMTM4NjcsNC41OTg2ODMgLTAuNDk0NTcyLDQuNjY3MDA5IC0wLjIzMTAwMywwLjA0NDM1IC0wLjUwNTU3OSwtMC4wMDQ5IC0wLjYxMDE3LC0wLjEwOTUzMyBsIDAsMCB6IgogICBpZD0icGF0aDM3NzAiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yNzExODY0NCIKICAgZD0ibSAzMC40NDA0MzMsNTcuOTQ1MzE2IGMgLTMuMDY0MDUzLC0wLjQyMTEzIC02Ljc3NzIzLC0yLjQ3NDk1MyAtOC40NTc2MjEsLTQuNjc4MDYgLTIuMTU4OCwtMi44MzAzMzMgLTMuMTEzOTE4LC02LjczNzcxNiAtMi43Njk1OTIsLTExLjMzMDM4NSBsIDAuMTkzMTIxLC0yLjU3NTg3MiAyLjA3OTg4LDAuNzM1NjI4IGMgMy41MjcwMjYsMS4yNDc0NjYgNi4zMzc3MDEsMS43MTkwNjggMTAuMjE1NDc0LDEuNzE0MDUgNC4xNzE3NzEsLTAuMDA1NCA2LjY0Mjk4MSwtMC4zODg2OCAxMC4yNTgzNiwtMS41OTEwNTggMi4xNzg5NzMsLTAuNzI0NjY4IDIuNjkyMTkzLC0wLjgxNTg1NiAyLjgxMzQ0NCwtMC40OTk4ODMgMC4wODE1NywwLjIxMjU2IDAuMDg2NjQsMi4xMTk4NjQgMC4wMTEyNyw0LjIzODQ1MyAtMC4xMDYyMTcsMi45ODU4MSAtMC4yNjY1MzEsNC4yMTI5MzggLTAuNzEyOTM1LDUuNDU3MjA4IC0xLjQ1MDIxNyw0LjA0MjIwNiAtNC40MDExMTgsNi44NDQxNTYgLTguNDM3OTM4LDguMDEyMDE3IC0yLjMxNDc0NywwLjY2OTY2MSAtMy4zNDMxNCwwLjc3MjIxNSAtNS4xOTM0NjUsMC41MTc5MDIgeiIKICAgaWQ9InBhdGgzNzcyIgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjcxMTg2NDQiCiAgIGQ9Im0gMjguNzQwNTU2LDQwLjA2MzY4MiBjIC0yLjQ1Nzc5NSwtMC4yODQ5OTUgLTUuMjkxNTIyLC0wLjk3Njg4MSAtNy40Nzk1MzksLTEuODI2MjEyIC0wLjk2OTQ5MiwtMC4zNzYzMzIgLTEuNzkyOTM5LC0wLjcwNDk2MSAtMS44Mjk4ODQsLTAuNzMwMjg3IC0wLjE1MjU2NCwtMC4xMDQ1ODQgMC43NjYwMTYsLTYuMjQyNTQxIDEuMTY4MDEsLTcuODA0NjU2IDEuNDIxMTkxLC01LjUyMjYzMSA0LjMwNDQ3NywtOC4wNjE4NDkgOS4xNTQyNDEsLTguMDYxODQ5IGwgMS41NDE1MzEsMCAwLDEuNjI3MTE5IGMgMCwxLjIzNzEyNSAtMC4wOTM4MSwxLjYyNzExOCAtMC4zOTE0MDIsMS42MjcxMTggLTAuMjE1MjcxLDAgLTAuNTgxMzczLDAuMjcxMjIxIC0wLjgxMzU1OSwwLjYwMjcxNCAtMC4zNDU4ODksMC40OTM4MjYgLTAuNDIyMTU3LDEuNTI3NTI0IC0wLjQyMjE1Nyw1LjcyMTcwNiBsIDAsNS4xMTg5OTIgMC44MTM1NTksMC43NTk5NzggYyAwLjY3NTg0NiwwLjYzMTMzNSAwLjgxMzU1OSwwLjk3MTA4MyAwLjgxMzU1OSwyLjAwNzEwOCAwLDAuODM1OTIxIC0wLjExMTc3MSwxLjIzNTM3OCAtMC4zMzg5ODMsMS4yMTE0ODkgLTAuMTg2NDQsLTAuMDE5NiAtMS4xODMzNiwtMC4xMzM1NTEgLTIuMjE1Mzc2LC0wLjI1MzIyIGwgMCwwIHoiCiAgIGlkPSJwYXRoMzc3OCIKICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz48L2c+Cjwvc3ZnPg==\">\r\n </div>\r\n <div class=\"row-word\">\u5E73\u79FB</div>\r\n </div>\r\n <div class=\"tip-row\">\r\n <div class=\"row-img\">\r\n <img\r\n src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSI2NHB4IgogICBoZWlnaHQ9IjY0cHgiCiAgIHZpZXdCb3g9IjAgMCA2NCA2NCIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjQgNjQiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuNDguNCByOTkzOSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iTW91c2VNaWRkbGUuc3ZnIj48bWV0YWRhdGEKICAgaWQ9Im1ldGFkYXRhMjEiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUKICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48ZGM6dGl0bGUgLz48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgaWQ9ImRlZnMxOSIgLz48c29kaXBvZGk6bmFtZWR2aWV3CiAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgIGdyaWR0b2xlcmFuY2U9IjEwIgogICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjEyODIiCiAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9Ijg4NiIKICAgaWQ9Im5hbWVkdmlldzE3IgogICBzaG93Z3JpZD0iZmFsc2UiCiAgIGlua3NjYXBlOnpvb209IjMuNjg3NSIKICAgaW5rc2NhcGU6Y3g9Ii0xMC4zMDUwODUiCiAgIGlua3NjYXBlOmN5PSIzMiIKICAgaW5rc2NhcGU6d2luZG93LXg9IjMxIgogICBpbmtzY2FwZTp3aW5kb3cteT0iMTUiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImczIiAvPgo8ZwogICBpZD0iZzMiPgoJPGcKICAgaWQ9Imc1IgogICBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7ZmlsbDojNGQ0ZDRkIj4KCQk8cGF0aAogICBmaWxsPSIjMDIwMjAyIgogICBkPSJNMzIuODU0LDIwLjAyOGMtMC4wMTUtMS4yNzQsMC41NzYtMi4yNjksMS4xNTEtMy4yMzZjMC43NTgtMS4yNzgsMS41NDMtMi42LDAuOTk3LTQuNDE3ICAgIGMtMC41NTUtMS42NjctMS42MDctMi40ODUtMi41MzktMy4yMTJjLTEuMjU0LTAuOTczLTIuMTU5LTEuNjc2LTEuNjg3LTQuMzQzbDAuMDQxLTAuMjI5bC0xLjM1LTAuMjM4TDI5LjQyNyw0LjU4ICAgIGMtMC42MTUsMy40ODQsMC44NzgsNC42NDMsMi4xOTUsNS42NjZjMC44NSwwLjY2MywxLjY1MywxLjI4OCwyLjA3MiwyLjU0MmMwLjM2NiwxLjIyNC0wLjE4LDIuMTQzLTAuODY5LDMuMzA2ICAgIGMtMC42NDEsMS4wODEtMS4zNjYsMi4zLTEuMzQ5LDMuOTMzYy02LjgzNywwLjAwNy0xMy44MjMsMC4yOTEtMTMuODIzLDI0LjU5YzAsMTAuOTUxLDguNzk5LDE1LjAzMiwxNC4zNDcsMTUuMDMyICAgIGM1LjU0NSwwLDE0LjM0Ny00LjA4MSwxNC4zNDctMTUuMDMyQzQ2LjM0NywyMC4zNDcsMzkuMjI4LDIwLjA0OCwzMi44NTQsMjAuMDI4eiBNMzIuNjg1LDIxLjM5OSAgICBjNS42NDMsMC4wMTIsMTAuOTI3LDAuMjM2LDEyLjA2MywxNi4xNTNjLTMuODYsMS44MDUtNy45MTYsMi43NjUtMTIuMDYzLDIuODZ2LTIuOTY2YzAuODQ1LTAuMTYyLDEuNDgxLTAuOTA5LDEuNDgxLTEuNzgydi04Ljk1NiAgICBjMC0wLjg3Ni0wLjYzNy0xLjYyMS0xLjQ4MS0xLjc4NFYyMS4zOTl6IE0zMS42NTgsMjYuMjU0aDAuNjg1YzAuMjQ5LDAsMC40NTMsMC4yMDUsMC40NTMsMC40NTR2OC45NTYgICAgYzAsMC4yNDktMC4yMDQsMC40NDktMC40NTMsMC40NDloLTAuNjg1Yy0wLjI0OSwwLTAuNDUyLTAuMi0wLjQ1Mi0wLjQ0OXYtOC45NTZDMzEuMjA2LDI2LjQ1OSwzMS40MDksMjYuMjU0LDMxLjY1OCwyNi4yNTR6ICAgICBNMzEuMzEzLDIxLjM5OXYzLjUyNWMtMC44NDUsMC4xNjMtMS40NzksMC45MS0xLjQ3OSwxLjc4NHY4Ljk1NmMwLDAuODczLDAuNjM0LDEuNjIsMS40NzksMS43ODJ2Mi45NjYgICAgYy02LjMxMS0wLjE0OC0xMC45MDUtMi4yNTItMTIuMDYzLTIuODM5QzIwLjM4MSwyMS42MzMsMjUuNjY4LDIxLjQxMSwzMS4zMTMsMjEuMzk5eiBNMzIsNTguMjc0ICAgIGMtNS4wMTYsMC0xMi45NzYtMy43MDctMTIuOTc2LTEzLjY1OGMwLTEuOTgzLDAuMDQ1LTMuODUzLDAuMTM0LTUuNTYzYzIuMDAzLDAuOTI5LDYuNjk2LDIuNzQsMTIuODY4LDIuNzQgICAgYzQuMzk0LDAsOC43MDQtMC45MzQsMTIuODEzLTIuNzcxYzAuMDg5LDEuNzE4LDAuMTM1LDMuNiwwLjEzNSw1LjU5NUM0NC45NzQsNTQuNTY3LDM3LjAxNiw1OC4yNzQsMzIsNTguMjc0eiIKICAgaWQ9InBhdGg3IgogICBzdHlsZT0ic3Ryb2tlOiM0ZDRkNGQ7ZmlsbDojNGQ0ZDRkIiAvPgoJPC9nPgoJCgkKPHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yNzExODY0Mzk5OTk5OTk5NyIKICAgZD0ibSAzMi45MjIwMzQsMzguOTUwNzkzIGMgMCwtMS4xMzU4MjUgMC4xMTQ5MTksLTEuNDU4MDQ1IDAuNjc3OTY2LC0xLjkwMDkzOCBsIDAuNjc3OTY2LC0wLjUzMzI4OCAwLC01LjI4MDc4IGMgMCwtNS4yNzEyNDkgLTAuMDAxMiwtNS4yODIwMDMgLTAuNjc3OTY2LC01Ljk1ODc0NSAtMC41NTc0MzksLTAuNTU3NDM5IC0wLjY3Nzk2NiwtMC45NDA5MzUgLTAuNjc3OTY2LC0yLjE1NzE2NSBsIDAsLTEuNDc5MTk5IDEuNTM1NDg3LDAgYyA1LjY1NzU1NCwwIDguNTg0MzM4LDMuNzI4NTI5IDkuNzE4NTUsMTIuMzgwNzkxIDAuNDk4NDM0LDMuODAyMjY1IDAuNTAzNDgsMy41MjU3MzEgLTAuMDY3NiwzLjcwNDU3MiAtMC4yNjEwMTcsMC4wODE3NCAtMS41Mjg2OTQsMC41MTIwMTYgLTIuODE3MDU5LDAuOTU2MTY3IC0yLjAzNzIwNiwwLjcwMjMwNiAtNC4wNDgwMzIsMS4xMTMwNDQgLTcuNDg4MDI2LDEuNTI5NTI4IGwgLTAuODgxMzU2LDAuMTA2NzA3IDAsLTEuMzY3NjUgeiIKICAgaWQ9InBhdGgzNzY4IgogICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPjxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjcxMTg2NDQiCiAgIGQ9Im0gMzAuNDQwNDMzLDU3Ljk0NTMxNiBjIC0zLjA2NDA1MywtMC40MjExMyAtNi43NzcyMywtMi40NzQ5NTMgLTguNDU3NjIxLC00LjY3ODA2IC0yLjE1ODgsLTIuODMwMzMzIC0zLjExMzkxOCwtNi43Mzc3MTYgLTIuNzY5NTkyLC0xMS4zMzAzODUgbCAwLjE5MzEyMSwtMi41NzU4NzIgMi4wNzk4OCwwLjczNTYyOCBjIDMuNTI3MDI2LDEuMjQ3NDY2IDYuMzM3NzAxLDEuNzE5MDY4IDEwLjIxNTQ3NCwxLjcxNDA1IDQuMTcxNzcxLC0wLjAwNTQgNi42NDI5ODEsLTAuMzg4NjggMTAuMjU4MzYsLTEuNTkxMDU4IDIuMTc4OTczLC0wLjcyNDY2OCAyLjY5MjE5MywtMC44MTU4NTYgMi44MTM0NDQsLTAuNDk5ODgzIDAuMDgxNTcsMC4yMTI1NiAwLjA4NjY0LDIuMTE5ODY0IDAuMDExMjcsNC4yMzg0NTMgLTAuMTA2MjE3LDIuOTg1ODEgLTAuMjY2NTMxLDQuMjEyOTM4IC0wLjcxMjkzNSw1LjQ1NzIwOCAtMS40NTAyMTcsNC4wNDIyMDYgLTQuNDAxMTE4LDYuODQ0MTU2IC04LjQzNzkzOCw4LjAxMjAxNyAtMi4zMTQ3NDcsMC42Njk2NjEgLTMuMzQzMTQsMC43NzIyMTUgLTUuMTkzNDY1LDAuNTE3OTAyIHoiCiAgIGlkPSJwYXRoMzc3MiIKICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz48cGF0aAogICBzdHlsZT0iZmlsbDojZmZmZmZmO3N0cm9rZTojZmZmZmZmO3N0cm9rZS13aWR0aDowLjI3MTE4NjQ0IgogICBkPSJtIDI4Ljc0MDU1Niw0MC4wNjM2ODIgYyAtMi40NTc3OTUsLTAuMjg0OTk1IC01LjI5MTUyMiwtMC45NzY4ODEgLTcuNDc5NTM5LC0xLjgyNjIxMiAtMC45Njk0OTIsLTAuMzc2MzMyIC0xLjc5MjkzOSwtMC43MDQ5NjEgLTEuODI5ODg0LC0wLjczMDI4NyAtMC4xNTI1NjQsLTAuMTA0NTg0IDAuNzY2MDE2LC02LjI0MjU0MSAxLjE2ODAxLC03LjgwNDY1NiAxLjQyMTE5MSwtNS41MjI2MzEgNC4zMDQ0NzcsLTguMDYxODQ5IDkuMTU0MjQxLC04LjA2MTg0OSBsIDEuNTQxNTMxLDAgMCwxLjYyNzExOSBjIDAsMS4yMzcxMjUgLTAuMDkzODEsMS42MjcxMTggLTAuMzkxNDAyLDEuNjI3MTE4IC0wLjIxNTI3MSwwIC0wLjU4MTM3MywwLjI3MTIyMSAtMC44MTM1NTksMC42MDI3MTQgLTAuMzQ1ODg5LDAuNDkzODI2IC0wLjQyMjE1NywxLjUyNzUyNCAtMC40MjIxNTcsNS43MjE3MDYgbCAwLDUuMTE4OTkyIDAuODEzNTU5LDAuNzU5OTc4IGMgMC42NzU4NDYsMC42MzEzMzUgMC44MTM1NTksMC45NzEwODMgMC44MTM1NTksMi4wMDcxMDggMCwwLjgzNTkyMSAtMC4xMTE3NzEsMS4yMzUzNzggLTAuMzM4OTgzLDEuMjExNDg5IC0wLjE4NjQ0LC0wLjAxOTYgLTEuMTgzMzYsLTAuMTMzNTUxIC0yLjIxNTM3NiwtMC4yNTMyMiBsIDAsMCB6IgogICBpZD0icGF0aDM3NzgiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PHBhdGgKICAgc3R5bGU9ImZpbGw6I2ZmZDgwMDtzdHJva2U6I2ZmZDgwMDtzdHJva2Utd2lkdGg6MC4zMzg3MDk2NSIKICAgZD0ibSAzMS4zNTYyNDMsMzUuODA5MjY0IGMgLTAuMTY0MzE0LC0wLjEwMzg1NiAtMC4yOTg3NTMsLTIuMjE1NjgyIC0wLjI5ODc1MywtNC42OTI5NDUgMCwtMy45NTYwMjYgMC4wODY0NCwtNC41MjUwOCAwLjcxMDI5NiwtNC42NzYzOTUgMC4zOTA2NjMsLTAuMDk0NzUgMC44NzQ3NCwtMC4wNjgzNCAxLjA3NTcyOSwwLjA1ODcgMC4yMDA5OTEsMC4xMjcwMzggMC4zMTI3MTksMi4yODAzNiAwLjI0ODI4OCw0Ljc4NTE1OSAtMC4wOTkyNywzLjg1OTEyMiAtMC4yMTc4NTMsNC41NjY0MDEgLTAuNzc2OTc3LDQuNjM0MjQ3IC0wLjM2MjkwOSwwLjA0NDA0IC0wLjc5NDI3LC0wLjAwNDkgLTAuOTU4NTgzLC0wLjEwODc2NSBsIDAsMCB6IgogICBpZD0icGF0aDM3NzAiCiAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PC9nPgo8L3N2Zz4=\">\r\n </div>\r\n <div class=\"row-word\">\u7F29\u653E</div>\r\n </div>\r\n </div>\r\n <div id=\"control\"></div>\r\n</div>", styles: ["#gltfViewer{width:100%;height:100%;position:relative;overflow:hidden}#gltfViewer .loading{position:a