@realsee/five 5.0.0-alpha.91 → 5.0.0-alpha.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/assets/search.js +1 -1
- package/docs/classes/five.AnimationFrameLoop.html +1 -1
- package/docs/classes/five.BVH.html +3 -3
- package/docs/classes/five.BVHIntersect.html +1 -0
- package/docs/classes/five.BVHNode.html +3 -4
- package/docs/classes/five.BVHVector3.html +1 -1
- package/docs/classes/five.Camera.html +1 -1
- package/docs/classes/five.Five.html +17 -17
- package/docs/classes/five.InternalWebGLRenderer.html +1 -1
- package/docs/classes/five.IntersectMesh.html +1 -0
- package/docs/classes/five.LegacyPanoCircleMesh.html +5 -0
- package/docs/classes/five.Model.html +3 -3
- package/docs/classes/five.NetworkSubscribe.html +1 -1
- package/docs/classes/five.PBMContainer.html +1 -1
- package/docs/classes/five.PBMGroup.html +1 -1
- package/docs/classes/five.PBMMaterial.html +1 -1
- package/docs/classes/five.PBMMesh.html +1 -1
- package/docs/classes/five.PanoCircleMesh.html +7 -0
- package/docs/classes/five.Scene.html +1 -1
- package/docs/classes/five.Subscribe.html +2 -2
- package/docs/classes/five.Work.html +19 -1
- package/docs/classes/gltf_loader.GLTFLoader.html +1 -1
- package/docs/classes/gltf_loader.GLTFObject.html +1 -1
- package/docs/classes/line.Line.html +1 -1
- package/docs/classes/line.LineGeometry.html +1 -1
- package/docs/classes/line.LineMaterial.html +1 -1
- package/docs/classes/line.LineSegmentsGeometry.html +1 -1
- package/docs/classes/line.THREE_Line2.html +1 -1
- package/docs/classes/line.THREE_LineSegments2.html +1 -1
- package/docs/classes/react.Store.html +1 -1
- package/docs/classes/server.BVH.html +3 -3
- package/docs/classes/server.BVHIntersect.html +1 -0
- package/docs/classes/server.BVHNode.html +3 -4
- package/docs/classes/server.BVHVector3.html +1 -1
- package/docs/classes/server.Model.html +3 -3
- package/docs/classes/server.PBMGroup.html +1 -1
- package/docs/classes/server.PBMMesh.html +1 -1
- package/docs/classes/sticker.Sticker.html +1 -1
- package/docs/index.html +1 -1
- package/docs/interfaces/five.AddableObject.html +1 -1
- package/docs/interfaces/five.AnimationFrame.html +1 -1
- package/docs/interfaces/five.CameraPose.html +1 -1
- package/docs/interfaces/five.DepthPanoramaControllerCustomInitArgs.html +12 -12
- package/docs/interfaces/five.EventCallback.html +1 -1
- package/docs/interfaces/five.FiveInitArgs.html +1 -1
- package/docs/interfaces/five.FloorplanControllerCustomInitArgs.html +1 -1
- package/docs/interfaces/five.ImageOptions.html +3 -3
- package/docs/interfaces/five.ImageURLOptions.html +1 -1
- package/docs/interfaces/five.IntersectMeshInterface.html +3 -1
- package/docs/interfaces/five.Intersection.html +1 -1
- package/docs/interfaces/five.ModelControllerCustomInitArgs.html +9 -9
- package/docs/interfaces/five.ModelEventCallback.html +1 -1
- package/docs/interfaces/five.MovePanoOptions.html +1 -1
- package/docs/interfaces/five.PBMPanoPicture.html +1 -1
- package/docs/interfaces/five.PBMParameters.html +1 -1
- package/docs/interfaces/five.PanoCircleMeshInterface.html +7 -3
- package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +12 -12
- package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +9 -9
- package/docs/interfaces/five.Pose.html +1 -1
- package/docs/interfaces/five.Scissor.html +1 -1
- package/docs/interfaces/five.State.html +1 -1
- package/docs/interfaces/five.SubscribeMixinType.emit.html +1 -1
- package/docs/interfaces/five.SubscribeMixinType.hasListener.html +1 -1
- package/docs/interfaces/five.SubscribeMixinType.off.html +1 -1
- package/docs/interfaces/five.SubscribeMixinType.on.html +1 -1
- package/docs/interfaces/five.SubscribeMixinType.once.html +1 -1
- package/docs/interfaces/five.TextureOptions.html +3 -3
- package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +1 -1
- package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +11 -11
- package/docs/interfaces/five.WorkCubeImage.html +13 -1
- package/docs/interfaces/five.WorkImage.html +20 -2
- package/docs/interfaces/five.WorkInitial.html +1 -1
- package/docs/interfaces/five.WorkModel.html +10 -2
- package/docs/interfaces/five.WorkObserver.html +24 -2
- package/docs/interfaces/five.WorkTile.html +1 -1
- package/docs/interfaces/five.WorkVideo.html +8 -2
- package/docs/interfaces/gltf_loader.GLTF.html +1 -1
- package/docs/interfaces/react.FiveActionReactCallbacks.html +1 -1
- package/docs/interfaces/react.FiveInjectionTypes.html +4 -4
- package/docs/interfaces/react.PropTypeOfFiveFeatures.html +1 -1
- package/docs/interfaces/server.Intersection.html +1 -1
- package/docs/interfaces/server.ModelEventCallback.html +1 -1
- package/docs/interfaces/sticker.IntersectionLike.html +1 -1
- package/docs/modules/five.SubscribeMixinType.html +1 -1
- package/docs/modules/five.html +4 -4
- package/docs/modules/gltf_loader.html +1 -1
- package/docs/modules/line.html +1 -1
- package/docs/modules/react.html +1 -1
- package/docs/modules/server.html +2 -2
- package/docs/modules/sticker.html +1 -1
- package/docs/modules.html +1 -1
- package/five/index.d.ts +126 -56
- package/five/index.js +7 -7
- package/gltf-loader/index.js +2 -2
- package/line/index.js +2 -2
- package/package.json +1 -1
- package/react/index.js +2 -2
- package/scripts/five-plugin-init.js +0 -0
- package/scripts/five-quick-start-init.js +0 -0
- package/scripts/five-react-component-init.js +0 -0
- package/scripts/five-staticify.js +0 -0
- package/server/index.d.ts +56 -50
- package/server/index.js +6 -6
- package/sticker/index.js +2 -2
- package/umd/five.js +1 -1
- package/docs/interfaces/five.BVHIntersect.html +0 -1
- package/docs/interfaces/server.BVHIntersect.html +0 -1
package/five/index.d.ts
CHANGED
|
@@ -40,23 +40,14 @@ export declare class AnimationFrameLoop {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
export declare class BVH {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
constructor(trianglesArray: Float32Array, maxTrianglesPerNode
|
|
50
|
-
private
|
|
51
|
-
splitNode(): void;
|
|
52
|
-
private _splitNode;
|
|
53
|
-
/**
|
|
54
|
-
* 计算包围盒
|
|
55
|
-
* @param startIndex - 开始的三角形序号
|
|
56
|
-
* @param endIndex - 结束的三角形序号
|
|
57
|
-
* @param expandBy - 外面扩展
|
|
58
|
-
*/
|
|
59
|
-
private calcExtents;
|
|
43
|
+
private trianglesArray;
|
|
44
|
+
private offsetArray;
|
|
45
|
+
private maxTrianglesPerNode;
|
|
46
|
+
private bboxArray;
|
|
47
|
+
private rootNode;
|
|
48
|
+
private nodesToSplit;
|
|
49
|
+
constructor(trianglesArray: Float32Array, maxTrianglesPerNode: number);
|
|
50
|
+
private splitNode;
|
|
60
51
|
/**
|
|
61
52
|
* 计算射线与三角形的碰撞
|
|
62
53
|
* @param rayOrigin - 射线的原点坐标
|
|
@@ -68,49 +59,28 @@ export declare class BVH {
|
|
|
68
59
|
dispose(): void;
|
|
69
60
|
}
|
|
70
61
|
|
|
71
|
-
export declare
|
|
62
|
+
export declare class BVHIntersect {
|
|
72
63
|
triangle: [BVHVector3, BVHVector3, BVHVector3];
|
|
73
64
|
triangleIndex: number;
|
|
74
65
|
intersectionPoint: BVHVector3;
|
|
66
|
+
constructor(triangle: [BVHVector3, BVHVector3, BVHVector3], triangleIndex: number, intersectionPoint: BVHVector3);
|
|
75
67
|
}
|
|
76
68
|
|
|
77
69
|
/**
|
|
78
70
|
* A node in the BVH structure
|
|
79
|
-
* @param
|
|
80
|
-
* @param extentsMax - the max coords of this node's bounding box
|
|
71
|
+
* @param extents - the min coords of this node's bounding box
|
|
81
72
|
* @param startIndex - an index in the bbox array, where the first element of this node is located
|
|
82
73
|
* @param endIndex - an index in the bbox array, where the last of this node is located, plus 1 (meaning that its non-inclusive).
|
|
83
74
|
* @param level - distance of this node from the root for the bvh tree. root node has level=0, its children have level=1 etc.
|
|
84
75
|
*/
|
|
85
76
|
export declare class BVHNode {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
y: number;
|
|
94
|
-
z: number;
|
|
95
|
-
};
|
|
96
|
-
_startIndex: number;
|
|
97
|
-
_endIndex: number;
|
|
98
|
-
_level: number;
|
|
99
|
-
_node0: BVHNode | null;
|
|
100
|
-
_node1: BVHNode | null;
|
|
101
|
-
elementCount: number;
|
|
102
|
-
center: number[];
|
|
103
|
-
size: number[];
|
|
104
|
-
order: number[];
|
|
105
|
-
constructor(extentsMin: {
|
|
106
|
-
x: number;
|
|
107
|
-
y: number;
|
|
108
|
-
z: number;
|
|
109
|
-
}, extentsMax: {
|
|
110
|
-
x: number;
|
|
111
|
-
y: number;
|
|
112
|
-
z: number;
|
|
113
|
-
}, startIndex: number, endIndex: number, level: number);
|
|
77
|
+
extents: ArrayLike<number>;
|
|
78
|
+
startIndex: number;
|
|
79
|
+
endIndex: number;
|
|
80
|
+
level: number;
|
|
81
|
+
node0: BVHNode | null;
|
|
82
|
+
node1: BVHNode | null;
|
|
83
|
+
constructor(extents: ArrayLike<number>, startIndex: number, endIndex: number, level: number);
|
|
114
84
|
clearShapes(): void;
|
|
115
85
|
}
|
|
116
86
|
|
|
@@ -118,10 +88,10 @@ export declare class BVHVector3 {
|
|
|
118
88
|
x: number;
|
|
119
89
|
y: number;
|
|
120
90
|
z: number;
|
|
121
|
-
constructor(x
|
|
91
|
+
constructor(x: number, y: number, z: number);
|
|
122
92
|
copy(v: BVHVector3): this;
|
|
123
93
|
set(x: number, y: number, z: number): this;
|
|
124
|
-
fromArray(array:
|
|
94
|
+
fromArray(array: number[], firstElementPos?: number): this;
|
|
125
95
|
add(v: BVHVector3): this;
|
|
126
96
|
multiplyScalar(scalar: number): this;
|
|
127
97
|
subVectors(a: BVHVector3, b: BVHVector3): this;
|
|
@@ -1227,11 +1197,11 @@ export declare interface ImageOptions {
|
|
|
1227
1197
|
* @returns 转化后地址
|
|
1228
1198
|
*/
|
|
1229
1199
|
transform?: (url: string, options: ImageURLOptions) => string;
|
|
1230
|
-
/** 图片尺寸参数 */
|
|
1200
|
+
/** 图片尺寸参数 尽量使用 2 的幂次 如 512 1024 2048 */
|
|
1231
1201
|
size?: number;
|
|
1232
1202
|
/** 图片质量参数(0-100) */
|
|
1233
1203
|
quality?: number;
|
|
1234
|
-
/**
|
|
1204
|
+
/** 图片格式参数 */
|
|
1235
1205
|
format?: "jpg" | "png" | "heif" | "webp" | "avif";
|
|
1236
1206
|
}
|
|
1237
1207
|
|
|
@@ -1266,10 +1236,41 @@ export declare interface Intersection {
|
|
|
1266
1236
|
distance: number;
|
|
1267
1237
|
}
|
|
1268
1238
|
|
|
1239
|
+
export declare class IntersectMesh extends THREE_2.Object3D implements IntersectMeshInterface {
|
|
1240
|
+
private ringMesh;
|
|
1241
|
+
constructor();
|
|
1242
|
+
dispose(): void;
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
/**
|
|
1246
|
+
* 地面提示点位接口
|
|
1247
|
+
*/
|
|
1269
1248
|
export declare interface IntersectMeshInterface extends THREE_2.Object3D {
|
|
1270
1249
|
dispose(): void;
|
|
1271
1250
|
}
|
|
1272
1251
|
|
|
1252
|
+
export declare class LegacyPanoCircleMesh extends THREE_2.Object3D implements PanoCircleMeshInterface {
|
|
1253
|
+
needsRender: boolean;
|
|
1254
|
+
current: boolean;
|
|
1255
|
+
loading: boolean;
|
|
1256
|
+
disabled: boolean;
|
|
1257
|
+
progress: number;
|
|
1258
|
+
opacity: number;
|
|
1259
|
+
private centerMesh;
|
|
1260
|
+
private loadingMesh;
|
|
1261
|
+
private progressMotion;
|
|
1262
|
+
private opacityMotion;
|
|
1263
|
+
private stopInterval?;
|
|
1264
|
+
constructor();
|
|
1265
|
+
setLoading(shown: boolean): void;
|
|
1266
|
+
setDisabled(disabled: boolean): void;
|
|
1267
|
+
setProgress(progress: number): void;
|
|
1268
|
+
setOpacity(opacity: number): void;
|
|
1269
|
+
setCurrent(current: boolean): void;
|
|
1270
|
+
updateTime(time: number, deltaTime: number): void;
|
|
1271
|
+
dispose(): void;
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1273
1274
|
export declare type LooseWork = {
|
|
1274
1275
|
bvh?: boolean;
|
|
1275
1276
|
modelAsync?: boolean;
|
|
@@ -1578,6 +1579,37 @@ export declare class NetworkSubscribe extends Subscribe<{
|
|
|
1578
1579
|
|
|
1579
1580
|
export declare type NetworkType = "XMLHttpRequest" | "Script" | "Image" | "Link";
|
|
1580
1581
|
|
|
1582
|
+
export declare class PanoCircleMesh extends THREE_2.Object3D implements PanoCircleMeshInterface {
|
|
1583
|
+
needsRender: boolean;
|
|
1584
|
+
private loadingMesh;
|
|
1585
|
+
private disableMesh;
|
|
1586
|
+
private centerMesh;
|
|
1587
|
+
private ringMesh;
|
|
1588
|
+
private progressMesh;
|
|
1589
|
+
private ringRotateMotion;
|
|
1590
|
+
private tapMotion;
|
|
1591
|
+
private progressMotion;
|
|
1592
|
+
private progressOpacityMotion;
|
|
1593
|
+
private opacityMotion;
|
|
1594
|
+
progress: number;
|
|
1595
|
+
opacity: number;
|
|
1596
|
+
current: boolean;
|
|
1597
|
+
loading: boolean;
|
|
1598
|
+
disabled: boolean;
|
|
1599
|
+
constructor();
|
|
1600
|
+
setProgress(progress: number): void;
|
|
1601
|
+
setOpacity(opacity: number): void;
|
|
1602
|
+
setCurrent(current: boolean): void;
|
|
1603
|
+
setLoading(loading: boolean): void;
|
|
1604
|
+
setDisabled(disabled: boolean): void;
|
|
1605
|
+
tap(): Promise<void>;
|
|
1606
|
+
updateTime(time: number, deltaTime: number): void;
|
|
1607
|
+
dispose(): void;
|
|
1608
|
+
}
|
|
1609
|
+
|
|
1610
|
+
/**
|
|
1611
|
+
* 地面提示点位接口
|
|
1612
|
+
*/
|
|
1581
1613
|
export declare interface PanoCircleMeshInterface extends THREE_2.Object3D {
|
|
1582
1614
|
needsRender: boolean;
|
|
1583
1615
|
/** 当前高亮 */
|
|
@@ -1585,14 +1617,16 @@ export declare interface PanoCircleMeshInterface extends THREE_2.Object3D {
|
|
|
1585
1617
|
/** 是否当前高亮 */
|
|
1586
1618
|
setCurrent(current: boolean): void;
|
|
1587
1619
|
loading: boolean;
|
|
1588
|
-
setLoading(
|
|
1620
|
+
setLoading(loading: boolean): void;
|
|
1589
1621
|
disabled: boolean;
|
|
1590
1622
|
setDisabled(disabled: boolean): void;
|
|
1591
1623
|
progress: number;
|
|
1592
1624
|
setProgress(progress: number): void;
|
|
1593
1625
|
opacity: number;
|
|
1594
1626
|
setOpacity(opacity: number): void;
|
|
1595
|
-
updateTime(time: number, deltaTime: number): void;
|
|
1627
|
+
updateTime?(time: number, deltaTime: number): void;
|
|
1628
|
+
/** 点击交互 */
|
|
1629
|
+
tap?(): Promise<void>;
|
|
1596
1630
|
dispose(): void;
|
|
1597
1631
|
}
|
|
1598
1632
|
|
|
@@ -1879,11 +1913,11 @@ export declare interface TextureOptions {
|
|
|
1879
1913
|
* @returns 转化后地址
|
|
1880
1914
|
*/
|
|
1881
1915
|
transform?: (url: string, options: ImageURLOptions) => string;
|
|
1882
|
-
/** 图片尺寸参数 */
|
|
1916
|
+
/** 图片尺寸参数 尽量使用 2 的幂次 如 256 512 1024 */
|
|
1883
1917
|
size?: number;
|
|
1884
1918
|
/** 图片质量参数(0-100) */
|
|
1885
1919
|
quality?: number;
|
|
1886
|
-
/**
|
|
1920
|
+
/** 图片格式参数 */
|
|
1887
1921
|
format?: "jpg" | "png" | "heif" | "webp" | "avif";
|
|
1888
1922
|
/** 针对 textureOptions 是否自动通过模型贴图的数量计算需要的模型贴图的尺寸 默认 true */
|
|
1889
1923
|
autoResize?: boolean;
|
|
@@ -1902,32 +1936,50 @@ export declare interface VRPanoramaControllerCustomInitArgs extends Omit<Panoram
|
|
|
1902
1936
|
}
|
|
1903
1937
|
|
|
1904
1938
|
export declare class Work {
|
|
1939
|
+
/** 名称 */
|
|
1905
1940
|
name: string;
|
|
1941
|
+
/** 编号 */
|
|
1906
1942
|
workCode: string;
|
|
1943
|
+
/** 允许访问的安全域名 */
|
|
1907
1944
|
allowHosts: string[];
|
|
1945
|
+
/** 过期时间 */
|
|
1908
1946
|
expire: Date;
|
|
1947
|
+
/** 初始化参数 */
|
|
1909
1948
|
initial: WorkInitial;
|
|
1949
|
+
/** 模型参数 */
|
|
1910
1950
|
model?: WorkModel;
|
|
1951
|
+
/** 全景点位信息 */
|
|
1911
1952
|
observers: WorkObserver[];
|
|
1953
|
+
/** 数据签发人 */
|
|
1912
1954
|
issuer: string;
|
|
1955
|
+
/** 原始数据 */
|
|
1913
1956
|
raw: any;
|
|
1914
1957
|
constructor();
|
|
1915
1958
|
toJSON(): any;
|
|
1916
1959
|
}
|
|
1917
1960
|
|
|
1918
1961
|
export declare interface WorkCubeImage {
|
|
1962
|
+
/** 全景图 up */
|
|
1919
1963
|
up: string;
|
|
1964
|
+
/** 全景图 down */
|
|
1920
1965
|
down: string;
|
|
1966
|
+
/** 全景图 right */
|
|
1921
1967
|
right: string;
|
|
1968
|
+
/** 全景图 left */
|
|
1922
1969
|
left: string;
|
|
1970
|
+
/** 全景图 front */
|
|
1923
1971
|
front: string;
|
|
1972
|
+
/** 全景图 back */
|
|
1924
1973
|
back: string;
|
|
1925
1974
|
}
|
|
1926
1975
|
|
|
1927
1976
|
/** 全景图 */
|
|
1928
1977
|
export declare interface WorkImage extends WorkCubeImage {
|
|
1978
|
+
/** 深度图 */
|
|
1929
1979
|
depth?: string;
|
|
1980
|
+
/** 光照强度图 */
|
|
1930
1981
|
luminance?: WorkCubeImage;
|
|
1982
|
+
/** 瓦片信息 */
|
|
1931
1983
|
tiles?: WorkTile[];
|
|
1932
1984
|
}
|
|
1933
1985
|
|
|
@@ -1937,24 +1989,39 @@ export declare interface WorkInitial extends Omit<State, "offset"> {
|
|
|
1937
1989
|
|
|
1938
1990
|
/** 模型数据 */
|
|
1939
1991
|
export declare interface WorkModel {
|
|
1992
|
+
/** 模型文件地址 at3d / domez */
|
|
1940
1993
|
file: string;
|
|
1994
|
+
/** 模型贴图文件地址 */
|
|
1941
1995
|
textures: string[];
|
|
1996
|
+
/** 模型贴图文件地址的父目录 */
|
|
1942
1997
|
textureBase: string;
|
|
1998
|
+
/** 是否开启 bvh 碰撞树,开启会大大加快射线碰撞的执行效率 */
|
|
1943
1999
|
bvh: boolean;
|
|
1944
2000
|
}
|
|
1945
2001
|
|
|
1946
2002
|
/** 每个点位的数据 */
|
|
1947
2003
|
export declare interface WorkObserver {
|
|
2004
|
+
/** 点位序号 */
|
|
1948
2005
|
panoIndex: number;
|
|
2006
|
+
/** 点位是否激活可用 */
|
|
1949
2007
|
active: boolean;
|
|
2008
|
+
/** 点位是否可加载 */
|
|
1950
2009
|
loadable: boolean;
|
|
2010
|
+
/** 点位全景图 */
|
|
1951
2011
|
images: WorkImage;
|
|
2012
|
+
/** 点位视频 */
|
|
1952
2013
|
video?: WorkVideo;
|
|
2014
|
+
/** 可以看到的相关点位序号 */
|
|
1953
2015
|
visibleNodes: number[];
|
|
2016
|
+
/** 可以连通的相关点位序号 */
|
|
1954
2017
|
accessibleNodes: number[];
|
|
2018
|
+
/** 点位和模型的旋转对齐关系四元数 */
|
|
1955
2019
|
quaternion: THREE_2.Quaternion;
|
|
2020
|
+
/** 点位和模型的地面位置坐标关系 */
|
|
1956
2021
|
standingPosition: THREE_2.Vector3;
|
|
2022
|
+
/** 点位和模型的观察点坐标关系 */
|
|
1957
2023
|
position: THREE_2.Vector3;
|
|
2024
|
+
/** 点位所在楼层 */
|
|
1958
2025
|
floorIndex: number;
|
|
1959
2026
|
}
|
|
1960
2027
|
|
|
@@ -1971,8 +2038,11 @@ export declare interface WorkTile {
|
|
|
1971
2038
|
|
|
1972
2039
|
/** 全景视频贴片 */
|
|
1973
2040
|
export declare interface WorkVideo {
|
|
2041
|
+
/** 视频源 url */
|
|
1974
2042
|
source: string;
|
|
2043
|
+
/** 视频源变化矩阵 */
|
|
1975
2044
|
matrix: THREE_2.Matrix4;
|
|
2045
|
+
/** 视频源长宽尺寸 */
|
|
1976
2046
|
size: THREE_2.Vector2;
|
|
1977
2047
|
}
|
|
1978
2048
|
|