All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.javascript.jscomp.PeepholeFoldConstants.class Maven / Gradle / Ivy

Go to download

Closure Compiler is a JavaScript optimizing compiler. It parses your JavaScript, analyzes it, removes dead code and rewrites and minimizes what's left. It also checks syntax, variable references, and types, and warns about common JavaScript pitfalls. It is used in many of Google's JavaScript apps, including Gmail, Google Web Search, Google Maps, and Google Docs.

The newest version!
????7?
9com/google/javascript/jscomp/AbstractPeepholeOptimization()V		
2com/google/javascript/jscomp/PeepholeFoldConstantslateZ	shouldUseTypes	4com/google/javascript/jscomp/PeepholeFoldConstants$1,$SwitchMap$com$google$javascript$rhino$Token[I
 com/google/javascript/rhino/NodegetToken%()Lcom/google/javascript/rhino/Token;
 !!com/google/javascript/rhino/Tokenordinal()I
#$%+tryFoldUselessObjectDotDefinePropertiesCallF(Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/rhino/Node;
'(%tryFoldCtorCall
*+%
tryFoldTypeof
-.%
tryFoldSpread
01%tryFlattenArrayOrObjectLit
345tryReduceOperandsForOp%(Lcom/google/javascript/rhino/Node;)V
78%tryFoldUnaryOperator
:;%
tryReduceVoid
=>%tryFoldGetProp
@A%tryFoldBinaryOperator
CDE
getFirstChild$()Lcom/google/javascript/rhino/Node;
GHEgetNext
JKLtryFoldGetElem?(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/rhino/Node;
NOLtryFoldInstanceof
QRLtryFoldAndOr
TULtryFoldCoalesce
WXLtryFoldShift
Z[L
tryFoldAssign
]^LtryUnfoldAssignOp
`aL
tryFoldAdd
cdLtryFoldArithmeticOp
fgLtryFoldLeftChildOp
ijLtryFoldComparison
lmnisNumber()Z
pqr	getDouble()D
tuvmayHaveSideEffects%(Lcom/google/javascript/rhino/Node;)Z
xyz{|com/google/javascript/rhino/IRnumber%(D)Lcom/google/javascript/rhino/Node;
~5replaceWith
??5reportChangeToEnclosingScope
??EgetLastChild
?????%com/google/javascript/jscomp/NodeUtilmayBeString&(Lcom/google/javascript/rhino/Node;Z)Z
??5tryConvertOperandsToNumber
??5tryConvertToNumber
??EgetSecondChild
???visUndefined
???getSideEffectFreeNumberValue6(Lcom/google/javascript/rhino/Node;)Ljava/lang/Double;
????rjava/lang/DoubledoubleValue
????
numberNodeG(DLcom/google/javascript/rhino/Node;)Lcom/google/javascript/rhino/Node;
??visEquivalentTo
??nisTypeOf
?????$com/google/common/base/Preconditions
checkArgument(Z)V
????isLiteralValue?function?string{?boolean?object?	undefined
???	getString()Ljava/lang/String;
?????java/lang/Stringequals(Ljava/lang/Object;)Z
x???6(Ljava/lang/String;)Lcom/google/javascript/rhino/Node;
??5markFunctionsDeleted
??nhasOneChild
????
checkState(ZLjava/lang/Object;)V
??E	getParent
???getSideEffectFreeBooleanValueK(Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/jscomp/base/Tri;	?????%com/google/javascript/jscomp/base/TriUNKNOWN'Lcom/google/javascript/jscomp/base/Tri;
????	toBoolean(Z)Z
????booleanNode%(Z)Lcom/google/javascript/rhino/Node;
???visNumericResult
??Edetach
??nisName?NaN
??nisNeg
??EgetOnlyChild
??nisBigInt
/com/google/javascript/jscomp/base/JSCompDoublesisMathematicalInteger(D)Z
ecmascriptToInt32(D)I	
FRACTIONAL_BITWISE_OPERAND-Lcom/google/javascript/jscomp/DiagnosticType;
reportR(Lcom/google/javascript/jscomp/DiagnosticType;Lcom/google/javascript/rhino/Node;)V
getSideEffectFreeBigIntValue:(Lcom/google/javascript/rhino/Node;)Ljava/math/BigInteger;

bigintNode\(Ljava/math/BigInteger;Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/rhino/Node;
?n
isInfinite
?nisNaN
 !nisInstanceOf
?#$visImmutableValue
x&'E	falseNode)Object
x+,EtrueNode
./nisAssign
12nhasChildren
456areNodesEqualForInliningG(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;)Z
?89:
isCommutative&(Lcom/google/javascript/rhino/Token;)Z	<=>
ASSIGN_ADD#Lcom/google/javascript/rhino/Token;	@A>
ASSIGN_BITAND	CD>ASSIGN_BITOR	FG>
ASSIGN_BITXOR	IJ>
ASSIGN_DIV	LM>
ASSIGN_LSH	OP>
ASSIGN_MOD	RS>
ASSIGN_MUL	UV>
ASSIGN_RSH	XY>
ASSIGN_SUB	[\>ASSIGN_URSH	^_>ASSIGN_EXPONENT
abj(Lcom/google/javascript/rhino/Token;Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;)V
?defgetOpFromAssignmentOpG(Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/rhino/Token;
hiE	cloneTree
kl%srcref
xnopassignh(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/rhino/Node;
?rs?getBooleanValue	uv>OR	xy>AND
{|detachChildren
x~pcomma	????FALSE	????TRUE
????getKnownValueTypeU(Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/jscomp/NodeUtil$ValueType;	??:$SwitchMap$com$google$javascript$jscomp$NodeUtil$ValueType
??/com/google/javascript/jscomp/NodeUtil$ValueType
??nisAdd
??nisStringLit
???visStringResult
????getStringValue6(Lcom/google/javascript/rhino/Node;)Ljava/lang/String;???makeConcatWithConstants8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
???java/lang/Object
?i?
??preplace
??n
isArrayLit
???getSideEffectFreeStringValue
??LperformArithmeticOp
??%srcrefTreeIfMissing
??v
??LperformBigIntArithmeticOp
??v	isNumeric
???%maybeReplaceBinaryOpWithNumericResult'(DDD)Lcom/google/javascript/rhino/Node;
x??%neg
?????java/lang/Mathpow(DD)D?java/lang/IllegalStateException???7(Lcom/google/javascript/rhino/Token;)Ljava/lang/String;
???(Ljava/lang/String;)V
?????java/math/BigIntegeradd.(Ljava/math/BigInteger;)Ljava/math/BigInteger;
????subtract
????multiply	????ZEROLjava/math/BigInteger;
??
????divide
???!
intValueExact
????(I)Ljava/math/BigInteger;?java/lang/ArithmeticException
????mod
????and
????or
????xor	????ONE
??getColor-()Lcom/google/javascript/jscomp/colors/Color;	2com/google/javascript/jscomp/colors/StandardColorsNUMBER+Lcom/google/javascript/jscomp/colors/Color;
?	visBigIntResult	BIGINT
?valueOf(D)Ljava/lang/String;
?!length
?abs(D)D	MAX_FOLD_NUMBERD
????
?#$:
isAssociative
?&??
()nhasTwoChildren
+,EremoveFirstChild
./LtryFoldAddConstantString
?12nisEmpty
45v
isStringTyped
78LtryFoldAdjacentLiteralLeaves	:;STRING
=>?isReasonableDoubleValue(Ljava/lang/Double;)Z@@
?CD!intValue????Hjava/lang/AssertionError?
GKL(Ljava/lang/Object;)V
NOPevaluateComparison?(Lcom/google/javascript/jscomp/AbstractPeepholeOptimization;Lcom/google/javascript/rhino/Token;Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/jscomp/base/Tri;	?R;S1Lcom/google/javascript/jscomp/NodeUtil$ValueType;
?
?VWXindexOf(I)I
?Z[\	compareTo(Ljava/lang/String;)I
?^_`
forBoolean*(Z)Lcom/google/javascript/jscomp/base/Tri;

?c[d(Ljava/math/BigInteger;)I
?
ghibigintLessThanDoubleh(Ljava/math/BigInteger;DLcom/google/javascript/jscomp/base/Tri;Z)Lcom/google/javascript/jscomp/base/Tri;
?k?lP(Lcom/google/javascript/jscomp/base/Tri;)Lcom/google/javascript/jscomp/base/Tri;
noisAtLeastIntegerPrecision
?qr(J)Ljava/math/BigInteger;
tuisExactInt64
wx
isPositive	?z{SUNDETERMINED
}~tryStrictEqualityComparison?(Lcom/google/javascript/jscomp/AbstractPeepholeOptimization;Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/jscomp/base/Tri;	???SNULL	???SVOID	??S	???SBOOLEAN
??tryAbstractEqualityComparison	??S	???SOBJECT
??v
?
???l
????not)()Lcom/google/javascript/jscomp/base/Tri;
???l
t
???tryAbstractRelationalComparison?(Lcom/google/javascript/jscomp/AbstractPeepholeOptimization;Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;Z)Lcom/google/javascript/jscomp/base/Tri;?"Unexpected operator for comparison
??nisNew
??vinForcedStringContext
??%tryFoldInForcedStringContext
??nisCall
??nisOptChainCall
???v"isObjectDefinePropertiesDefinition
??nisObjectLit
??n	isGetElem?String?
??%srcrefIfMissing
??nisOptChainGetElem
???tryFoldObjectPropAccessz(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;Ljava/lang/String;)Lcom/google/javascript/rhino/Node;
??LtryFoldArrayAccess
??LtryFoldStringArrayAccess
??n	isGetProp
??nisOptChainGetProp
??!
getChildCount
???visLValue
??isExactInt32	??INVALID_GETELEM_INDEX_ERROR
??nisSpread
???%newUndefinedNode
1
??EremoveChildren
???addChildrenAfterG(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;)V
?
????charAt(I)C
?????java/lang/CharactertoString(C)Ljava/lang/String;
???visNormalOrOptChainGet
?visOptChainNode
?
?vreferencesSuper
x	EnullNode
?v
isGetOrSetKey
?visInvocationTarget
n
isFunction
?vreferencesOwnReceiver
?%getEndOfOptChainSegment
?5 convertToNonOptionalChainSegment
xcalli(Lcom/google/javascript/rhino/Node;[Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/rhino/Node;	!"#	FREE_CALL'Lcom/google/javascript/rhino/Node$Prop;
%&'putBooleanProp+(Lcom/google/javascript/rhino/Node$Prop;Z)V
?)*!signum
?,-.negate()Ljava/math/BigInteger;
x012bigint:(Ljava/math/BigInteger;)Lcom/google/javascript/rhino/Node;
45%
srcrefTree7JSC_INVALID_GETELEM_INDEX_ERROR9Array index not integer: {0}
;<=>?+com/google/javascript/jscomp/DiagnosticTypewarningS(Ljava/lang/String;Ljava/lang/String;)Lcom/google/javascript/jscomp/DiagnosticType;AJSC_FRACTIONAL_BITWISE_OPERANDCFractional bitwise operand: {0}@@J?(ZZ)VCodeLineNumberTableLocalVariableTablethis4Lcom/google/javascript/jscomp/PeepholeFoldConstants;MethodParametersoptimizeSubtreesubtree"Lcom/google/javascript/rhino/Node;
StackMapTableresultleftrightnchildnextcLjava/lang/Double;valuereplacementnewNodeoriginalTypeofNodeargumentNodetypeNameStringLjava/lang/String;numValuereplacementNodeleftLeftintValI
notIntValNode
bigintNotNode	doubleVal	bigintValparentleftValxRuntimeVisibleTypeAnnotations#Lorg/jspecify/annotations/Nullable;newRightnewTypeoplval
rightValuedroppedtyperightGrandparentrrfoldIsTypeSafe
leftParentrightParent
newStringNode
leftStringrightStringlValObjrValObjrval	exceptionLjava/lang/ArithmeticException;lValrVallllrvalueToCombineopTyperightValObjrightBigIntnodeoldNoderightValrvalIntbits	newNumberlvStrrvStrpeepholeOptimization;Lcom/google/javascript/jscomp/AbstractPeepholeOptimization;
willNegate
leftValueTyperightValueTypelvBigrvBiglvNumrvNuminvertnumberAsBigIntnegativeMeansBigintSmallerrvlvdestObjsrcObjstringValue	newString
objectTypeknownLength
lengthNodenameiindexintIndexcurrentelemspreadinnerLit	parentLitCpropendOfCurrentChainkey	tempValuehasSideEffectBesidesValuekeyIsGetter
nIsInvokedvaltree
SourceFilePeepholeFoldConstants.javaNestMembersBootstrapMethods?
?????$java/lang/invoke/StringConcatFactory?(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;??!Unexpected arithmetic operator: ?Unknown shift operator: InnerClasses	ValueType?%com/google/javascript/rhino/Node$PropProp?%java/lang/invoke/MethodHandles$Lookup?java/lang/invoke/MethodHandlesLookup ?/HIY*?*?*?
?JBC	DEK LMN	O%I??+??.?zEEKQW]]ccccntt*+?"?*+?&?*+?)?*+?,?*+?/?*+?2*+?6?*+?9?*+?q?N?3?N?-?N?'?N?!?N??N??,???Ù	?N?-?-??:*+??+?}*+???+?Jn13458:?<?=???@?B?C?F?G?K?L?N?O?S?T?[?\?]?^?_?a?dK4?]Q?LM?^Q?_Q?`aR??e?N^8%I5	s+??+??+?BM+??N,?+?*,??:?ݦ+??+??.?= e}?*?? ,?k?,?o9??
??+??????:+?}*-???,??+,??}*-??,?+?:,??,????Ù,??:?',??? ,??:????k?
??:?+?}*-???+?*,??:?;?????&???6??,??:+?}*-???*?	,?
+?*+?:?+?:+?}*-???+?+?J?4hj
kmnqr's)vTybzh{v|x??????????????????????????????????????	??? ?*?5?;?@?C?K?M?T?Y?a?g?l?o?q?K?hb?cQ?dQ?USQ*ef5gQahQaiZTj?sLMsVQ
fTQakQTl?RD???*?!?@?????9?	?!??NV>?IW+?+??+????J?KLMmZR@Nmn	oOLI?]+???,???O*-?s?G:,?"??%:?-??(-???Ù?*:?+?}*??*+???+?J>?????!?)?4?=?B?G?M?S?X?[?K4AcQ]LM]VQ]TQ]UQR?)?N
VTU[LI?i+?-??*??+?-?0?-??-???+?*,?s?+?*,-?B?3?-??:?$-??7?*,-???3?-?B:?+?:?-??.??-????????????????r?????z???;:?]??:?U?B:?M?E:?E?H:?=?K:?5?N:?-?Q:?%?T:??W:??Z:?
?]:?+??Y,????`:+?}*???J?-????"?$?,?.?:?C?P?Y?b?dg?????
??
	!$),1 4"9#<%A&D(F+M,Z-`/f1K\	@pQ_pQiLMiVQiTQiUQdpQgq>Z]QR!	??N
