JAL-1807 test
[jalviewjs.git] / bin / javajs / util / M4.js
1 Clazz.declarePackage ("javajs.util");
2 Clazz.load (["javajs.util.M34"], "javajs.util.M4", ["javajs.util.T3"], function () {
3 c$ = Clazz.decorateAsClass (function () {
4 this.m03 = 0;
5 this.m13 = 0;
6 this.m23 = 0;
7 this.m30 = 0;
8 this.m31 = 0;
9 this.m32 = 0;
10 this.m33 = 0;
11 Clazz.instantialize (this, arguments);
12 }, javajs.util, "M4", javajs.util.M34);
13 c$.newA16 = Clazz.defineMethod (c$, "newA16", 
14 function (v) {
15 var m =  new javajs.util.M4 ();
16 m.m00 = v[0];
17 m.m01 = v[1];
18 m.m02 = v[2];
19 m.m03 = v[3];
20 m.m10 = v[4];
21 m.m11 = v[5];
22 m.m12 = v[6];
23 m.m13 = v[7];
24 m.m20 = v[8];
25 m.m21 = v[9];
26 m.m22 = v[10];
27 m.m23 = v[11];
28 m.m30 = v[12];
29 m.m31 = v[13];
30 m.m32 = v[14];
31 m.m33 = v[15];
32 return m;
33 }, "~A");
34 c$.newM4 = Clazz.defineMethod (c$, "newM4", 
35 function (m1) {
36 var m =  new javajs.util.M4 ();
37 if (m1 == null) {
38 m.setIdentity ();
39 return m;
40 }m.setToM3 (m1);
41 m.m03 = m1.m03;
42 m.m13 = m1.m13;
43 m.m23 = m1.m23;
44 m.m30 = m1.m30;
45 m.m31 = m1.m31;
46 m.m32 = m1.m32;
47 m.m33 = m1.m33;
48 return m;
49 }, "javajs.util.M4");
50 c$.newMV = Clazz.defineMethod (c$, "newMV", 
51 function (m1, t) {
52 var m =  new javajs.util.M4 ();
53 m.setMV (m1, t);
54 return m;
55 }, "javajs.util.M3,javajs.util.T3");
56 Clazz.defineMethod (c$, "setZero", 
57 function () {
58 this.clear33 ();
59 this.m03 = this.m13 = this.m23 = this.m30 = this.m31 = this.m32 = this.m33 = 0.0;
60 });
61 Clazz.defineMethod (c$, "setIdentity", 
62 function () {
63 this.setZero ();
64 this.m00 = this.m11 = this.m22 = this.m33 = 1.0;
65 });
66 Clazz.defineMethod (c$, "setM4", 
67 function (m1) {
68 this.setM33 (m1);
69 this.m03 = m1.m03;
70 this.m13 = m1.m13;
71 this.m23 = m1.m23;
72 this.m30 = m1.m30;
73 this.m31 = m1.m31;
74 this.m32 = m1.m32;
75 this.m33 = m1.m33;
76 return this;
77 }, "javajs.util.M4");
78 Clazz.defineMethod (c$, "setMV", 
79 function (m1, t) {
80 this.setM33 (m1);
81 this.setTranslation (t);
82 this.m33 = 1;
83 }, "javajs.util.M3,javajs.util.T3");
84 Clazz.defineMethod (c$, "setToM3", 
85 function (m1) {
86 this.setM33 (m1);
87 this.m03 = this.m13 = this.m23 = this.m30 = this.m31 = this.m32 = 0.0;
88 this.m33 = 1.0;
89 }, "javajs.util.M34");
90 Clazz.defineMethod (c$, "setToAA", 
91 function (a) {
92 this.setIdentity ();
93 this.setAA33 (a);
94 }, "javajs.util.A4");
95 Clazz.defineMethod (c$, "setA", 
96 function (m) {
97 this.m00 = m[0];
98 this.m01 = m[1];
99 this.m02 = m[2];
100 this.m03 = m[3];
101 this.m10 = m[4];
102 this.m11 = m[5];
103 this.m12 = m[6];
104 this.m13 = m[7];
105 this.m20 = m[8];
106 this.m21 = m[9];
107 this.m22 = m[10];
108 this.m23 = m[11];
109 this.m30 = m[12];
110 this.m31 = m[13];
111 this.m32 = m[14];
112 this.m33 = m[15];
113 }, "~A");
114 Clazz.defineMethod (c$, "setTranslation", 
115 function (trans) {
116 this.m03 = trans.x;
117 this.m13 = trans.y;
118 this.m23 = trans.z;
119 }, "javajs.util.T3");
120 Clazz.defineMethod (c$, "setElement", 
121 function (row, col, v) {
122 if (row < 3 && col < 3) {
123 this.set33 (row, col, v);
124 return;
125 }if (row > 3 || col > 3) this.err ();
126 switch (row) {
127 case 0:
128 this.m03 = v;
129 return;
130 case 1:
131 this.m13 = v;
132 return;
133 case 2:
134 this.m23 = v;
135 return;
136 }
137 switch (col) {
138 case 0:
139 this.m30 = v;
140 return;
141 case 1:
142 this.m31 = v;
143 return;
144 case 2:
145 this.m32 = v;
146 return;
147 case 3:
148 this.m33 = v;
149 return;
150 }
151 }, "~N,~N,~N");
152 Clazz.defineMethod (c$, "getElement", 
153 function (row, col) {
154 if (row < 3 && col < 3) return this.get33 (row, col);
155 if (row > 3 || col > 3) {
156 this.err ();
157 return 0;
158 }switch (row) {
159 case 0:
160 return this.m03;
161 case 1:
162 return this.m13;
163 case 2:
164 return this.m23;
165 default:
166 switch (col) {
167 case 0:
168 return this.m30;
169 case 1:
170 return this.m31;
171 case 2:
172 return this.m32;
173 default:
174 return this.m33;
175 }
176 }
177 }, "~N,~N");
178 Clazz.defineMethod (c$, "getTranslation", 
179 function (trans) {
180 trans.x = this.m03;
181 trans.y = this.m13;
182 trans.z = this.m23;
183 }, "javajs.util.T3");
184 Clazz.defineMethod (c$, "getRotationScale", 
185 function (m1) {
186 m1.m00 = this.m00;
187 m1.m01 = this.m01;
188 m1.m02 = this.m02;
189 m1.m10 = this.m10;
190 m1.m11 = this.m11;
191 m1.m12 = this.m12;
192 m1.m20 = this.m20;
193 m1.m21 = this.m21;
194 m1.m22 = this.m22;
195 }, "javajs.util.M3");
196 Clazz.defineMethod (c$, "setRotationScale", 
197 function (m1) {
198 this.m00 = m1.m00;
199 this.m01 = m1.m01;
200 this.m02 = m1.m02;
201 this.m10 = m1.m10;
202 this.m11 = m1.m11;
203 this.m12 = m1.m12;
204 this.m20 = m1.m20;
205 this.m21 = m1.m21;
206 this.m22 = m1.m22;
207 }, "javajs.util.M3");
208 Clazz.defineMethod (c$, "setRowA", 
209 function (row, v) {
210 if (row < 3) this.setRow33 (row, v);
211 switch (row) {
212 case 0:
213 this.m03 = v[3];
214 return;
215 case 1:
216 this.m13 = v[3];
217 return;
218 case 2:
219 this.m23 = v[3];
220 return;
221 case 3:
222 this.m30 = v[0];
223 this.m31 = v[1];
224 this.m32 = v[2];
225 this.m33 = v[3];
226 return;
227 }
228 this.err ();
229 }, "~N,~A");
230 Clazz.overrideMethod (c$, "getRow", 
231 function (row, v) {
232 if (row < 3) this.getRow33 (row, v);
233 switch (row) {
234 case 0:
235 v[3] = this.m03;
236 return;
237 case 1:
238 v[3] = this.m13;
239 return;
240 case 2:
241 v[3] = this.m23;
242 return;
243 case 3:
244 v[0] = this.m30;
245 v[1] = this.m31;
246 v[2] = this.m32;
247 v[3] = this.m33;
248 return;
249 }
250 this.err ();
251 }, "~N,~A");
252 Clazz.defineMethod (c$, "setColumn4", 
253 function (column, x, y, z, w) {
254 if (column == 0) {
255 this.m00 = x;
256 this.m10 = y;
257 this.m20 = z;
258 this.m30 = w;
259 } else if (column == 1) {
260 this.m01 = x;
261 this.m11 = y;
262 this.m21 = z;
263 this.m31 = w;
264 } else if (column == 2) {
265 this.m02 = x;
266 this.m12 = y;
267 this.m22 = z;
268 this.m32 = w;
269 } else if (column == 3) {
270 this.m03 = x;
271 this.m13 = y;
272 this.m23 = z;
273 this.m33 = w;
274 } else {
275 this.err ();
276 }}, "~N,~N,~N,~N,~N");
277 Clazz.defineMethod (c$, "setColumnA", 
278 function (column, v) {
279 if (column < 3) this.setColumn33 (column, v);
280 switch (column) {
281 case 0:
282 this.m30 = v[3];
283 return;
284 case 1:
285 this.m31 = v[3];
286 return;
287 case 2:
288 this.m32 = v[3];
289 return;
290 case 3:
291 this.m03 = v[0];
292 this.m13 = v[1];
293 this.m23 = v[2];
294 this.m33 = v[3];
295 return;
296 default:
297 this.err ();
298 }
299 }, "~N,~A");
300 Clazz.defineMethod (c$, "getColumn", 
301 function (column, v) {
302 if (column < 3) this.getColumn33 (column, v);
303 switch (column) {
304 case 0:
305 v[3] = this.m30;
306 return;
307 case 1:
308 v[3] = this.m31;
309 return;
310 case 2:
311 v[3] = this.m32;
312 return;
313 case 3:
314 v[0] = this.m03;
315 v[1] = this.m13;
316 v[2] = this.m23;
317 v[3] = this.m33;
318 return;
319 default:
320 this.err ();
321 }
322 }, "~N,~A");
323 Clazz.defineMethod (c$, "sub", 
324 function (m1) {
325 this.sub33 (m1);
326 this.m03 -= m1.m03;
327 this.m13 -= m1.m13;
328 this.m23 -= m1.m23;
329 this.m30 -= m1.m30;
330 this.m31 -= m1.m31;
331 this.m32 -= m1.m32;
332 this.m33 -= m1.m33;
333 }, "javajs.util.M4");
334 Clazz.defineMethod (c$, "transpose", 
335 function () {
336 this.transpose33 ();
337 var tmp = this.m03;
338 this.m03 = this.m30;
339 this.m30 = tmp;
340 tmp = this.m13;
341 this.m13 = this.m31;
342 this.m31 = tmp;
343 tmp = this.m23;
344 this.m23 = this.m32;
345 this.m32 = tmp;
346 });
347 Clazz.defineMethod (c$, "invert", 
348 function () {
349 var s = this.determinant4 ();
350 if (s == 0.0) return this;
351 s = 1 / s;
352 this.set (this.m11 * (this.m22 * this.m33 - this.m23 * this.m32) + this.m12 * (this.m23 * this.m31 - this.m21 * this.m33) + this.m13 * (this.m21 * this.m32 - this.m22 * this.m31), this.m21 * (this.m02 * this.m33 - this.m03 * this.m32) + this.m22 * (this.m03 * this.m31 - this.m01 * this.m33) + this.m23 * (this.m01 * this.m32 - this.m02 * this.m31), this.m31 * (this.m02 * this.m13 - this.m03 * this.m12) + this.m32 * (this.m03 * this.m11 - this.m01 * this.m13) + this.m33 * (this.m01 * this.m12 - this.m02 * this.m11), this.m01 * (this.m13 * this.m22 - this.m12 * this.m23) + this.m02 * (this.m11 * this.m23 - this.m13 * this.m21) + this.m03 * (this.m12 * this.m21 - this.m11 * this.m22), this.m12 * (this.m20 * this.m33 - this.m23 * this.m30) + this.m13 * (this.m22 * this.m30 - this.m20 * this.m32) + this.m10 * (this.m23 * this.m32 - this.m22 * this.m33), this.m22 * (this.m00 * this.m33 - this.m03 * this.m30) + this.m23 * (this.m02 * this.m30 - this.m00 * this.m32) + this.m20 * (this.m03 * this.m32 - this.m02 * this.m33), this.m32 * (this.m00 * this.m13 - this.m03 * this.m10) + this.m33 * (this.m02 * this.m10 - this.m00 * this.m12) + this.m30 * (this.m03 * this.m12 - this.m02 * this.m13), this.m02 * (this.m13 * this.m20 - this.m10 * this.m23) + this.m03 * (this.m10 * this.m22 - this.m12 * this.m20) + this.m00 * (this.m12 * this.m23 - this.m13 * this.m22), this.m13 * (this.m20 * this.m31 - this.m21 * this.m30) + this.m10 * (this.m21 * this.m33 - this.m23 * this.m31) + this.m11 * (this.m23 * this.m30 - this.m20 * this.m33), this.m23 * (this.m00 * this.m31 - this.m01 * this.m30) + this.m20 * (this.m01 * this.m33 - this.m03 * this.m31) + this.m21 * (this.m03 * this.m30 - this.m00 * this.m33), this.m33 * (this.m00 * this.m11 - this.m01 * this.m10) + this.m30 * (this.m01 * this.m13 - this.m03 * this.m11) + this.m31 * (this.m03 * this.m10 - this.m00 * this.m13), this.m03 * (this.m11 * this.m20 - this.m10 * this.m21) + this.m00 * (this.m13 * this.m21 - this.m11 * this.m23) + this.m01 * (this.m10 * this.m23 - this.m13 * this.m20), this.m10 * (this.m22 * this.m31 - this.m21 * this.m32) + this.m11 * (this.m20 * this.m32 - this.m22 * this.m30) + this.m12 * (this.m21 * this.m30 - this.m20 * this.m31), this.m20 * (this.m02 * this.m31 - this.m01 * this.m32) + this.m21 * (this.m00 * this.m32 - this.m02 * this.m30) + this.m22 * (this.m01 * this.m30 - this.m00 * this.m31), this.m30 * (this.m02 * this.m11 - this.m01 * this.m12) + this.m31 * (this.m00 * this.m12 - this.m02 * this.m10) + this.m32 * (this.m01 * this.m10 - this.m00 * this.m11), this.m00 * (this.m11 * this.m22 - this.m12 * this.m21) + this.m01 * (this.m12 * this.m20 - this.m10 * this.m22) + this.m02 * (this.m10 * this.m21 - this.m11 * this.m20));
353 this.scale (s);
354 return this;
355 });
356 Clazz.defineMethod (c$, "set", 
357 ($fz = function (m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {
358 this.m00 = m00;
359 this.m01 = m01;
360 this.m02 = m02;
361 this.m03 = m03;
362 this.m10 = m10;
363 this.m11 = m11;
364 this.m12 = m12;
365 this.m13 = m13;
366 this.m20 = m20;
367 this.m21 = m21;
368 this.m22 = m22;
369 this.m23 = m23;
370 this.m30 = m30;
371 this.m31 = m31;
372 this.m32 = m32;
373 this.m33 = m33;
374 }, $fz.isPrivate = true, $fz), "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");
375 Clazz.defineMethod (c$, "determinant4", 
376 function () {
377 return (this.m00 * this.m11 - this.m01 * this.m10) * (this.m22 * this.m33 - this.m23 * this.m32) - (this.m00 * this.m12 - this.m02 * this.m10) * (this.m21 * this.m33 - this.m23 * this.m31) + (this.m00 * this.m13 - this.m03 * this.m10) * (this.m21 * this.m32 - this.m22 * this.m31) + (this.m01 * this.m12 - this.m02 * this.m11) * (this.m20 * this.m33 - this.m23 * this.m30) - (this.m01 * this.m13 - this.m03 * this.m11) * (this.m20 * this.m32 - this.m22 * this.m30) + (this.m02 * this.m13 - this.m03 * this.m12) * (this.m20 * this.m31 - this.m21 * this.m30);
378 });
379 Clazz.defineMethod (c$, "scale", 
380 ($fz = function (scalar) {
381 this.mul33 (scalar);
382 this.m03 *= scalar;
383 this.m13 *= scalar;
384 this.m23 *= scalar;
385 this.m30 *= scalar;
386 this.m31 *= scalar;
387 this.m32 *= scalar;
388 this.m33 *= scalar;
389 }, $fz.isPrivate = true, $fz), "~N");
390 Clazz.defineMethod (c$, "mul", 
391 function (m1) {
392 this.mul2 (this, m1);
393 }, "javajs.util.M4");
394 Clazz.defineMethod (c$, "mul2", 
395 function (m1, m2) {
396 this.set (m1.m00 * m2.m00 + m1.m01 * m2.m10 + m1.m02 * m2.m20 + m1.m03 * m2.m30, m1.m00 * m2.m01 + m1.m01 * m2.m11 + m1.m02 * m2.m21 + m1.m03 * m2.m31, m1.m00 * m2.m02 + m1.m01 * m2.m12 + m1.m02 * m2.m22 + m1.m03 * m2.m32, m1.m00 * m2.m03 + m1.m01 * m2.m13 + m1.m02 * m2.m23 + m1.m03 * m2.m33, m1.m10 * m2.m00 + m1.m11 * m2.m10 + m1.m12 * m2.m20 + m1.m13 * m2.m30, m1.m10 * m2.m01 + m1.m11 * m2.m11 + m1.m12 * m2.m21 + m1.m13 * m2.m31, m1.m10 * m2.m02 + m1.m11 * m2.m12 + m1.m12 * m2.m22 + m1.m13 * m2.m32, m1.m10 * m2.m03 + m1.m11 * m2.m13 + m1.m12 * m2.m23 + m1.m13 * m2.m33, m1.m20 * m2.m00 + m1.m21 * m2.m10 + m1.m22 * m2.m20 + m1.m23 * m2.m30, m1.m20 * m2.m01 + m1.m21 * m2.m11 + m1.m22 * m2.m21 + m1.m23 * m2.m31, m1.m20 * m2.m02 + m1.m21 * m2.m12 + m1.m22 * m2.m22 + m1.m23 * m2.m32, m1.m20 * m2.m03 + m1.m21 * m2.m13 + m1.m22 * m2.m23 + m1.m23 * m2.m33, m1.m30 * m2.m00 + m1.m31 * m2.m10 + m1.m32 * m2.m20 + m1.m33 * m2.m30, m1.m30 * m2.m01 + m1.m31 * m2.m11 + m1.m32 * m2.m21 + m1.m33 * m2.m31, m1.m30 * m2.m02 + m1.m31 * m2.m12 + m1.m32 * m2.m22 + m1.m33 * m2.m32, m1.m30 * m2.m03 + m1.m31 * m2.m13 + m1.m32 * m2.m23 + m1.m33 * m2.m33);
397 }, "javajs.util.M4,javajs.util.M4");
398 Clazz.defineMethod (c$, "transform", 
399 function (vec) {
400 this.transform2 (vec, vec);
401 }, "javajs.util.T4");
402 Clazz.defineMethod (c$, "transform2", 
403 function (vec, vecOut) {
404 vecOut.set4 (this.m00 * vec.x + this.m01 * vec.y + this.m02 * vec.z + this.m03 * vec.w, this.m10 * vec.x + this.m11 * vec.y + this.m12 * vec.z + this.m13 * vec.w, this.m20 * vec.x + this.m21 * vec.y + this.m22 * vec.z + this.m23 * vec.w, this.m30 * vec.x + this.m31 * vec.y + this.m32 * vec.z + this.m33 * vec.w);
405 }, "javajs.util.T4,javajs.util.T4");
406 Clazz.defineMethod (c$, "rotTrans", 
407 function (point) {
408 this.rotTrans2 (point, point);
409 }, "javajs.util.T3");
410 Clazz.defineMethod (c$, "rotTrans2", 
411 function (point, pointOut) {
412 pointOut.set (this.m00 * point.x + this.m01 * point.y + this.m02 * point.z + this.m03, this.m10 * point.x + this.m11 * point.y + this.m12 * point.z + this.m13, this.m20 * point.x + this.m21 * point.y + this.m22 * point.z + this.m23);
413 return pointOut;
414 }, "javajs.util.T3,javajs.util.T3");
415 Clazz.defineMethod (c$, "setAsXYRotation", 
416 function (angle) {
417 this.setIdentity ();
418 var c = Math.cos (angle);
419 var s = Math.sin (angle);
420 this.m22 = c;
421 this.m23 = -s;
422 this.m32 = s;
423 this.m33 = c;
424 return this;
425 }, "~N");
426 Clazz.defineMethod (c$, "setAsYZRotation", 
427 function (angle) {
428 this.setIdentity ();
429 var c = Math.cos (angle);
430 var s = Math.sin (angle);
431 this.m00 = c;
432 this.m03 = -s;
433 this.m30 = s;
434 this.m33 = c;
435 return this;
436 }, "~N");
437 Clazz.defineMethod (c$, "setAsXZRotation", 
438 function (angle) {
439 this.setIdentity ();
440 var c = Math.cos (angle);
441 var s = Math.sin (angle);
442 this.m11 = c;
443 this.m13 = -s;
444 this.m31 = s;
445 this.m33 = c;
446 return this;
447 }, "~N");
448 Clazz.overrideMethod (c$, "equals", 
449 function (o) {
450 if (!(Clazz.instanceOf (o, javajs.util.M4))) return false;
451 var m = o;
452 return (this.m00 == m.m00 && this.m01 == m.m01 && this.m02 == m.m02 && this.m03 == m.m03 && this.m10 == m.m10 && this.m11 == m.m11 && this.m12 == m.m12 && this.m13 == m.m13 && this.m20 == m.m20 && this.m21 == m.m21 && this.m22 == m.m22 && this.m23 == m.m23 && this.m30 == m.m30 && this.m31 == m.m31 && this.m32 == m.m32 && this.m33 == m.m33);
453 }, "~O");
454 Clazz.overrideMethod (c$, "hashCode", 
455 function () {
456 return javajs.util.T3.floatToIntBits0 (this.m00) ^ javajs.util.T3.floatToIntBits0 (this.m01) ^ javajs.util.T3.floatToIntBits0 (this.m02) ^ javajs.util.T3.floatToIntBits0 (this.m03) ^ javajs.util.T3.floatToIntBits0 (this.m10) ^ javajs.util.T3.floatToIntBits0 (this.m11) ^ javajs.util.T3.floatToIntBits0 (this.m12) ^ javajs.util.T3.floatToIntBits0 (this.m13) ^ javajs.util.T3.floatToIntBits0 (this.m20) ^ javajs.util.T3.floatToIntBits0 (this.m21) ^ javajs.util.T3.floatToIntBits0 (this.m22) ^ javajs.util.T3.floatToIntBits0 (this.m23) ^ javajs.util.T3.floatToIntBits0 (this.m30) ^ javajs.util.T3.floatToIntBits0 (this.m31) ^ javajs.util.T3.floatToIntBits0 (this.m32) ^ javajs.util.T3.floatToIntBits0 (this.m33);
457 });
458 Clazz.overrideMethod (c$, "toString", 
459 function () {
460 return "[\n  [" + this.m00 + "\t" + this.m01 + "\t" + this.m02 + "\t" + this.m03 + "]" + "\n  [" + this.m10 + "\t" + this.m11 + "\t" + this.m12 + "\t" + this.m13 + "]" + "\n  [" + this.m20 + "\t" + this.m21 + "\t" + this.m22 + "\t" + this.m23 + "]" + "\n  [" + this.m30 + "\t" + this.m31 + "\t" + this.m32 + "\t" + this.m33 + "] ]";
461 });
462 Clazz.defineMethod (c$, "round", 
463 function (f) {
464 this.m00 = this.rnd (this.m00, f);
465 this.m01 = this.rnd (this.m01, f);
466 this.m02 = this.rnd (this.m02, f);
467 this.m03 = this.rnd (this.m03, f);
468 this.m10 = this.rnd (this.m10, f);
469 this.m11 = this.rnd (this.m11, f);
470 this.m12 = this.rnd (this.m12, f);
471 this.m13 = this.rnd (this.m13, f);
472 this.m20 = this.rnd (this.m20, f);
473 this.m21 = this.rnd (this.m21, f);
474 this.m22 = this.rnd (this.m22, f);
475 this.m23 = this.rnd (this.m23, f);
476 this.m30 = this.rnd (this.m30, f);
477 this.m31 = this.rnd (this.m31, f);
478 this.m32 = this.rnd (this.m32, f);
479 this.m33 = this.rnd (this.m33, f);
480 return this;
481 }, "~N");
482 Clazz.defineMethod (c$, "rnd", 
483 ($fz = function (n, f) {
484 return (Math.abs (n) < f ? 0 : n);
485 }, $fz.isPrivate = true, $fz), "~N,~N");
486 });