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

com.groupbyinc.flux.transport.RemoteClusterService.class Maven / Gradle / Ivy

There is a newer version: 198
Show newest version
????4>2com/groupbyinc/flux/transport/RemoteClusterService0com/groupbyinc/flux/transport/RemoteClusterAwarejava/io/CloseableRemoteClusterService.java4com/groupbyinc/flux/transport/RemoteClusterService$24com/groupbyinc/flux/transport/RemoteClusterService$1
8com/groupbyinc/flux/common/settings/Setting$AffixSetting+com/groupbyinc/flux/common/settings/SettingAffixSettingjava/util/Map$Entry
java/util/MapEntry2com/groupbyinc/flux/transport/Transport$Connection'com/groupbyinc/flux/transport/Transport
Connection4com/groupbyinc/flux/common/settings/Setting$PropertyProperty%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandles LookupREMOTE_CONNECTIONS_PER_CLUSTER-Lcom/groupbyinc/flux/common/settings/Setting;BLcom/groupbyinc/flux/common/settings/Setting;)REMOTE_INITIAL_CONNECTION_TIMEOUT_SETTINGZLcom/groupbyinc/flux/common/settings/Setting;REMOTE_NODE_ATTRIBUTEALcom/groupbyinc/flux/common/settings/Setting;ENABLE_REMOTE_CLUSTERSBLcom/groupbyinc/flux/common/settings/Setting;REMOTE_CLUSTER_SKIP_UNAVAILABLE:Lcom/groupbyinc/flux/common/settings/Setting$AffixSetting;OLcom/groupbyinc/flux/common/settings/Setting$AffixSetting;DEFAULT_NODE_PREDICATELjava/util/function/Predicate;PLjava/util/function/Predicate;transportService0Lcom/groupbyinc/flux/transport/TransportService;numRemoteConnectionsIremoteClustersLjava/util/Map;ZLjava/util/Map;a(Lcom/groupbyinc/flux/common/settings/Settings;Lcom/groupbyinc/flux/transport/TransportService;)V1(Lcom/groupbyinc/flux/common/settings/Settings;)V9;
<java/util/Collections>emptyMap()Ljava/util/Map;@A
?B67	D23	F#$	HgetB(Lcom/groupbyinc/flux/common/settings/Settings;)Ljava/lang/Object;JK
Ljava/lang/IntegerNintValue()IPQ
OR45	Tthis4Lcom/groupbyinc/flux/transport/RemoteClusterService;settings.Lcom/groupbyinc/flux/common/settings/Settings;updateRemoteClusters=(Ljava/util/Map;Lcom/groupbyinc/flux/action/ActionListener;)Vjava/io/IOException\^containsKey(Ljava/lang/Object;)Z`ab"java/lang/IllegalArgumentExceptiond9remote clusters must not have the empty string as its keyf(Ljava/lang/String;)V9h
eijava/util/HashMapk()V9m
lnisEmpty()Zpqr)com/groupbyinc/flux/action/ActionListenert
onResponse(Ljava/lang/Object;)Vvwux4com/groupbyinc/flux/common/util/concurrent/CountDownzsize|Q}(I)V9
{?putAll(Ljava/util/Map;)V???entrySet()Ljava/util/Set;???
java/util/Set?iterator()Ljava/util/Iterator;????java/util/Iterator?hasNext?q??next()Ljava/lang/Object;????getKey???&(Ljava/lang/Object;)Ljava/lang/Object;J??5com/groupbyinc/flux/transport/RemoteClusterConnection?getValue???java/util/List??r,com/groupbyinc/flux/core/internal/io/IOUtils?close([Ljava/io/Closeable;)V??
??logger!Lorg/apache/logging/log4j/Logger;??	?java/lang/StringBuilder?
?n8failed to close remote cluster connections for cluster: ?append-(Ljava/lang/String;)Ljava/lang/StringBuilder;??
??java/lang/String?toString()Ljava/lang/String;??
??org/apache/logging/log4j/Logger?warn*(Ljava/lang/String;Ljava/lang/Throwable;)V????remove???XY	?getNodePredicateN(Lcom/groupbyinc/flux/common/settings/Settings;)Ljava/util/function/Predicate;??
??(Lcom/groupbyinc/flux/common/settings/Settings;Ljava/lang/String;Ljava/util/List;Lcom/groupbyinc/flux/transport/TransportService;ILjava/util/function/Predicate;)V9?
??put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;???"java/lang/invoke/LambdaMetafactory?metafactory?(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;??
???wlambda$updateRemoteClusters$2t(Lcom/groupbyinc/flux/common/util/concurrent/CountDown;Lcom/groupbyinc/flux/action/ActionListener;Ljava/lang/Void;)V??
??(Ljava/lang/Void;)V?accept?(Lcom/groupbyinc/flux/common/util/concurrent/CountDown;Lcom/groupbyinc/flux/action/ActionListener;)Lcom/groupbyinc/flux/common/CheckedConsumer;???lambda$updateRemoteClusters$3?(Lcom/groupbyinc/flux/common/util/concurrent/CountDown;Lcom/groupbyinc/flux/action/ActionListener;Lcom/groupbyinc/flux/transport/RemoteClusterConnection;Ljava/util/Map$Entry;Ljava/lang/Exception;)V??
??(Ljava/lang/Exception;)V?(Lcom/groupbyinc/flux/transport/RemoteClusterService;Lcom/groupbyinc/flux/common/util/concurrent/CountDown;Lcom/groupbyinc/flux/action/ActionListener;Lcom/groupbyinc/flux/transport/RemoteClusterConnection;Ljava/util/Map$Entry;)Ljava/util/function/Consumer;???wrapv(Lcom/groupbyinc/flux/common/CheckedConsumer;Ljava/util/function/Consumer;)Lcom/groupbyinc/flux/action/ActionListener;??u?updateSeedNodes>(Ljava/util/List;Lcom/groupbyinc/flux/action/ActionListener;)V??
??unmodifiableMap (Ljava/util/Map;)Ljava/util/Map;??
??eLjava/io/IOException;remote7Lcom/groupbyinc/flux/transport/RemoteClusterConnection;finalRemoteentrykLjava/util/Map$Entry;>;Ljava/util/Map$Entry;	countDown6Lcom/groupbyinc/flux/common/util/concurrent/CountDown;seedseLjava/util/Map;>;connectionListener=Lcom/groupbyinc/flux/action/ActionListener;+Lcom/groupbyinc/flux/action/ActionListener;($	exists1(Lcom/groupbyinc/flux/common/settings/Settings;)Z
/0	alambda$getNodePredicate$4E(Ljava/lang/String;Lcom/groupbyinc/flux/cluster/node/DiscoveryNode;)Z
3(Lcom/groupbyinc/flux/cluster/node/DiscoveryNode;)Ztest2(Ljava/lang/String;)Ljava/util/function/Predicate; java/util/function/Predicate"and>(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;$%#&	attributeLjava/lang/String;isCrossClusterSearchEnabledisRemoteNodeConnectedisNodeConnected,
?-
remoteClusternode0Lcom/groupbyinc/flux/cluster/node/DiscoveryNode;groupIndicesu(Lcom/groupbyinc/flux/action/support/IndicesOptions;[Ljava/lang/String;Ljava/util/function/Predicate;)Ljava/util/Map;*q
4groupClusterIndicesB([Ljava/lang/String;Ljava/util/function/Predicate;)Ljava/util/Map;67
8*com/groupbyinc/flux/action/OriginalIndices:?}toArray(([Ljava/lang/Object;)[Ljava/lang/Object;=>??[Ljava/lang/String;AI([Ljava/lang/String;Lcom/groupbyinc/flux/action/support/IndicesOptions;)V9C
;D"com/groupbyinc/flux/common/StringsFEMPTY_ARRAYHA	GIclusterAliasoriginalIndices$Ljava/util/List;Ljava/util/List;MLjava/util/Map$Entry;>;groupedIndicesGLjava/util/Map;>;indicesOptions3Lcom/groupbyinc/flux/action/support/IndicesOptions;indicesindexExists2Ljava/util/function/Predicate;originalIndicesMapOLjava/util/Map;isRemoteClusterRegistered(Ljava/lang/String;)ZclusterNamecollectSearchShards?(Lcom/groupbyinc/flux/action/support/IndicesOptions;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lcom/groupbyinc/flux/action/ActionListener;)V&java/util/concurrent/ConcurrentHashMap^
_n+java/util/concurrent/atomic/AtomicReferencea
bn1com/groupbyinc/flux/action/support/IndicesOptionsdno such remote cluster: f()[Ljava/lang/String;Th
;iJcom/groupbyinc/flux/action/admin/cluster/shards/ClusterSearchShardsRequestk([Ljava/lang/String;)V9m
ln?(Lcom/groupbyinc/flux/action/support/IndicesOptions;)Lcom/groupbyinc/flux/action/admin/cluster/shards/ClusterSearchShardsRequest;Rp
lqlocalD(Z)Lcom/groupbyinc/flux/action/support/master/MasterNodeReadRequest;st
lu
preference`(Ljava/lang/String;)Lcom/groupbyinc/flux/action/admin/cluster/shards/ClusterSearchShardsRequest;wx
lyrouting{x
l|?(Lcom/groupbyinc/flux/transport/RemoteClusterService;Ljava/util/Map;Ljava/lang/String;Lcom/groupbyinc/flux/common/util/concurrent/CountDown;Ljava/util/concurrent/atomic/AtomicReference;Lcom/groupbyinc/flux/action/ActionListener;)V9~
fetchSearchShardsz(Lcom/groupbyinc/flux/action/admin/cluster/shards/ClusterSearchShardsRequest;Lcom/groupbyinc/flux/action/ActionListener;)V??
??remoteClusterConnectionsearchShardsRequestLLcom/groupbyinc/flux/action/admin/cluster/shards/ClusterSearchShardsRequest;ULjava/util/Map$Entry;remoteIndicesByClusterlistener?Lcom/groupbyinc/flux/action/ActionListener;>;responsesCountDownsearchShardsResponsespLjava/util/Map;transportExceptiongLjava/util/concurrent/atomic/AtomicReference;-Ljava/util/concurrent/atomic/AtomicReference;
getConnectionx(Lcom/groupbyinc/flux/cluster/node/DiscoveryNode;Ljava/lang/String;)Lcom/groupbyinc/flux/transport/Transport$Connection;f(Lcom/groupbyinc/flux/cluster/node/DiscoveryNode;)Lcom/groupbyinc/flux/transport/Transport$Connection;??
??cluster
connectionensureConnected@(Ljava/lang/String;Lcom/groupbyinc/flux/action/ActionListener;)V.(Lcom/groupbyinc/flux/action/ActionListener;)V??
??H(Ljava/lang/String;)Lcom/groupbyinc/flux/transport/Transport$Connection;6()Lcom/groupbyinc/flux/transport/Transport$Connection;??
??getRemoteClusterNameskeySet???listenForUpdates8(Lcom/groupbyinc/flux/common/settings/ClusterSettings;)V??
?,-	?'(Ljava/lang/Object;Ljava/lang/Object;)V?updateSkipUnavailable((Ljava/lang/String;Ljava/lang/Boolean;)V??
???U(Lcom/groupbyinc/flux/transport/RemoteClusterService;)Ljava/util/function/BiConsumer;???lambda$listenForUpdates$5??
??!()Ljava/util/function/BiConsumer;???3com/groupbyinc/flux/common/settings/ClusterSettings?addAffixUpdateConsumer{(Lcom/groupbyinc/flux/common/settings/Setting$AffixSetting;Ljava/util/function/BiConsumer;Ljava/util/function/BiConsumer;)V??
??clusterSettings5Lcom/groupbyinc/flux/common/settings/ClusterSettings;java/lang/Boolean?booleanValue?q
??(Z)V??
??skipUnavailableLjava/lang/Boolean;updateRemoteCluster%(Ljava/lang/String;Ljava/util/List;)Vlambda$updateRemoteCluster$6??
??.()Lcom/groupbyinc/flux/common/CheckedConsumer;???lambda$updateRemoteCluster$7??
??()Ljava/util/function/Consumer;???P(Ljava/lang/String;Ljava/util/List;Lcom/groupbyinc/flux/action/ActionListener;)V??
?	addresses.Ljava/util/List;stream()Ljava/util/stream/Stream;?????lambda$updateRemoteCluster$8`(Ljava/lang/String;Ljava/net/InetSocketAddress;)Lcom/groupbyinc/flux/cluster/node/DiscoveryNode;??
??N(Ljava/net/InetSocketAddress;)Lcom/groupbyinc/flux/cluster/node/DiscoveryNode;?apply1(Ljava/lang/String;)Ljava/util/function/Function;???java/util/stream/Stream?map8(Ljava/util/function/Function;)Ljava/util/stream/Stream;????java/util/stream/Collectors?toList()Ljava/util/stream/Collector;??
??collect0(Ljava/util/stream/Collector;)Ljava/lang/Object;?singletonMap5(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
?Z[
	nodesBLjava/util/List;initializeRemoteClustersjava/lang/InterruptedException%java/util/concurrent/TimeoutExceptionjava/lang/Exception&$	)com/groupbyinc/flux/common/unit/TimeValue4com/groupbyinc/flux/action/support/PlainActionFuture
nbuildRemoteClustersSeeds?(Lcom/groupbyinc/flux/common/settings/Settings;)Ljava/util/Map;
millis()J 
!java/util/concurrent/TimeUnit#MILLISECONDSLjava/util/concurrent/TimeUnit;%&	$'4(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;J)
*java/lang/Thread,
currentThread()Ljava/lang/Thread;./
-0	interrupt2m
-3.failed to connect to remote clusters within {}5
?'(Ljava/lang/String;Ljava/lang/Object;)V?8?9java/lang/IllegalStateException;$failed to connect to remote clusters=9?
<? Ljava/lang/InterruptedException;ex'Ljava/util/concurrent/TimeoutException;Ljava/lang/Exception;	timeValue+Lcom/groupbyinc/flux/common/unit/TimeValue;futureHLcom/groupbyinc/flux/action/support/PlainActionFuture;6Lcom/groupbyinc/flux/action/support/PlainActionFuture;values()Ljava/util/Collection;JKL(Ljava/lang/Iterable;)V?N
?OgetRemoteConnectionInfos	emptyList()Ljava/util/List;RS
?T8com/groupbyinc/flux/action/support/GroupedActionListenerVE(Lcom/groupbyinc/flux/action/ActionListener;ILjava/util/Collection;)V9X
WYjava/util/Collection[\?getConnectionInfo^?
?_actionListenerpLcom/groupbyinc/flux/action/support/GroupedActionListener;:Lcom/groupbyinc/flux/action/support/GroupedActionListener;yLcom/groupbyinc/flux/action/ActionListener;>;collectNodes=(Ljava/util/Set;Lcom/groupbyinc/flux/action/ActionListener;)Vno such remote cluster: [g]i	onFailurek?ul?}lambda$collectNodes$9D(Ljava/lang/String;)Lcom/groupbyinc/flux/cluster/node/DiscoveryNode;op
qrp()Ljava/util/function/Function;?uvjava/util/function/Functionx?(Lcom/groupbyinc/flux/transport/RemoteClusterService;Ljava/util/Map;Ljava/lang/String;Lcom/groupbyinc/flux/common/util/concurrent/CountDown;Lcom/groupbyinc/flux/action/ActionListener;Ljava/util/function/Function;)V9z
	{e?
?}clusters#Ljava/util/Set;Ljava/util/Set;?Lcom/groupbyinc/flux/action/ActionListener;>;
clusterMap?Ljava/util/Map;>;nullFunctionaLjava/util/function/Function;Ljava/util/function/Function;getRemoteClusterClientb(Lcom/groupbyinc/flux/threadpool/ThreadPool;Ljava/lang/String;)Lcom/groupbyinc/flux/client/Client;.com/groupbyinc/flux/transport/TransportService?getRemoteClusterService6()Lcom/groupbyinc/flux/transport/RemoteClusterService;??
????
?contains?a??unknown cluster alias [?6com/groupbyinc/flux/transport/RemoteClusterAwareClient??(Lcom/groupbyinc/flux/common/settings/Settings;Lcom/groupbyinc/flux/threadpool/ThreadPool;Lcom/groupbyinc/flux/transport/TransportService;Ljava/lang/String;)V9?
??
threadPool+Lcom/groupbyinc/flux/threadpool/ThreadPool;s5com/groupbyinc/flux/common/transport/TransportAddress?(Ljava/net/InetSocketAddress;)V9?
??#?
??com/groupbyinc/flux/Version?CURRENTLcom/groupbyinc/flux/Version;??	??minimumCompatibilityVersion()Lcom/groupbyinc/flux/Version;??
??.com/groupbyinc/flux/cluster/node/DiscoveryNode?i(Ljava/lang/String;Lcom/groupbyinc/flux/common/transport/TransportAddress;Lcom/groupbyinc/flux/Version;)V9?
??addressLjava/net/InetSocketAddress;transportAddress7Lcom/groupbyinc/flux/common/transport/TransportAddress;idversionxLjava/lang/Void;value
getAttributes?A
??false?getOrDefault???#com/groupbyinc/flux/common/Booleans?parseBoolean?Z
??fastForward?q
{?isClosed?q
??(failed to update seed list for cluster: ?	exceptionq
{?responselambda$static$1
getVersion??
??isCompatible (Lcom/groupbyinc/flux/Version;)Z??
??isMasterNode?q
??
isDataNode?q
??isIngestNode?q
??lambda$static$0A(Ljava/lang/String;)Lcom/groupbyinc/flux/common/settings/Setting;	NodeScope6Lcom/groupbyinc/flux/common/settings/Setting$Property;??	?Dynamic??	?boolSettingy(Ljava/lang/String;Z[Lcom/groupbyinc/flux/common/settings/Setting$Property;)Lcom/groupbyinc/flux/common/settings/Setting;??
?key%search.remote.connections_per_cluster?
intSettingz(Ljava/lang/String;II[Lcom/groupbyinc/flux/common/settings/Setting$Property;)Lcom/groupbyinc/flux/common/settings/Setting;??
?%search.remote.initial_connect_timeout?timeValueSeconds.(J)Lcom/groupbyinc/flux/common/unit/TimeValue;
positiveTimeSetting?(Ljava/lang/String;Lcom/groupbyinc/flux/common/unit/TimeValue;[Lcom/groupbyinc/flux/common/settings/Setting$Property;)Lcom/groupbyinc/flux/common/settings/Setting;
search.remote.node.attr
simpleStringx(Ljava/lang/String;[Lcom/groupbyinc/flux/common/settings/Setting$Property;)Lcom/groupbyinc/flux/common/settings/Setting;
search.remote.connect*$	search.remote.skip_unavailable??
?	vREMOTE_CLUSTERS_SEEDS-	affixKeySetting?(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Function;[Lcom/groupbyinc/flux/common/settings/Setting$AffixSetting;)Lcom/groupbyinc/flux/common/settings/Setting$AffixSetting; !
"?
$% ()Ljava/util/function/Predicate;'
(	SignatureCodeLocalVariableTableLineNumberTableLocalVariableTypeTable
StackMapTable?(Ljava/util/Map;>;Lcom/groupbyinc/flux/action/ActionListener;)V?(Lcom/groupbyinc/flux/common/settings/Settings;)Ljava/util/function/Predicate;?(Lcom/groupbyinc/flux/action/support/IndicesOptions;[Ljava/lang/String;Ljava/util/function/Predicate;)Ljava/util/Map;F(Lcom/groupbyinc/flux/action/support/IndicesOptions;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lcom/groupbyinc/flux/action/ActionListener;>;)VR(Ljava/lang/String;Lcom/groupbyinc/flux/action/ActionListener;)V%()Ljava/util/Set;C(Ljava/lang/String;Ljava/util/List;)V?(Ljava/lang/String;Ljava/util/List;Lcom/groupbyinc/flux/action/ActionListener;)V
Exceptions|(Lcom/groupbyinc/flux/action/ActionListener;>;)V?(Ljava/util/Set;Lcom/groupbyinc/flux/action/ActionListener;>;)VBootstrapMethods
SourceFileInnerClasses1	#$*%&$*'($*)*$*+,-*./0*12345B67*8 9:+q#*+?=*?C?E*,?G*?I+?M?O?S?U?, #VW#XY#23-mjno"p"Z[+?	[+_?c?
?eYg?j??lY?oN+?s?
,?y?%?{Y+?~??:-*?E??+????:???????:*?E??????:???????L?YS???,:*????Y???????????????-????W??}?F??Y*??????????*?G*?U*?ʸη?:-??????W:????,??*,????????*-???E????],\	?'???('l??[VW[	7[
>67.*l?[	
[>68-fxy{|&}0??I?l???????????????????	??$?(?O?R?Z?/L??%{??Ku{??](?G?-u*0??+q(?*???*?M??L?+?!?'???,()(XY-?
??$?/$*1*q+G*?E?s???,VW-?/@++P*?E+????,?.?, VW/)01-?23+?
??lY?o:*?5??*,-?9:????:???P???:????:????:	?;Y		?<???@?B+?E??W???_?c?_?;Y?J+?E??W?_?;Y,+?E??W?,\	H2K)T&LN	<>?P7?VW?RS?TA?U0	?W7.4T&LM	<>O?PQ?UV	?WX->?	???<?H?T?`?t?z?}?????????/?&??V? *2YZ+?*?E+?c?,VW[)-?\]+G
λ{Y?~??:?_Y?`:?bY?c:????:		????	???:

????:*?E????:? ?eY??Y??g???????j?
???;?j:
?lY
?o+?r?v?l,?z-?}:?Y*??????f?,?Rx[)bh??7TA
???F?
?VW?RS?w)?{)??7??
????7"???.4F??
??X??????"???->???"?F?R?b?g?????????????/U?0
e??u{b??S???H	e??u{b*3??+?4*?E,????N-??eY??Y??g??,?????j?-+???,*4VW4014?)&?-
./?.???+?4*?E+????N-??eY??Y??g??+?????j?-,???,*4VW4K)4?
&?.4?-.3/?.?*4??+?3*?E+????M,??eY??Y??g??+?????j?,???, 3VW3?)%?- !".$/?.???+4
*?E???,
VW-)*5??+T*+??+??*?????ñ,VW??-./1 ??+}*?E+????N-?-,?ʶͱ,*VWK)??
-4568/????+h*+,????????, VWK)?N.??-
;<*6??+?*,??+????????:*+?-?
?,4*VW*K)*?N*
N. *??*-BGH)I*7
m+\c?*?ʶM?L?Y?M*?ʸN*-,?
,+?"?(?+W?2:?1?4?':*??6+?7?:?:??@??$03$0>$0S,H5?A@BCU
?DcVWUEFMGIE	7.MGHE	
->PQRS$U0\3V5W;\>X@YP\SZU[b]/!?3JT?m+;
*?E?M?P?,
VW-
ab8]Q?+Y*?EM,?s?+?U?y?A?WY+,?~?U?ZN,?M?]:???????:-?`???,4O?,,acYVWY?
T67. ,,abY?dT68-&	efgi j,kOlUmXo/??W??*9ef+?	
?*?EN+??:???F????:-?c?,,?eY??Y??h????j?????j?m?????lY?o:?{Y+?n??:?w:+??:???5????:-????:		?	Y*,?|?~??DZ,f
#4?)??	?#?)?VW????
?67c[?7rLyE??.4??????68c[??yE??-:vw#x.yVzW|Z~cr?y?????????/3?
??I??&?u{y??;*:??+?G*?G????,???%?eY??Y?????,??j?????j???Y*??+*?G,???, GVWG??GK)-??5?/5
op+,?,?)-?
??+?9??Y+??M??Y??*?????,??????N????:??Y-,???,49K)9??	0??%?)-??-C	D%E-F
??++?,?D-;
??++?,??-;8
??+5?,K)??-0
+H+??*ù????ˬ,()01-???+??+?Ι,?m-?њ+*????Y??Ӷ????????????,>?VW??
????D-????>?/.
??+^*?֙
+,?y?, 
??-???/8
?+f(??*?۶ߙ*??*??
*????,(01-ef'e/"@
??+@*?Y??SY??S???,?)-c?m+?y??Y??S???I???Y??S?	??Y??S???Y??S?????
Y?S?#???)??-"GMN.VA^Uajbpe;p???????????????????????????????st???&<=:	
			@!"




© 2015 - 2024 Weber Informatics LLC | Privacy Policy