VTU^LI?Z*??+?+?0?+??+???+?*,?s?+?+?c:,??Y,?g-??`+?j?m:+?}*???J:56	9:=%>'B-C8DCEFCKFQGWHK>ZLMZVQZTQZUQ--r>K\QR		N
VTURLI
?+??:::+?:,?q:?ݥN??6		??t???w?,:-:?"*,?s?-:,:?+?z,-?}::?J??@+?B?7-?q:	*-?s?)	????t?	????w?	,:-:?!+?z+?}*???	*???+?JzOQ	RTVX Y(]@^C_I`QcTdZk^lemho~p?q?r?t?u?}?????????????Kp(@s	?.t?	?LM?VQ?TQ?UQ?kQ	?SQ?uQ?v>?l?R8?8
??
?0??N
VTUULI;?:,??:????.?Z..OOOOOZ*,?s?-:*,?̧+?z,-?}:?,:*-?̧?+?z+?}*???+?JJ??	?@?H?K?S?W?^?a?d?i?l?q?u?{?????K>?LM?VQ?TQ?UQ?SQ	}lSR?@?
N
VTU8LI
?+:+:,???,:,??M???-???-:-?BN???????,????????-??????:-?F:????,?"-??????????????6?S,??-????:	??-???,	?ɶ}*?B????W?,	?ɶ}*??????W+?Jn???
????"?*?3?;?C?I?P?V?]?i?v?~?????????????????Kf
?ASa	P?wQV?xQ?Uy?LM?VQ?TQ?UQ?zQ?{QR;
??8#@?=??N
VTU/LI?S,???-???,???
-???8*,??:*-??:?%? ????:+?}*???+?J&	?#*4BHNQ
KHB|Q#.}a*'~aSLMSVQSTQSUQR4N
VTUdLI?%*+,-??:?+??W*+??+?}?+?J	 #K4%LM%VQ%TQ%UQ	SQR?#N
VTU?LI??+???,*?
???-*?
????*,???*-???*+,-???*,??:*-??:??*,???*-?????+??.??%*(x??]?"?*????c????????????	-????????	,?????"?*????g????????????-??????????	,?????"?*????k????????????-???????	,?????.?)?????*????o????????????	,?????$?*???????????????????9??9
?+??.?l(-Yll&7H?
?~?9?I?
???9?8?
???9?'
???
s9???Y+????Ͽ*
???J?? !"%/&7.>/E1_2a6?8?9?;?<?=?>?@?B?CEI J/L5N7PAQ[U`VjWpZz[?^?`?a?b?d?g?h?j?m?o?p?q?p?s?w?x?z{|<~JM?[?^?l?o?v?x??????K?
JS[SlSS?LM?VQ?TQ?UQ?S>`ZEY?Z?s??
R]"???2###%	?>	?	??N
VTUno?LI??*,?:*-?:?????+??.??%-1=U?In?????+????+????+???޶???+??????+??:???+????+????+????+????+??.??%)#Q?????޶?	-?????޶?	,??????޶?-???????޶?	,?????????	-????????	,?????????	,?????????J?&????T?`?l?x??????????????????????????*?0?2?B?K?[?a?c?s?y?????????????KH????LM?VQ?TQ?UQ??????R&?T??N?-N
VTUno?vI},+???*?
?+???+?????????J??	??*?K,LM,VQR	@NV?vI},+???*?
?+???+???
??????J??	??*?K,LM,VQR	@NV??I?F'?
?)?
??
?``?'????'??'??' ??	'????J???(?>?D?K*FLMFSFsF?R'N
Ss?nogLI??+?:?"??7???%*-??:*-?:??f,??],?'?%,?B:?F::	*+	-??:

?:	*+	-??:

?#	??W,,?*?}
-??W-
?}*+??+?JR
%,?FLSWafjt y"$?'?(?)?-KpLM?QSF?QWB?Q	a8\Q
?LM?VQ?TQ?UQ??>%v?Z,o??RW?@????=???$??N
VTUaLI"?+????+*?
???k,???-???*+,-?-?,??? ,???0?*-?3?*+-?????-??? -???0?*,?3?*+,?????*+,-?6?*+,-?b:+??+?J6
134"6*8C9N:g;r>zB?C?D?FK4?SQ?LM??Q?TQ?UQR*##?N
?TU?pIR+,?}*,??,?JKL
MK LM?Q]QN	?]5vI},+????*?
?+???+???9??????JRS	UV*XK,LM,VQR	@NVXLI?*,??:*-??:*?4LM4VQ4TQ4UQ(S?!]QR??N
VTU
??I?
j+??:,??:?Q???Q??*+?T:*,?T:?5?0?U??U??ݰ?Y???]?+???6,???/+?B??%,?B??+?B??,?B???Ù???*+?a:*,?a:???b???]?*+?e:*,?e:	?:	?5????	?????]???	??????]??	?	?????f????????f??#+??,??+??,???Ù????ݰJ?!????#?*?4?J?N?a?i?p?z???????????????????????????)?3?B?T?b?f?Kz#x?a*q?aj??jTQjUQj?d?S^?S???????????Z???Z	RD?J????
@?9?%??@?-??@#N?TU?
hiI)x'??	?]?'????-?j?' ????-?j?'?m??ݰ'??p:*?b6???-?j????-?j?'?s????'?v?]-?j?JF??
???%?-?4?8???G?L?T?Y?a?h?l?K>x1?x{x??x??9??G1?fR

??
N1{??
?I^'+??N,??:-?y??y?-?
*+,?|?-??????-?????????-????Q????$*,?e:?	?ݧ*+??,?????-?Q????
-???$*+?e:?	?ݧ*??+??,???-??????&*+?a:*,?a:????]?-?Q?
-???????ݰ-????Q?????ݰ????ݰJ?" 'E
I`glrv}??????????!?"?#?$?%?)+-/2#5K\	g?Z??Z??????'??'TQ'UQ"?S?SR3?'????M????M??"
N
?TU
~I??+??N,??:-?y?[?y?S-??????-??.?:((,q???+??????,??????*+?e:*,?e:????????????]?*+?T:*,?T:?6?1?U??U??ݰ?Ù	??????+????,???|+?B??r,?B??h+?B??,?B???ÙT???*+??:*,??:???????????*+?a:*,?a:????]??ݰ+???
,???????ݰJ?&<=>@ A$CTFXI_JcLjMnOuP|Q?R?X?Y?Z?]?^?`?b?c?d?efhn$o+pCtJuQv[wf|j?x?|?K?
u(?Z|!?Z?y?a?r?a$??+??J??Q??????TQ?UQ{?Su?SR5?$??/

?)??@??-??B??9%"
N
?TUOPI*?*,???*-????ݰ?+?.?x.5RZbm07AH*,-???*,-?????*,-?|?*,-?|???*,-???*-,???*-,?????*,-???????Y??ϿJ6
?
???L?S?]?d?n?v?~?????K*????r>?TQ?UQR
7		

N?rTU(%I_+????+???	*+???+?J????KLMVQRNV$%I?K+???
+??????+???/+??M,???#,?0?+??N+????:+?}*-??+?J&	???"?0?5?>?D?I?K45kQ>?Q"'?QKLMKVQR@5NV
?vI^*?ֶ??*?ֶ?*??*?ֶ??J????KVQRNV?%I9g+????+?BM,??+?,????ÙF,?FN-??:?
*-??:?+?+??:??:+?}??W*???+?JJ?????"?'?+?3?:???A?G?N?T?\?b?e?KR0?a'>[Q:+?aGkQN?QgLMgVQ[?QR?????#NVKLI?O+???
+?ę???,???-???,*+,-???ǰ,???*+,-?˰,???*+,-?ΰ+?J&	???$?/?6?>?EMK*OLMOVQOTQOUQR	@N
VTU>%Iv?+?њ
+?ԙ???+?BM+??N,???*+,-?ǰ-׶Ùo6?,??.?8;,*,?s?+?,??6?,???6?+????%??w:*+??+?}?+?JV
 '/9<`hjps|"?%?&?'?(?*?-K><i?f??Q?LM?VQ?TQ ??aR@???0		@?NV?LI?	?+?ۙ+?*-??:*?RESJUOVZWfXkYv\|]?^?_K?$?Q4?YQE?Q?LM?VQ?TQ??a+^?Q.[[Q???Q?????{?	6SkQ
R<@?7???		? ??N
VT?
In*?(?*?+?/???*?/M,+?3?J
cdK ??lQ?QRCN	?l?IM%68?:??@B?:?	DF?ij?J,-126???????????"???@??@???




© 2015 - 2024 Weber Informatics LLC | Privacy Policy