From 8fb9df97511532a28ac8225282318dd1f31be0e4 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 3 Jun 2015 18:35:38 -0700 Subject: [PATCH 001/314] delete dead test code --- .../com/zerotier/one/AndroidFileProvider.java | 43 ---- java/src/com/zerotier/one/DataStore.java | 73 ------- .../zerotier/one/DataStoreFileProvider.java | 12 -- .../com/zerotier/one/JavaFileProvider.java | 46 ---- java/src/com/zerotier/one/OneService.java | 204 ------------------ 5 files changed, 378 deletions(-) delete mode 100644 java/src/com/zerotier/one/AndroidFileProvider.java delete mode 100644 java/src/com/zerotier/one/DataStore.java delete mode 100644 java/src/com/zerotier/one/DataStoreFileProvider.java delete mode 100644 java/src/com/zerotier/one/JavaFileProvider.java delete mode 100644 java/src/com/zerotier/one/OneService.java diff --git a/java/src/com/zerotier/one/AndroidFileProvider.java b/java/src/com/zerotier/one/AndroidFileProvider.java deleted file mode 100644 index 0988f9dfa..000000000 --- a/java/src/com/zerotier/one/AndroidFileProvider.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zerotier.one; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; - -import android.content.Context; -import android.util.Log; - -public class AndroidFileProvider implements DataStoreFileProvider { - private static final String TAG = "AndroidFileProvider"; - - Context _ctx; - - public AndroidFileProvider(Context ctx) { - this._ctx = ctx; - } - - @Override - public FileInputStream getInputFileStream(String name) - throws FileNotFoundException { - Log.d(TAG, "Returning FileInputStream for: " + name); - return _ctx.openFileInput(name); - } - - @Override - public FileOutputStream getOutputFileStream(String name) - throws FileNotFoundException { - Log.d(TAG, "Returning FileOutputStream for: " + name); - return _ctx.openFileOutput(name, Context.MODE_PRIVATE); - } - - @Override - public void deleteFile(String name) throws IOException { - boolean success = _ctx.deleteFile(name); - if(!success) - { - throw new IOException("Unable to delete file."); - } - } - -} diff --git a/java/src/com/zerotier/one/DataStore.java b/java/src/com/zerotier/one/DataStore.java deleted file mode 100644 index d15b2d3d2..000000000 --- a/java/src/com/zerotier/one/DataStore.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.zerotier.one; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; - -import com.zerotier.sdk.DataStoreGetListener; -import com.zerotier.sdk.DataStorePutListener; - -public class DataStore implements DataStoreGetListener, DataStorePutListener { - - private DataStoreFileProvider _provider; - - public DataStore(DataStoreFileProvider provider) { - this._provider = provider; - } - - @Override - public int onDataStorePut(String name, byte[] buffer, boolean secure) { - System.out.println("Writing File: " + name); - try { - FileOutputStream fos = _provider.getOutputFileStream(name); - fos.write(buffer); - fos.close(); - return 0; - } catch (FileNotFoundException fnf) { - fnf.printStackTrace(); - return -1; - } catch (IOException io) { - io.printStackTrace(); - return -2; - } - } - - @Override - public int onDelete(String name) { - System.out.println("Deleting File: " + name); - try { - _provider.deleteFile(name); - return 0; - } catch (IOException ex) { - ex.printStackTrace(); - return -1; - } - } - - @Override - public long onDataStoreGet(String name, byte[] out_buffer, - long bufferIndex, long[] out_objectSize) { - System.out.println("Reading File: " + name); - try { - FileInputStream fin = _provider.getInputFileStream(name); - out_objectSize[0] = fin.getChannel().size(); - if(bufferIndex > 0) - { - fin.skip(bufferIndex); - } - int read = fin.read(out_buffer); - fin.close(); - return read; - } catch (FileNotFoundException fnf) { - // Can't read a file that doesn't exist! - out_objectSize[0] = 0; - return 0; - } catch (IOException io) { - io.printStackTrace(); - return -2; - } - } - - -} diff --git a/java/src/com/zerotier/one/DataStoreFileProvider.java b/java/src/com/zerotier/one/DataStoreFileProvider.java deleted file mode 100644 index ffe078eb4..000000000 --- a/java/src/com/zerotier/one/DataStoreFileProvider.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zerotier.one; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; - -public interface DataStoreFileProvider { - FileInputStream getInputFileStream(String name) throws FileNotFoundException; - FileOutputStream getOutputFileStream(String name) throws FileNotFoundException; - void deleteFile(String name) throws IOException; -} diff --git a/java/src/com/zerotier/one/JavaFileProvider.java b/java/src/com/zerotier/one/JavaFileProvider.java deleted file mode 100644 index 41889e2f1..000000000 --- a/java/src/com/zerotier/one/JavaFileProvider.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.zerotier.one; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; - -public class JavaFileProvider implements DataStoreFileProvider { - private String _path; - - public JavaFileProvider(String path) { - this._path = path; - } - - @Override - public FileInputStream getInputFileStream(String name) - throws FileNotFoundException { - File f = new File(_path + File.separator + name); - return new FileInputStream(f); - } - - @Override - public FileOutputStream getOutputFileStream(String name) - throws FileNotFoundException { - File f = new File(_path + File.separator + name); - if(!f.exists()) - { - try { - f.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return new FileOutputStream(f); - } - - @Override - public void deleteFile(String name) throws IOException { - File f = new File(_path + File.separator + name); - boolean success = f.delete(); - if(!success) { - throw new IOException("Unable to delete file: " + _path + File.pathSeparator + name); - } - } -} diff --git a/java/src/com/zerotier/one/OneService.java b/java/src/com/zerotier/one/OneService.java deleted file mode 100644 index 1d3e34c85..000000000 --- a/java/src/com/zerotier/one/OneService.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * ZeroTier One - Network Virtualization Everywhere - * Copyright (C) 2011-2015 ZeroTier, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * -- - * - * ZeroTier may be used and distributed under the terms of the GPLv3, which - * are available at: http://www.gnu.org/licenses/gpl-3.0.html - * - * If you would like to embed ZeroTier into a commercial application or - * redistribute it in a modified binary form, please contact ZeroTier Networks - * LLC. Start here: http://www.zerotier.com/ - */ - - -package com.zerotier.one; - -import java.io.IOException; -import java.net.DatagramPacket; -import java.net.DatagramSocket; -import java.net.InetSocketAddress; -import java.net.ServerSocket; -import java.net.SocketException; -import java.net.SocketTimeoutException; - -import com.zerotier.sdk.Event; -import com.zerotier.sdk.EventListener; -import com.zerotier.sdk.Node; -import com.zerotier.sdk.PacketSender; -import com.zerotier.sdk.ResultCode; -import com.zerotier.sdk.Version; -import com.zerotier.sdk.VirtualNetworkConfig; -import com.zerotier.sdk.VirtualNetworkConfigListener; -import com.zerotier.sdk.VirtualNetworkConfigOperation; -import com.zerotier.sdk.VirtualNetworkFrameListener; - -public class OneService extends Thread implements Runnable, PacketSender, - EventListener, VirtualNetworkConfigListener, - VirtualNetworkFrameListener { - private Node _node; - private int _port; - - private DatagramSocket _udpSocket; - private ServerSocket _tcpSocket; - private DataStore _ds; - private long _nextBackgroundTaskDeadline = 0; - - private final Thread _udpReceiveThread = new Thread() { - @Override - public void run() { - try { - long[] bgtask = new long[1]; - byte[] buffer = new byte[16384]; - while(true) { - - bgtask[0] = 0; - DatagramPacket p = new DatagramPacket(buffer, buffer.length); - - try { - _udpSocket.receive(p); - if(p.getLength() > 0) - { - System.out.println("Got Data From: " + p.getAddress().toString() +":" + p.getPort()); - - _node.processWirePacket(System.currentTimeMillis(), new InetSocketAddress(p.getAddress(), p.getPort()), p.getData(), bgtask); - _nextBackgroundTaskDeadline = bgtask[0]; - } - } catch (SocketTimeoutException e) {} - } - } catch (Exception e) { - e.printStackTrace(); - } - } - }; - - - public OneService(DataStoreFileProvider prov, int port) { - this._port = port; - this._ds = new DataStore(prov); - - try { - _udpSocket = new DatagramSocket(_port); - _udpSocket.setSoTimeout(100); - _tcpSocket = new ServerSocket(); - _tcpSocket.bind(new InetSocketAddress("127.0.0.1", _port)); - } catch (SocketException e) { - e.printStackTrace(); - return; - } catch (IOException e) { - e.printStackTrace(); - return; - } - - _udpReceiveThread.start(); - - _node = new Node( - System.currentTimeMillis(), - _ds, - _ds, - this, - this, - this, - this); - } - - @Override - public void run() { - if(_node == null) - return; - - while(true) { - try { - - long dl = _nextBackgroundTaskDeadline; - long now = System.currentTimeMillis(); - - if (dl <= now) { - long[] returnDeadline = {0}; - ResultCode rc = _node.processBackgroundTasks(now, returnDeadline); - _nextBackgroundTaskDeadline = returnDeadline[0]; - - if(rc != ResultCode.RESULT_OK) { - System.out.println(rc.toString()); - } - } - - long delay = (dl > now) ? (dl - now) : 100; - Thread.sleep(delay); - - } catch (Exception ex) { - System.out.println("Exception in run loop: " + ex.getMessage()); - ex.printStackTrace(); - } - } - } - - @Override - public int onSendPacketRequested(InetSocketAddress addr, byte[] packetData) { - System.out.println("onSendPacketRequested to: " + addr.getHostString() +":"+ addr.getPort() + " "); - - if(_udpSocket == null) - return -1; - try { - DatagramPacket p = new DatagramPacket(packetData, packetData.length, addr); - _udpSocket.send(p); - System.out.println("Sent"); - } catch (Exception e) { - System.out.println("Error sending datagram: " + e.getMessage()); - return -1; - } - return 0; - } - - @Override - public void onVirtualNetworkFrame(long nwid, long srcMac, long destMac, - long etherType, long vlanId, byte[] frameData) { - // TODO Auto-generated method stub - - } - - @Override - public int onNetworkConfigurationUpdated(long nwid, - VirtualNetworkConfigOperation op, VirtualNetworkConfig config) { - // TODO Auto-generated method stub - return 0; - } - - @Override - public void onEvent(Event event) { - // TODO Auto-generated method stub - - } - - @Override - public void onNetworkError(Event event, InetSocketAddress source) { - // TODO Auto-generated method stub - - } - - @Override - public void onOutOfDate(Version newVersion) { - // TODO Auto-generated method stub - - } - - @Override - public void onTrace(String message) { - // TODO Auto-generated method stub - - } -} From b84dba3ecb2f750f5b5fda39544e20f741f961a4 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 3 Jun 2015 21:29:07 -0700 Subject: [PATCH 002/314] more logging --- java/jni/com_zerotierone_sdk_Node.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index f04058130..c84524fa8 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -416,10 +416,15 @@ namespace { { // set operation jbyteArray bufferObj = env->NewByteArray(bufferSize); + if(env->ExceptionCheck() || bufferObj == NULL) + { + LOGE("Error creating byte array buffer!"); + return -4; + } + env->SetByteArrayRegion(bufferObj, 0, bufferSize, (jbyte*)buffer); bool bsecure = secure != 0; - return env->CallIntMethod(ref->dataStorePutListener, dataStorePutCallbackMethod, nameStr, bufferObj, bsecure); @@ -736,12 +741,14 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( if(node == NULL) { // cannot find valid node. We should never get here. + LOGE("Couldn't find a valid node!"); return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL); } unsigned int nbtd_len = env->GetArrayLength(out_nextBackgroundTaskDeadline); if(nbtd_len < 1) { + LOGE("nbtd_len < 1"); return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL); } @@ -751,6 +758,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( jclass inetAddressClass = cache.findClass("java/net/InetAddress"); if(inetAddressClass == NULL) { + LOGE("Can't find InetAddress class"); // can't find java.net.InetAddress return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL); } @@ -849,6 +857,10 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( packetData, packetLength, &nextBackgroundTaskDeadline); + if(rc != ZT1_RESULT_OK) + { + LOGE("ZT1_Node_processWirePacket returned: %d", rc); + } jlong *outDeadline = env->GetLongArrayElements(out_nextBackgroundTaskDeadline, NULL); outDeadline[0] = (jlong)nextBackgroundTaskDeadline; From 7cc64c5cb69f2962d32ca41f6dc12499964d22a7 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 3 Jun 2015 21:29:19 -0700 Subject: [PATCH 003/314] Might help to set the enabled field on a VirtualNetworkConfig object :) --- java/jni/ZT1_jniutils.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/java/jni/ZT1_jniutils.cpp b/java/jni/ZT1_jniutils.cpp index e6404e87e..36f68f9e2 100644 --- a/java/jni/ZT1_jniutils.cpp +++ b/java/jni/ZT1_jniutils.cpp @@ -822,6 +822,7 @@ jobject newNetworkConfig(JNIEnv *env, const ZT1_VirtualNetworkConfig &vnetConfig env->SetBooleanField(vnetConfigObj, dhcpField, vnetConfig.dhcp); env->SetBooleanField(vnetConfigObj, bridgeField, vnetConfig.bridge); env->SetBooleanField(vnetConfigObj, broadcastEnabledField, vnetConfig.broadcastEnabled); + env->SetBooleanField(vnetConfigObj, enabledField, vnetConfig.enabled); env->SetIntField(vnetConfigObj, portErrorField, vnetConfig.portError); jclass multicastGroupClass = cache.findClass("com/zerotier/sdk/MulticastGroup"); From ced040c5033bd61a963e65e8e8525459c4b8b59d Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 9 Jun 2015 19:38:05 -0700 Subject: [PATCH 004/314] Logging and adding .equals() methods to MulticastGroup and VirtualNetworkCofnig --- java/jni/ZT1_jniutils.cpp | 10 ++--- java/jni/com_zerotierone_sdk_Node.cpp | 12 +++--- java/src/com/zerotier/sdk/MulticastGroup.java | 4 ++ .../zerotier/sdk/VirtualNetworkConfig.java | 38 +++++++++++++++++++ 4 files changed, 54 insertions(+), 10 deletions(-) diff --git a/java/jni/ZT1_jniutils.cpp b/java/jni/ZT1_jniutils.cpp index 36f68f9e2..1e8a48bff 100644 --- a/java/jni/ZT1_jniutils.cpp +++ b/java/jni/ZT1_jniutils.cpp @@ -343,18 +343,18 @@ jobject newInetSocketAddress(JNIEnv *env, const sockaddr_storage &addr) { case AF_INET6: { - LOGD("IPV6 Address"); + LOGV("IPV6 Address"); sockaddr_in6 *ipv6 = (sockaddr_in6*)&addr; port = ntohs(ipv6->sin6_port); - LOGD("Port %d", port); + LOGV("Port %d", port); } break; case AF_INET: { - LOGD("IPV4 Address"); + LOGV("IPV4 Address"); sockaddr_in *ipv4 = (sockaddr_in*)&addr; port = ntohs(ipv4->sin_port); - LOGD("Port: %d", port); + LOGV("Port: %d", port); } break; default: @@ -818,7 +818,7 @@ jobject newNetworkConfig(JNIEnv *env, const ZT1_VirtualNetworkConfig &vnetConfig } env->SetObjectField(vnetConfigObj, typeField, typeObject); - env->SetIntField(vnetConfigObj, mtuField, vnetConfig.mtu); + env->SetIntField(vnetConfigObj, mtuField, (int)vnetConfig.mtu); env->SetBooleanField(vnetConfigObj, dhcpField, vnetConfig.dhcp); env->SetBooleanField(vnetConfigObj, bridgeField, vnetConfig.bridge); env->SetBooleanField(vnetConfigObj, broadcastEnabledField, vnetConfig.broadcastEnabled); diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index c84524fa8..2a90bb85b 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -92,7 +92,7 @@ namespace { enum ZT1_VirtualNetworkConfigOperation operation, const ZT1_VirtualNetworkConfig *config) { - LOGD("VritualNetworkConfigFunctionCallback"); + LOGV("VritualNetworkConfigFunctionCallback"); JniRef *ref = (JniRef*)userData; JNIEnv *env = NULL; ref->jvm->GetEnv((void**)&env, JNI_VERSION_1_6); @@ -142,7 +142,9 @@ namespace { const void *frameData, unsigned int frameLength) { - LOGD("VirtualNetworkFrameFunctionCallback"); + LOGV("VirtualNetworkFrameFunctionCallback"); + unsigned char* local = (unsigned char*)frameData; + LOGV("Type Bytes: 0x%02x%02x", local[12], local[13]); JniRef *ref = (JniRef*)userData; assert(ref->node == node); JNIEnv *env = NULL; @@ -188,7 +190,7 @@ namespace { void EventCallback(ZT1_Node *node,void *userData,enum ZT1_Event event, const void *data) { - LOGD("EventCallback"); + LOGV("EventCallback"); JniRef *ref = (JniRef*)userData; assert(ref->node == node); JNIEnv *env = NULL; @@ -436,7 +438,7 @@ namespace { const void *buffer, unsigned int bufferSize) { - LOGD("WirePacketSendFunction(%p, %p, %d)", address, buffer, bufferSize); + LOGV("WirePacketSendFunction(%p, %p, %d)", address, buffer, bufferSize); JniRef *ref = (JniRef*)userData; assert(ref->node == node); @@ -464,7 +466,7 @@ namespace { env->SetByteArrayRegion(bufferObj, 0, bufferSize, (jbyte*)buffer); int retval = env->CallIntMethod(ref->packetSender, packetSenderCallbackMethod, addressObj, bufferObj); - LOGD("JNI Packet Sender returned: %d", retval); + LOGV("JNI Packet Sender returned: %d", retval); return retval; } diff --git a/java/src/com/zerotier/sdk/MulticastGroup.java b/java/src/com/zerotier/sdk/MulticastGroup.java index 5c4df87a4..68114424f 100644 --- a/java/src/com/zerotier/sdk/MulticastGroup.java +++ b/java/src/com/zerotier/sdk/MulticastGroup.java @@ -33,6 +33,10 @@ public final class MulticastGroup { private long mac; private long adi; + public boolean equals(MulticastGroup other) { + return mac == other.mac && adi == other.adi; + } + /** * MAC address (least significant 48 bits) */ diff --git a/java/src/com/zerotier/sdk/VirtualNetworkConfig.java b/java/src/com/zerotier/sdk/VirtualNetworkConfig.java index 2be03acb3..35453ddc3 100644 --- a/java/src/com/zerotier/sdk/VirtualNetworkConfig.java +++ b/java/src/com/zerotier/sdk/VirtualNetworkConfig.java @@ -54,6 +54,44 @@ public final class VirtualNetworkConfig { } + public boolean equals(VirtualNetworkConfig cfg) { + boolean mcgEqual = true; + if(multicastSubscriptions.length == cfg.multicastSubscriptions.length) { + for(int i = 0; i < multicastSubscriptions.length; ++i) { + if(!multicastSubscriptions[i].equals(cfg.multicastSubscriptions[i])) + { + return false; + } + } + } else { + mcgEqual = false; + } + + boolean aaEqual = true; + if(assignedAddresses.length == cfg.assignedAddresses.length) { + for(int i = 0; i < assignedAddresses.length; ++i) { + if(!assignedAddresses[i].equals(cfg.assignedAddresses[i])) { + return false; + } + } + } else { + aaEqual = false; + } + + return nwid == cfg.nwid && + mac == cfg.mac && + name.equals(cfg.name) && + status.equals(cfg.status) && + type.equals(cfg.type) && + mtu == cfg.mtu && + dhcp == cfg.dhcp && + bridge == cfg.bridge && + broadcastEnabled == cfg.broadcastEnabled && + portError == cfg.portError && + enabled == cfg.enabled && + mcgEqual && aaEqual; + } + /** * 64-bit ZeroTier network ID */ From 3013d90f579ac970e41000d6732e798589c3ac90 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 9 Jun 2015 22:38:31 -0700 Subject: [PATCH 005/314] ignore windows binary output --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 498119e3c..95f6ed5b6 100755 --- a/.gitignore +++ b/.gitignore @@ -71,3 +71,4 @@ java/doc/ java/build_win64/ java/build_win32/ /java/mac32_64/ +windows/ZeroTierOne/Debug/ From 4dc0ff8f13a2a5d852cda9302632d58b25d045ac Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 9 Jun 2015 23:12:44 -0700 Subject: [PATCH 006/314] Replace calls to GetArrayElements with GetPrimitiveArrayCritical. This puts code accessing the data in a critical section so that the GC cannot run while JNI has access to the array. This helps with stability somewhat, but I'm still getting some crashes in the GC --- java/jni/com_zerotierone_sdk_Node.cpp | 54 ++++++++++++++------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index 2a90bb85b..62fbba895 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -174,9 +174,9 @@ namespace { return; } - jbyte *data = env->GetByteArrayElements(dataArray, NULL); + void *data = env->GetPrimitiveArrayCritical(dataArray, NULL); memcpy(data, frameData, frameLength); - env->ReleaseByteArrayElements(dataArray, data, 0); + env->ReleasePrimitiveArrayCritical(dataArray, data, 0); if(env->ExceptionCheck()) { @@ -356,13 +356,13 @@ namespace { if(retval > 0) { - jbyte *data = env->GetByteArrayElements(bufferObj, NULL); + void *data = env->GetPrimitiveArrayCritical(bufferObj, NULL); memcpy(buffer, data, retval); - env->ReleaseByteArrayElements(bufferObj, data, JNI_ABORT); + env->ReleasePrimitiveArrayCritical(bufferObj, data, 0); - jlong *objSize = env->GetLongArrayElements(objectSizeObj, NULL); + jlong *objSize = (jlong*)env->GetPrimitiveArrayCritical(objectSizeObj, NULL); *out_objectSize = (unsigned long)objSize[0]; - env->ReleaseLongArrayElements(objectSizeObj, objSize, JNI_ABORT); + env->ReleasePrimitiveArrayCritical(objectSizeObj, objSize, 0); } LOGI("Out Object Size: %lu", *out_objectSize); @@ -700,7 +700,10 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processVirtualNetworkFrame( unsigned int vlanId = (unsigned int)in_vlanId; unsigned int frameLength = env->GetArrayLength(in_frameData); - jbyte *frameData =env->GetByteArrayElements(in_frameData, NULL); + void *frameData = env->GetPrimitiveArrayCritical(in_frameData, NULL); + void *localData = malloc(frameLength); + memcpy(localData, frameData, frameLength); + env->ReleasePrimitiveArrayCritical(in_frameData, frameData, 0); uint64_t nextBackgroundTaskDeadline = 0; @@ -712,15 +715,15 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processVirtualNetworkFrame( destMac, etherType, vlanId, - (const void*)frameData, + (const void*)localData, frameLength, &nextBackgroundTaskDeadline); - jlong *outDeadline = env->GetLongArrayElements(out_nextBackgroundTaskDeadline, NULL); - outDeadline[0] = (jlong)nextBackgroundTaskDeadline; - env->ReleaseLongArrayElements(out_nextBackgroundTaskDeadline, outDeadline, 0); + - env->ReleaseByteArrayElements(in_frameData, frameData, 0); + jlong *outDeadline = (jlong*)env->GetPrimitiveArrayCritical(out_nextBackgroundTaskDeadline, NULL); + outDeadline[0] = (jlong)nextBackgroundTaskDeadline; + env->ReleasePrimitiveArrayCritical(out_nextBackgroundTaskDeadline, outDeadline, 0); return createResultObject(env, rc); } @@ -816,8 +819,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( unsigned int addrSize = env->GetArrayLength(addressArray); // get the address bytes - jbyte *addr = env->GetByteArrayElements(addressArray, NULL); - + jbyte *addr = (jbyte*)env->GetPrimitiveArrayCritical(addressArray, NULL); sockaddr_storage remoteAddress = {}; @@ -842,13 +844,16 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( else { // unknown address type - env->ReleaseByteArrayElements(addressArray, addr, 0); + env->ReleasePrimitiveArrayCritical(addressArray, addr, 0); return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL); } - + env->ReleasePrimitiveArrayCritical(addressArray, addr, 0); unsigned int packetLength = env->GetArrayLength(in_packetData); - jbyte *packetData = env->GetByteArrayElements(in_packetData, NULL); + void *packetData = env->GetPrimitiveArrayCritical(in_packetData, NULL); + void *localData = malloc(packetLength); + memcpy(localData, packetData, packetLength); + env->ReleasePrimitiveArrayCritical(in_packetData, packetData, 0); uint64_t nextBackgroundTaskDeadline = 0; @@ -856,7 +861,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( node, now, &remoteAddress, - packetData, + localData, packetLength, &nextBackgroundTaskDeadline); if(rc != ZT1_RESULT_OK) @@ -864,12 +869,11 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( LOGE("ZT1_Node_processWirePacket returned: %d", rc); } - jlong *outDeadline = env->GetLongArrayElements(out_nextBackgroundTaskDeadline, NULL); - outDeadline[0] = (jlong)nextBackgroundTaskDeadline; - env->ReleaseLongArrayElements(out_nextBackgroundTaskDeadline, outDeadline, 0); + free(localData); - env->ReleaseByteArrayElements(addressArray, addr, 0); - env->ReleaseByteArrayElements(in_packetData, packetData, 0); + jlong *outDeadline = (jlong*)env->GetPrimitiveArrayCritical(out_nextBackgroundTaskDeadline, NULL); + outDeadline[0] = (jlong)nextBackgroundTaskDeadline; + env->ReleasePrimitiveArrayCritical(out_nextBackgroundTaskDeadline, outDeadline, 0); return createResultObject(env, rc); } @@ -904,9 +908,9 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processBackgroundTasks( ZT1_ResultCode rc = ZT1_Node_processBackgroundTasks(node, now, &nextBackgroundTaskDeadline); - jlong *outDeadline = env->GetLongArrayElements(out_nextBackgroundTaskDeadline, NULL); + jlong *outDeadline = (jlong*)env->GetPrimitiveArrayCritical(out_nextBackgroundTaskDeadline, NULL); outDeadline[0] = (jlong)nextBackgroundTaskDeadline; - env->ReleaseLongArrayElements(out_nextBackgroundTaskDeadline, outDeadline, 0); + env->ReleasePrimitiveArrayCritical(out_nextBackgroundTaskDeadline, outDeadline, 0); return createResultObject(env, rc); } From 6889fcfc28ad7df236e9883c17d73c9badb8edd5 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 9 Jun 2015 23:24:47 -0700 Subject: [PATCH 007/314] Looks like it was the JNI cash causing the crash. Forcing it to look up classes and methods instead of caching them stopped the crashes in the GC. Will investigate more later. --- java/jni/ZT1_jnicache.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/java/jni/ZT1_jnicache.cpp b/java/jni/ZT1_jnicache.cpp index 8d6305cb2..4deec61f9 100644 --- a/java/jni/ZT1_jnicache.cpp +++ b/java/jni/ZT1_jnicache.cpp @@ -111,7 +111,7 @@ jclass JniCache::findClass(const std::string &name) jclass cls = (jclass)env->NewGlobalRef(localCls); - m_classes.insert(std::make_pair(name, cls)); + //m_classes.insert(std::make_pair(name, cls)); return cls; } @@ -143,7 +143,7 @@ jmethodID JniCache::findMethod(jclass cls, const std::string &methodName, const return NULL; } - m_methods.insert(std::make_pair(id, mid)); + //m_methods.insert(std::make_pair(id, mid)); return mid; } @@ -173,7 +173,7 @@ jmethodID JniCache::findStaticMethod(jclass cls, const std::string &methodName, return NULL; } - m_staticMethods.insert(std::make_pair(id, mid)); + //m_staticMethods.insert(std::make_pair(id, mid)); return mid; } @@ -203,7 +203,7 @@ jfieldID JniCache::findField(jclass cls, const std::string &fieldName, const std return NULL; } - m_fields.insert(std::make_pair(id, fid)); + //m_fields.insert(std::make_pair(id, fid)); return fid; } @@ -233,7 +233,7 @@ jfieldID JniCache::findStaticField(jclass cls, const std::string &fieldName, con return NULL; } - m_staticFields.insert(std::make_pair(id, fid)); + //m_staticFields.insert(std::make_pair(id, fid)); return fid; } From 7e84f5a7dbb50913a78311df4f748455be0e1097 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 9 Jun 2015 23:24:54 -0700 Subject: [PATCH 008/314] killing whitespace --- java/jni/com_zerotierone_sdk_Node.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index 62fbba895..9516db413 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -719,8 +719,6 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processVirtualNetworkFrame( frameLength, &nextBackgroundTaskDeadline); - - jlong *outDeadline = (jlong*)env->GetPrimitiveArrayCritical(out_nextBackgroundTaskDeadline, NULL); outDeadline[0] = (jlong)nextBackgroundTaskDeadline; env->ReleasePrimitiveArrayCritical(out_nextBackgroundTaskDeadline, outDeadline, 0); From 472206dfb23e8c2d285d5cdf19ba1444d07e4d52 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 10 Jun 2015 20:16:13 -0700 Subject: [PATCH 009/314] Rename JniCache to JniLookup Removed caching capabilities as the cached methods, fields, and objects appears to be broken on Android --- java/CMakeLists.txt | 2 +- java/jni/Android.mk | 2 +- java/jni/ZT1_jnicache.cpp | 242 ------------------- java/jni/ZT1_jnilookup.cpp | 158 ++++++++++++ java/jni/{ZT1_jnicache.h => ZT1_jnilookup.h} | 23 +- java/jni/ZT1_jniutils.cpp | 132 +++++----- java/jni/com_zerotierone_sdk_Node.cpp | 68 +++--- 7 files changed, 266 insertions(+), 361 deletions(-) delete mode 100644 java/jni/ZT1_jnicache.cpp create mode 100644 java/jni/ZT1_jnilookup.cpp rename java/jni/{ZT1_jnicache.h => ZT1_jnilookup.h} (78%) diff --git a/java/CMakeLists.txt b/java/CMakeLists.txt index db3eec1ca..382fd3cdb 100644 --- a/java/CMakeLists.txt +++ b/java/CMakeLists.txt @@ -54,7 +54,7 @@ set(src_files ../osdep/OSUtils.cpp jni/com_zerotierone_sdk_Node.cpp jni/ZT1_jniutils.cpp - jni/ZT1_jnicache.cpp + jni/ZT1_jnilookup.cpp ) set(include_dirs diff --git a/java/jni/Android.mk b/java/jni/Android.mk index bbf143485..9986c2c3e 100644 --- a/java/jni/Android.mk +++ b/java/jni/Android.mk @@ -39,6 +39,6 @@ LOCAL_SRC_FILES := \ LOCAL_SRC_FILES += \ com_zerotierone_sdk_Node.cpp \ ZT1_jniutils.cpp \ - ZT1_jnicache.cpp + ZT1_jnilookup.cpp include $(BUILD_SHARED_LIBRARY) \ No newline at end of file diff --git a/java/jni/ZT1_jnicache.cpp b/java/jni/ZT1_jnicache.cpp deleted file mode 100644 index 4deec61f9..000000000 --- a/java/jni/ZT1_jnicache.cpp +++ /dev/null @@ -1,242 +0,0 @@ -/* - * ZeroTier One - Network Virtualization Everywhere - * Copyright (C) 2011-2015 ZeroTier, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * -- - * - * ZeroTier may be used and distributed under the terms of the GPLv3, which - * are available at: http://www.gnu.org/licenses/gpl-3.0.html - * - * If you would like to embed ZeroTier into a commercial application or - * redistribute it in a modified binary form, please contact ZeroTier Networks - * LLC. Start here: http://www.zerotier.com/ - */ - -#include "ZT1_jnicache.h" -#include "ZT1_jniutils.h" - -JniCache::JniCache() - : m_jvm(NULL) - , m_classes() - , m_fields() - , m_staticFields() - , m_methods() - , m_staticMethods() -{ - LOGV("JNI Cache Created"); -} - -JniCache::JniCache(JavaVM *jvm) - : m_jvm(jvm) - , m_classes() - , m_fields() - , m_staticFields() - , m_methods() - , m_staticMethods() -{ - LOGV("JNI Cache Created"); -} - -JniCache::~JniCache() -{ - LOGV("JNI Cache Destroyed"); - clearCache(); -} - -void JniCache::clearCache() -{ - if(m_jvm) - { - JNIEnv *env = NULL; - if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) - return; - - for(ClassMap::iterator iter = m_classes.begin(), end = m_classes.end(); - iter != end; ++iter) - { - env->DeleteGlobalRef(iter->second); - } - } - - m_classes.clear(); - m_fields.clear(); - m_staticFields.clear(); - m_methods.clear(); - m_staticMethods.clear(); -} - -void JniCache::setJavaVM(JavaVM *jvm) -{ - LOGV("Assigned JVM to object"); - m_jvm = jvm; -} - - -jclass JniCache::findClass(const std::string &name) -{ - if(!m_jvm) - return NULL; - - ClassMap::iterator found = m_classes.find(name); - - if(found == m_classes.end()) - { - // get the class from the JVM - JNIEnv *env = NULL; - if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) - { - LOGE("Error retreiving JNI Environment"); - return NULL; - } - - jclass localCls = env->FindClass(name.c_str()); - if(env->ExceptionCheck()) - { - LOGE("Error finding class: %s", name.c_str()); - return NULL; - } - - jclass cls = (jclass)env->NewGlobalRef(localCls); - - //m_classes.insert(std::make_pair(name, cls)); - - return cls; - } - - LOGV("Returning cached %s", name.c_str()); - return found->second; -} - - -jmethodID JniCache::findMethod(jclass cls, const std::string &methodName, const std::string &methodSig) -{ - if(!m_jvm) - return NULL; - - std::string id = methodName + methodSig; - - MethodMap::iterator found = m_methods.find(id); - if(found == m_methods.end()) - { - JNIEnv *env = NULL; - if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) - { - return NULL; - } - - jmethodID mid = env->GetMethodID(cls, methodName.c_str(), methodSig.c_str()); - if(env->ExceptionCheck()) - { - return NULL; - } - - //m_methods.insert(std::make_pair(id, mid)); - - return mid; - } - - return found->second; -} - -jmethodID JniCache::findStaticMethod(jclass cls, const std::string &methodName, const std::string &methodSig) -{ - if(!m_jvm) - return NULL; - - std::string id = methodName + methodSig; - - MethodMap::iterator found = m_staticMethods.find(id); - if(found == m_staticMethods.end()) - { - JNIEnv *env = NULL; - if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) - { - return NULL; - } - - jmethodID mid = env->GetStaticMethodID(cls, methodName.c_str(), methodSig.c_str()); - if(env->ExceptionCheck()) - { - return NULL; - } - - //m_staticMethods.insert(std::make_pair(id, mid)); - - return mid; - } - - return found->second; -} - -jfieldID JniCache::findField(jclass cls, const std::string &fieldName, const std::string &typeStr) -{ - if(!m_jvm) - return NULL; - - std::string id = fieldName + typeStr; - - FieldMap::iterator found = m_fields.find(id); - if(found == m_fields.end()) - { - JNIEnv *env = NULL; - if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) - { - return NULL; - } - - jfieldID fid = env->GetFieldID(cls, fieldName.c_str(), typeStr.c_str()); - if(env->ExceptionCheck()) - { - return NULL; - } - - //m_fields.insert(std::make_pair(id, fid)); - - return fid; - } - - return found->second; -} - -jfieldID JniCache::findStaticField(jclass cls, const std::string &fieldName, const std::string &typeStr) -{ - if(!m_jvm) - return NULL; - - std::string id = fieldName + typeStr; - - FieldMap::iterator found = m_staticFields.find(id); - if(found == m_staticFields.end()) - { - JNIEnv *env = NULL; - if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) - { - return NULL; - } - - jfieldID fid = env->GetStaticFieldID(cls, fieldName.c_str(), typeStr.c_str()); - if(env->ExceptionCheck()) - { - return NULL; - } - - //m_staticFields.insert(std::make_pair(id, fid)); - - return fid; - } - - return found->second; -} \ No newline at end of file diff --git a/java/jni/ZT1_jnilookup.cpp b/java/jni/ZT1_jnilookup.cpp new file mode 100644 index 000000000..d8f5cc7f1 --- /dev/null +++ b/java/jni/ZT1_jnilookup.cpp @@ -0,0 +1,158 @@ +/* + * ZeroTier One - Network Virtualization Everywhere + * Copyright (C) 2011-2015 ZeroTier, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * -- + * + * ZeroTier may be used and distributed under the terms of the GPLv3, which + * are available at: http://www.gnu.org/licenses/gpl-3.0.html + * + * If you would like to embed ZeroTier into a commercial application or + * redistribute it in a modified binary form, please contact ZeroTier Networks + * LLC. Start here: http://www.zerotier.com/ + */ + +#include "ZT1_jnilookup.h" +#include "ZT1_jniutils.h" + +JniLookup::JniLookup() + : m_jvm(NULL) +{ + LOGV("JNI Cache Created"); +} + +JniLookup::JniLookup(JavaVM *jvm) + : m_jvm(jvm) +{ + LOGV("JNI Cache Created"); +} + +JniLookup::~JniLookup() +{ + LOGV("JNI Cache Destroyed"); +} + + +void JniLookup::setJavaVM(JavaVM *jvm) +{ + LOGV("Assigned JVM to object"); + m_jvm = jvm; +} + + +jclass JniLookup::findClass(const std::string &name) +{ + if(!m_jvm) + return NULL; + + // get the class from the JVM + JNIEnv *env = NULL; + if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) + { + LOGE("Error retreiving JNI Environment"); + return NULL; + } + + jclass cls = env->FindClass(name.c_str()); + if(env->ExceptionCheck()) + { + LOGE("Error finding class: %s", name.c_str()); + return NULL; + } + + return cls; +} + + +jmethodID JniLookup::findMethod(jclass cls, const std::string &methodName, const std::string &methodSig) +{ + if(!m_jvm) + return NULL; + + JNIEnv *env = NULL; + if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) + { + return NULL; + } + + jmethodID mid = env->GetMethodID(cls, methodName.c_str(), methodSig.c_str()); + if(env->ExceptionCheck()) + { + return NULL; + } + + return mid; +} + +jmethodID JniLookup::findStaticMethod(jclass cls, const std::string &methodName, const std::string &methodSig) +{ + if(!m_jvm) + return NULL; + + JNIEnv *env = NULL; + if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) + { + return NULL; + } + + jmethodID mid = env->GetStaticMethodID(cls, methodName.c_str(), methodSig.c_str()); + if(env->ExceptionCheck()) + { + return NULL; + } + + return mid; +} + +jfieldID JniLookup::findField(jclass cls, const std::string &fieldName, const std::string &typeStr) +{ + if(!m_jvm) + return NULL; + + JNIEnv *env = NULL; + if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) + { + return NULL; + } + + jfieldID fid = env->GetFieldID(cls, fieldName.c_str(), typeStr.c_str()); + if(env->ExceptionCheck()) + { + return NULL; + } + + return fid; +} + +jfieldID JniLookup::findStaticField(jclass cls, const std::string &fieldName, const std::string &typeStr) +{ + if(!m_jvm) + return NULL; + + JNIEnv *env = NULL; + if(m_jvm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) + { + return NULL; + } + + jfieldID fid = env->GetStaticFieldID(cls, fieldName.c_str(), typeStr.c_str()); + if(env->ExceptionCheck()) + { + return NULL; + } + + return fid; +} \ No newline at end of file diff --git a/java/jni/ZT1_jnicache.h b/java/jni/ZT1_jnilookup.h similarity index 78% rename from java/jni/ZT1_jnicache.h rename to java/jni/ZT1_jnilookup.h index 43f43a08c..cf496f882 100644 --- a/java/jni/ZT1_jnicache.h +++ b/java/jni/ZT1_jnilookup.h @@ -25,8 +25,8 @@ * LLC. Start here: http://www.zerotier.com/ */ -#ifndef ZT1_JNICACHE_H_ -#define ZT1_JNICACHE_H_ +#ifndef ZT1_JNILOOKUP_H_ +#define ZT1_JNILOOKUP_H_ #include #include @@ -34,14 +34,13 @@ -class JniCache { +class JniLookup { public: - JniCache(); - JniCache(JavaVM *jvm); - ~JniCache(); + JniLookup(); + JniLookup(JavaVM *jvm); + ~JniLookup(); void setJavaVM(JavaVM *jvm); - void clearCache(); jclass findClass(const std::string &name); jmethodID findMethod(jclass cls, const std::string &methodName, const std::string &methodSig); @@ -49,17 +48,7 @@ public: jfieldID findField(jclass cls, const std::string &fieldName, const std::string &typeStr); jfieldID findStaticField(jclass cls, const std::string &fieldName, const std::string &typeStr); private: - typedef std::map MethodMap; - typedef std::map FieldMap; - typedef std::map ClassMap; - JavaVM *m_jvm; - ClassMap m_classes; - FieldMap m_fields; - FieldMap m_staticFields; - MethodMap m_methods; - MethodMap m_staticMethods; - }; #endif \ No newline at end of file diff --git a/java/jni/ZT1_jniutils.cpp b/java/jni/ZT1_jniutils.cpp index 1e8a48bff..ac04eb58b 100644 --- a/java/jni/ZT1_jniutils.cpp +++ b/java/jni/ZT1_jniutils.cpp @@ -1,9 +1,9 @@ #include "ZT1_jniutils.h" -#include "ZT1_jnicache.h" +#include "ZT1_jnilookup.h" #include #include -extern JniCache cache; +extern JniLookup lookup; #ifdef __cplusplus extern "C" { @@ -15,7 +15,7 @@ jobject createResultObject(JNIEnv *env, ZT1_ResultCode code) jobject resultObject = NULL; - resultClass = cache.findClass("com/zerotier/sdk/ResultCode"); + resultClass = lookup.findClass("com/zerotier/sdk/ResultCode"); if(resultClass == NULL) { LOGE("Couldnt find ResultCode class"); @@ -48,7 +48,7 @@ jobject createResultObject(JNIEnv *env, ZT1_ResultCode code) break; } - jfieldID enumField = cache.findStaticField(resultClass, fieldName.c_str(), "Lcom/zerotier/sdk/ResultCode;"); + jfieldID enumField = lookup.findStaticField(resultClass, fieldName.c_str(), "Lcom/zerotier/sdk/ResultCode;"); if(env->ExceptionCheck() || enumField == NULL) { LOGE("Error on FindStaticField"); @@ -68,7 +68,7 @@ jobject createVirtualNetworkStatus(JNIEnv *env, ZT1_VirtualNetworkStatus status) { jobject statusObject = NULL; - jclass statusClass = cache.findClass("com/zerotier/sdk/VirtualNetworkStatus"); + jclass statusClass = lookup.findClass("com/zerotier/sdk/VirtualNetworkStatus"); if(statusClass == NULL) { return NULL; // exception thrown @@ -97,7 +97,7 @@ jobject createVirtualNetworkStatus(JNIEnv *env, ZT1_VirtualNetworkStatus status) break; } - jfieldID enumField = cache.findStaticField(statusClass, fieldName.c_str(), "Lcom/zerotier/sdk/VirtualNetworkStatus;"); + jfieldID enumField = lookup.findStaticField(statusClass, fieldName.c_str(), "Lcom/zerotier/sdk/VirtualNetworkStatus;"); statusObject = env->GetStaticObjectField(statusClass, enumField); @@ -109,7 +109,7 @@ jobject createEvent(JNIEnv *env, ZT1_Event event) jclass eventClass = NULL; jobject eventObject = NULL; - eventClass = cache.findClass("com/zerotier/sdk/Event"); + eventClass = lookup.findClass("com/zerotier/sdk/Event"); if(eventClass == NULL) { return NULL; @@ -147,7 +147,7 @@ jobject createEvent(JNIEnv *env, ZT1_Event event) break; } - jfieldID enumField = cache.findStaticField(eventClass, fieldName.c_str(), "Lcom/zerotier/sdk/Event;"); + jfieldID enumField = lookup.findStaticField(eventClass, fieldName.c_str(), "Lcom/zerotier/sdk/Event;"); eventObject = env->GetStaticObjectField(eventClass, enumField); @@ -159,7 +159,7 @@ jobject createPeerRole(JNIEnv *env, ZT1_PeerRole role) jclass peerRoleClass = NULL; jobject peerRoleObject = NULL; - peerRoleClass = cache.findClass("com/zerotier/sdk/PeerRole"); + peerRoleClass = lookup.findClass("com/zerotier/sdk/PeerRole"); if(peerRoleClass == NULL) { return NULL; @@ -179,7 +179,7 @@ jobject createPeerRole(JNIEnv *env, ZT1_PeerRole role) break; } - jfieldID enumField = cache.findStaticField(peerRoleClass, fieldName.c_str(), "Lcom/zerotier/sdk/PeerRole;"); + jfieldID enumField = lookup.findStaticField(peerRoleClass, fieldName.c_str(), "Lcom/zerotier/sdk/PeerRole;"); peerRoleObject = env->GetStaticObjectField(peerRoleClass, enumField); @@ -191,7 +191,7 @@ jobject createVirtualNetworkType(JNIEnv *env, ZT1_VirtualNetworkType type) jclass vntypeClass = NULL; jobject vntypeObject = NULL; - vntypeClass = cache.findClass("com/zerotier/sdk/VirtualNetworkType"); + vntypeClass = lookup.findClass("com/zerotier/sdk/VirtualNetworkType"); if(env->ExceptionCheck() || vntypeClass == NULL) { return NULL; @@ -208,7 +208,7 @@ jobject createVirtualNetworkType(JNIEnv *env, ZT1_VirtualNetworkType type) break; } - jfieldID enumField = cache.findStaticField(vntypeClass, fieldName.c_str(), "Lcom/zerotier/sdk/VirtualNetworkType;"); + jfieldID enumField = lookup.findStaticField(vntypeClass, fieldName.c_str(), "Lcom/zerotier/sdk/VirtualNetworkType;"); vntypeObject = env->GetStaticObjectField(vntypeClass, enumField); return vntypeObject; } @@ -218,7 +218,7 @@ jobject createVirtualNetworkConfigOperation(JNIEnv *env, ZT1_VirtualNetworkConfi jclass vnetConfigOpClass = NULL; jobject vnetConfigOpObject = NULL; - vnetConfigOpClass = cache.findClass("com/zerotier/sdk/VirtualNetworkConfigOperation"); + vnetConfigOpClass = lookup.findClass("com/zerotier/sdk/VirtualNetworkConfigOperation"); if(env->ExceptionCheck() || vnetConfigOpClass == NULL) { return NULL; @@ -241,7 +241,7 @@ jobject createVirtualNetworkConfigOperation(JNIEnv *env, ZT1_VirtualNetworkConfi break; } - jfieldID enumField = cache.findStaticField(vnetConfigOpClass, fieldName.c_str(), "Lcom/zerotier/sdk/VirtualNetworkConfigOperation;"); + jfieldID enumField = lookup.findStaticField(vnetConfigOpClass, fieldName.c_str(), "Lcom/zerotier/sdk/VirtualNetworkConfigOperation;"); vnetConfigOpObject = env->GetStaticObjectField(vnetConfigOpClass, enumField); return vnetConfigOpObject; } @@ -252,14 +252,14 @@ jobject newInetAddress(JNIEnv *env, const sockaddr_storage &addr) jclass inetAddressClass = NULL; jmethodID inetAddress_getByAddress = NULL; - inetAddressClass = cache.findClass("java/net/InetAddress"); + inetAddressClass = lookup.findClass("java/net/InetAddress"); if(env->ExceptionCheck() || inetAddressClass == NULL) { LOGE("Error finding InetAddress class"); return NULL; } - inetAddress_getByAddress = cache.findStaticMethod( + inetAddress_getByAddress = lookup.findStaticMethod( inetAddressClass, "getByAddress", "([B)Ljava/net/InetAddress;"); if(env->ExceptionCheck() || inetAddress_getByAddress == NULL) { @@ -315,7 +315,7 @@ jobject newInetSocketAddress(JNIEnv *env, const sockaddr_storage &addr) jclass inetSocketAddressClass = NULL; jmethodID inetSocketAddress_constructor = NULL; - inetSocketAddressClass = cache.findClass("java/net/InetSocketAddress"); + inetSocketAddressClass = lookup.findClass("java/net/InetSocketAddress"); if(env->ExceptionCheck() || inetSocketAddressClass == NULL) { LOGE("Error finding InetSocketAddress Class"); @@ -330,7 +330,7 @@ jobject newInetSocketAddress(JNIEnv *env, const sockaddr_storage &addr) return NULL; } - inetSocketAddress_constructor = cache.findMethod( + inetSocketAddress_constructor = lookup.findMethod( inetSocketAddressClass, "", "(Ljava/net/InetAddress;I)V"); if(env->ExceptionCheck() || inetSocketAddress_constructor == NULL) { @@ -380,13 +380,13 @@ jobject newMulticastGroup(JNIEnv *env, const ZT1_MulticastGroup &mc) jfieldID macField = NULL; jfieldID adiField = NULL; - multicastGroupClass = cache.findClass("com/zerotier/sdk/MulticastGroup"); + multicastGroupClass = lookup.findClass("com/zerotier/sdk/MulticastGroup"); if(env->ExceptionCheck() || multicastGroupClass == NULL) { return NULL; } - multicastGroup_constructor = cache.findMethod( + multicastGroup_constructor = lookup.findMethod( multicastGroupClass, "", "()V"); if(env->ExceptionCheck() || multicastGroup_constructor == NULL) { @@ -399,13 +399,13 @@ jobject newMulticastGroup(JNIEnv *env, const ZT1_MulticastGroup &mc) return NULL; } - macField = cache.findField(multicastGroupClass, "mac", "J"); + macField = lookup.findField(multicastGroupClass, "mac", "J"); if(env->ExceptionCheck() || macField == NULL) { return NULL; } - adiField = cache.findField(multicastGroupClass, "adi", "J"); + adiField = lookup.findField(multicastGroupClass, "adi", "J"); if(env->ExceptionCheck() || adiField == NULL) { return NULL; @@ -431,56 +431,56 @@ jobject newPeerPhysicalPath(JNIEnv *env, const ZT1_PeerPhysicalPath &ppp) jmethodID ppp_constructor = NULL; - pppClass = cache.findClass("com/zerotier/sdk/PeerPhysicalPath"); + pppClass = lookup.findClass("com/zerotier/sdk/PeerPhysicalPath"); if(env->ExceptionCheck() || pppClass == NULL) { LOGE("Error finding PeerPhysicalPath class"); return NULL; } - addressField = cache.findField(pppClass, "address", "Ljava/net/InetSocketAddress;"); + addressField = lookup.findField(pppClass, "address", "Ljava/net/InetSocketAddress;"); if(env->ExceptionCheck() || addressField == NULL) { LOGE("Error finding address field"); return NULL; } - lastSendField = cache.findField(pppClass, "lastSend", "J"); + lastSendField = lookup.findField(pppClass, "lastSend", "J"); if(env->ExceptionCheck() || lastSendField == NULL) { LOGE("Error finding lastSend field"); return NULL; } - lastReceiveField = cache.findField(pppClass, "lastReceive", "J"); + lastReceiveField = lookup.findField(pppClass, "lastReceive", "J"); if(env->ExceptionCheck() || lastReceiveField == NULL) { LOGE("Error finding lastReceive field"); return NULL; } - fixedField = cache.findField(pppClass, "fixed", "Z"); + fixedField = lookup.findField(pppClass, "fixed", "Z"); if(env->ExceptionCheck() || fixedField == NULL) { LOGE("Error finding fixed field"); return NULL; } - activeField = cache.findField(pppClass, "active", "Z"); + activeField = lookup.findField(pppClass, "active", "Z"); if(env->ExceptionCheck() || activeField == NULL) { LOGE("Error finding active field"); return NULL; } - preferredField = cache.findField(pppClass, "preferred", "Z"); + preferredField = lookup.findField(pppClass, "preferred", "Z"); if(env->ExceptionCheck() || preferredField == NULL) { LOGE("Error finding preferred field"); return NULL; } - ppp_constructor = cache.findMethod(pppClass, "", "()V"); + ppp_constructor = lookup.findMethod(pppClass, "", "()V"); if(env->ExceptionCheck() || ppp_constructor == NULL) { LOGE("Error finding PeerPhysicalPath constructor"); @@ -532,77 +532,77 @@ jobject newPeer(JNIEnv *env, const ZT1_Peer &peer) jmethodID peer_constructor = NULL; - peerClass = cache.findClass("com/zerotier/sdk/Peer"); + peerClass = lookup.findClass("com/zerotier/sdk/Peer"); if(env->ExceptionCheck() || peerClass == NULL) { LOGE("Error finding Peer class"); return NULL; } - addressField = cache.findField(peerClass, "address", "J"); + addressField = lookup.findField(peerClass, "address", "J"); if(env->ExceptionCheck() || addressField == NULL) { LOGE("Error finding address field of Peer object"); return NULL; } - lastUnicastFrameField = cache.findField(peerClass, "lastUnicastFrame", "J"); + lastUnicastFrameField = lookup.findField(peerClass, "lastUnicastFrame", "J"); if(env->ExceptionCheck() || lastUnicastFrameField == NULL) { LOGE("Error finding lastUnicastFrame field of Peer object"); return NULL; } - lastMulticastFrameField = cache.findField(peerClass, "lastMulticastFrame", "J"); + lastMulticastFrameField = lookup.findField(peerClass, "lastMulticastFrame", "J"); if(env->ExceptionCheck() || lastMulticastFrameField == NULL) { LOGE("Error finding lastMulticastFrame field of Peer object"); return NULL; } - versionMajorField = cache.findField(peerClass, "versionMajor", "I"); + versionMajorField = lookup.findField(peerClass, "versionMajor", "I"); if(env->ExceptionCheck() || versionMajorField == NULL) { LOGE("Error finding versionMajor field of Peer object"); return NULL; } - versionMinorField = cache.findField(peerClass, "versionMinor", "I"); + versionMinorField = lookup.findField(peerClass, "versionMinor", "I"); if(env->ExceptionCheck() || versionMinorField == NULL) { LOGE("Error finding versionMinor field of Peer object"); return NULL; } - versionRevField = cache.findField(peerClass, "versionRev", "I"); + versionRevField = lookup.findField(peerClass, "versionRev", "I"); if(env->ExceptionCheck() || versionRevField == NULL) { LOGE("Error finding versionRev field of Peer object"); return NULL; } - latencyField = cache.findField(peerClass, "latency", "I"); + latencyField = lookup.findField(peerClass, "latency", "I"); if(env->ExceptionCheck() || latencyField == NULL) { LOGE("Error finding latency field of Peer object"); return NULL; } - roleField = cache.findField(peerClass, "role", "Lcom/zerotier/sdk/PeerRole;"); + roleField = lookup.findField(peerClass, "role", "Lcom/zerotier/sdk/PeerRole;"); if(env->ExceptionCheck() || roleField == NULL) { LOGE("Error finding role field of Peer object"); return NULL; } - pathsField = cache.findField(peerClass, "paths", "[Lcom/zerotier/sdk/PeerPhysicalPath;"); + pathsField = lookup.findField(peerClass, "paths", "[Lcom/zerotier/sdk/PeerPhysicalPath;"); if(env->ExceptionCheck() || pathsField == NULL) { LOGE("Error finding paths field of Peer object"); return NULL; } - peer_constructor = cache.findMethod(peerClass, "", "()V"); + peer_constructor = lookup.findMethod(peerClass, "", "()V"); if(env->ExceptionCheck() || peer_constructor == NULL) { LOGE("Error finding Peer constructor"); @@ -625,7 +625,7 @@ jobject newPeer(JNIEnv *env, const ZT1_Peer &peer) env->SetIntField(peerObject, latencyField, peer.latency); env->SetObjectField(peerObject, roleField, createPeerRole(env, peer.role)); - jclass peerPhysicalPathClass = cache.findClass("com/zerotier/sdk/PeerPhysicalPath"); + jclass peerPhysicalPathClass = lookup.findClass("com/zerotier/sdk/PeerPhysicalPath"); if(env->ExceptionCheck() || peerPhysicalPathClass == NULL) { LOGE("Error finding PeerPhysicalPath class"); @@ -675,14 +675,14 @@ jobject newNetworkConfig(JNIEnv *env, const ZT1_VirtualNetworkConfig &vnetConfig jfieldID multicastSubscriptionsField = NULL; jfieldID assignedAddressesField = NULL; - vnetConfigClass = cache.findClass("com/zerotier/sdk/VirtualNetworkConfig"); + vnetConfigClass = lookup.findClass("com/zerotier/sdk/VirtualNetworkConfig"); if(vnetConfigClass == NULL) { LOGE("Couldn't find com.zerotier.sdk.VirtualNetworkConfig"); return NULL; } - vnetConfig_constructor = cache.findMethod( + vnetConfig_constructor = lookup.findMethod( vnetConfigClass, "", "()V"); if(env->ExceptionCheck() || vnetConfig_constructor == NULL) { @@ -697,98 +697,98 @@ jobject newNetworkConfig(JNIEnv *env, const ZT1_VirtualNetworkConfig &vnetConfig return NULL; } - nwidField = cache.findField(vnetConfigClass, "nwid", "J"); + nwidField = lookup.findField(vnetConfigClass, "nwid", "J"); if(env->ExceptionCheck() || nwidField == NULL) { LOGE("Error getting nwid field"); return NULL; } - macField = cache.findField(vnetConfigClass, "mac", "J"); + macField = lookup.findField(vnetConfigClass, "mac", "J"); if(env->ExceptionCheck() || macField == NULL) { LOGE("Error getting mac field"); return NULL; } - nameField = cache.findField(vnetConfigClass, "name", "Ljava/lang/String;"); + nameField = lookup.findField(vnetConfigClass, "name", "Ljava/lang/String;"); if(env->ExceptionCheck() || nameField == NULL) { LOGE("Error getting name field"); return NULL; } - statusField = cache.findField(vnetConfigClass, "status", "Lcom/zerotier/sdk/VirtualNetworkStatus;"); + statusField = lookup.findField(vnetConfigClass, "status", "Lcom/zerotier/sdk/VirtualNetworkStatus;"); if(env->ExceptionCheck() || statusField == NULL) { LOGE("Error getting status field"); return NULL; } - typeField = cache.findField(vnetConfigClass, "type", "Lcom/zerotier/sdk/VirtualNetworkType;"); + typeField = lookup.findField(vnetConfigClass, "type", "Lcom/zerotier/sdk/VirtualNetworkType;"); if(env->ExceptionCheck() || typeField == NULL) { LOGE("Error getting type field"); return NULL; } - mtuField = cache.findField(vnetConfigClass, "mtu", "I"); + mtuField = lookup.findField(vnetConfigClass, "mtu", "I"); if(env->ExceptionCheck() || mtuField == NULL) { LOGE("Error getting mtu field"); return NULL; } - dhcpField = cache.findField(vnetConfigClass, "dhcp", "Z"); + dhcpField = lookup.findField(vnetConfigClass, "dhcp", "Z"); if(env->ExceptionCheck() || dhcpField == NULL) { LOGE("Error getting dhcp field"); return NULL; } - bridgeField = cache.findField(vnetConfigClass, "bridge", "Z"); + bridgeField = lookup.findField(vnetConfigClass, "bridge", "Z"); if(env->ExceptionCheck() || bridgeField == NULL) { LOGE("Error getting bridge field"); return NULL; } - broadcastEnabledField = cache.findField(vnetConfigClass, "broadcastEnabled", "Z"); + broadcastEnabledField = lookup.findField(vnetConfigClass, "broadcastEnabled", "Z"); if(env->ExceptionCheck() || broadcastEnabledField == NULL) { LOGE("Error getting broadcastEnabled field"); return NULL; } - portErrorField = cache.findField(vnetConfigClass, "portError", "I"); + portErrorField = lookup.findField(vnetConfigClass, "portError", "I"); if(env->ExceptionCheck() || portErrorField == NULL) { LOGE("Error getting portError field"); return NULL; } - enabledField = cache.findField(vnetConfigClass, "enabled", "Z"); + enabledField = lookup.findField(vnetConfigClass, "enabled", "Z"); if(env->ExceptionCheck() || enabledField == NULL) { LOGE("Error getting enabled field"); return NULL; } - netconfRevisionField = cache.findField(vnetConfigClass, "netconfRevision", "J"); + netconfRevisionField = lookup.findField(vnetConfigClass, "netconfRevision", "J"); if(env->ExceptionCheck() || netconfRevisionField == NULL) { LOGE("Error getting netconfRevision field"); return NULL; } - multicastSubscriptionsField = cache.findField(vnetConfigClass, "multicastSubscriptions", "[Lcom/zerotier/sdk/MulticastGroup;"); + multicastSubscriptionsField = lookup.findField(vnetConfigClass, "multicastSubscriptions", "[Lcom/zerotier/sdk/MulticastGroup;"); if(env->ExceptionCheck() || multicastSubscriptionsField == NULL) { LOGE("Error getting multicastSubscriptions field"); return NULL; } - assignedAddressesField = cache.findField(vnetConfigClass, "assignedAddresses", "[Ljava/net/InetSocketAddress;"); + assignedAddressesField = lookup.findField(vnetConfigClass, "assignedAddresses", "[Ljava/net/InetSocketAddress;"); if(env->ExceptionCheck() || assignedAddressesField == NULL) { LOGE("Error getting assignedAddresses field"); @@ -825,7 +825,7 @@ jobject newNetworkConfig(JNIEnv *env, const ZT1_VirtualNetworkConfig &vnetConfig env->SetBooleanField(vnetConfigObj, enabledField, vnetConfig.enabled); env->SetIntField(vnetConfigObj, portErrorField, vnetConfig.portError); - jclass multicastGroupClass = cache.findClass("com/zerotier/sdk/MulticastGroup"); + jclass multicastGroupClass = lookup.findClass("com/zerotier/sdk/MulticastGroup"); if(env->ExceptionCheck() || multicastGroupClass == NULL) { LOGE("Error finding MulticastGroup class"); @@ -850,7 +850,7 @@ jobject newNetworkConfig(JNIEnv *env, const ZT1_VirtualNetworkConfig &vnetConfig } env->SetObjectField(vnetConfigObj, multicastSubscriptionsField, mcastSubsArrayObj); - jclass inetSocketAddressClass = cache.findClass("java/net/InetSocketAddress"); + jclass inetSocketAddressClass = lookup.findClass("java/net/InetSocketAddress"); if(env->ExceptionCheck() || inetSocketAddressClass == NULL) { LOGE("Error finding InetSocketAddress class"); @@ -887,13 +887,13 @@ jobject newVersion(JNIEnv *env, int major, int minor, int rev, long featureFlags jclass versionClass = NULL; jmethodID versionConstructor = NULL; - versionClass = cache.findClass("com/zerotier/sdk/Version"); + versionClass = lookup.findClass("com/zerotier/sdk/Version"); if(env->ExceptionCheck() || versionClass == NULL) { return NULL; } - versionConstructor = cache.findMethod( + versionConstructor = lookup.findMethod( versionClass, "", "()V"); if(env->ExceptionCheck() || versionConstructor == NULL) { @@ -912,25 +912,25 @@ jobject newVersion(JNIEnv *env, int major, int minor, int rev, long featureFlags jfieldID revisionField = NULL; jfieldID featureFlagsField = NULL; - majorField = cache.findField(versionClass, "major", "I"); + majorField = lookup.findField(versionClass, "major", "I"); if(env->ExceptionCheck() || majorField == NULL) { return NULL; } - minorField = cache.findField(versionClass, "minor", "I"); + minorField = lookup.findField(versionClass, "minor", "I"); if(env->ExceptionCheck() || minorField == NULL) { return NULL; } - revisionField = cache.findField(versionClass, "revision", "I"); + revisionField = lookup.findField(versionClass, "revision", "I"); if(env->ExceptionCheck() || revisionField == NULL) { return NULL; } - featureFlagsField = cache.findField(versionClass, "featureFlags", "J"); + featureFlagsField = lookup.findField(versionClass, "featureFlags", "J"); if(env->ExceptionCheck() || featureFlagsField == NULL) { return NULL; diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index 9516db413..aa42c5488 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -27,7 +27,7 @@ #include "com_zerotierone_sdk_Node.h" #include "ZT1_jniutils.h" -#include "ZT1_jnicache.h" +#include "ZT1_jnilookup.h" #include @@ -36,8 +36,8 @@ #include #include -// global static JNI Cache Object -JniCache cache; +// global static JNI Lookup Object +JniLookup lookup; #ifdef __cplusplus extern "C" { @@ -104,7 +104,7 @@ namespace { return -1; } - jmethodID configListenerCallbackMethod = cache.findMethod(configListenerClass, + jmethodID configListenerCallbackMethod = lookup.findMethod(configListenerClass, "onNetworkConfigurationUpdated", "(JLcom/zerotier/sdk/VirtualNetworkConfigOperation;Lcom/zerotier/sdk/VirtualNetworkConfig;)I"); if(configListenerCallbackMethod == NULL) @@ -158,7 +158,7 @@ namespace { return; } - jmethodID frameListenerCallbackMethod = cache.findMethod( + jmethodID frameListenerCallbackMethod = lookup.findMethod( frameListenerClass, "onVirtualNetworkFrame", "(JJJJJ[B)V"); if(env->ExceptionCheck() || frameListenerCallbackMethod == NULL) @@ -204,7 +204,7 @@ namespace { return; } - jmethodID onEventMethod = cache.findMethod(eventListenerClass, + jmethodID onEventMethod = lookup.findMethod(eventListenerClass, "onEvent", "(Lcom/zerotier/sdk/Event;)V"); if(onEventMethod == NULL) { @@ -213,7 +213,7 @@ namespace { } - jmethodID onOutOfDateMethod = cache.findMethod(eventListenerClass, + jmethodID onOutOfDateMethod = lookup.findMethod(eventListenerClass, "onOutOfDate", "(Lcom/zerotier/sdk/Version;)V"); if(onOutOfDateMethod == NULL) { @@ -222,7 +222,7 @@ namespace { } - jmethodID onNetworkErrorMethod = cache.findMethod(eventListenerClass, + jmethodID onNetworkErrorMethod = lookup.findMethod(eventListenerClass, "onNetworkError", "(Lcom/zerotier/sdk/Event;Ljava/net/InetSocketAddress;)V"); if(onNetworkErrorMethod == NULL) { @@ -231,7 +231,7 @@ namespace { } - jmethodID onTraceMethod = cache.findMethod(eventListenerClass, + jmethodID onTraceMethod = lookup.findMethod(eventListenerClass, "onTrace", "(Ljava/lang/String;)V"); if(onTraceMethod == NULL) { @@ -316,7 +316,7 @@ namespace { return -2; } - jmethodID dataStoreGetCallbackMethod = cache.findMethod( + jmethodID dataStoreGetCallbackMethod = lookup.findMethod( dataStoreGetClass, "onDataStoreGet", "(Ljava/lang/String;[BJ[J)J"); @@ -388,7 +388,7 @@ namespace { return -1; } - jmethodID dataStorePutCallbackMethod = cache.findMethod( + jmethodID dataStorePutCallbackMethod = lookup.findMethod( dataStorePutClass, "onDataStorePut", "(Ljava/lang/String;[BZ)I"); @@ -398,7 +398,7 @@ namespace { return -2; } - jmethodID deleteMethod = cache.findMethod(dataStorePutClass, + jmethodID deleteMethod = lookup.findMethod(dataStorePutClass, "onDelete", "(Ljava/lang/String;)I"); if(deleteMethod == NULL) { @@ -453,7 +453,7 @@ namespace { return -1; } - jmethodID packetSenderCallbackMethod = cache.findMethod(packetSenderClass, + jmethodID packetSenderCallbackMethod = lookup.findMethod(packetSenderClass, "onSendPacketRequested", "(Ljava/net/InetSocketAddress;[B)I"); if(packetSenderCallbackMethod == NULL) { @@ -487,13 +487,13 @@ namespace { JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { - cache.setJavaVM(vm); + lookup.setJavaVM(vm); return JNI_VERSION_1_6; } JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { - cache.clearCache(); + } @@ -514,7 +514,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init( env->GetJavaVM(&ref->jvm); jclass cls = env->GetObjectClass(obj); - jfieldID fid = cache.findField( + jfieldID fid = lookup.findField( cls, "getListener", "Lcom/zerotier/sdk/DataStoreGetListener;"); if(fid == NULL) @@ -529,7 +529,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init( } ref->dataStoreGetListener = env->NewGlobalRef(tmp); - fid = cache.findField( + fid = lookup.findField( cls, "putListener", "Lcom/zerotier/sdk/DataStorePutListener;"); if(fid == NULL) @@ -544,7 +544,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init( } ref->dataStorePutListener = env->NewGlobalRef(tmp); - fid = cache.findField( + fid = lookup.findField( cls, "sender", "Lcom/zerotier/sdk/PacketSender;"); if(fid == NULL) { @@ -558,7 +558,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init( } ref->packetSender = env->NewGlobalRef(tmp); - fid = cache.findField( + fid = lookup.findField( cls, "frameListener", "Lcom/zerotier/sdk/VirtualNetworkFrameListener;"); if(fid == NULL) { @@ -572,7 +572,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init( } ref->frameListener = env->NewGlobalRef(tmp); - fid = cache.findField( + fid = lookup.findField( cls, "configListener", "Lcom/zerotier/sdk/VirtualNetworkConfigListener;"); if(fid == NULL) { @@ -586,7 +586,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init( } ref->configListener = env->NewGlobalRef(tmp); - fid = cache.findField( + fid = lookup.findField( cls, "eventListener", "Lcom/zerotier/sdk/EventListener;"); if(fid == NULL) { @@ -758,7 +758,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( uint64_t now = (uint64_t)in_now; // get the java.net.InetSocketAddress class and getAddress() method - jclass inetAddressClass = cache.findClass("java/net/InetAddress"); + jclass inetAddressClass = lookup.findClass("java/net/InetAddress"); if(inetAddressClass == NULL) { LOGE("Can't find InetAddress class"); @@ -766,7 +766,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL); } - jmethodID getAddressMethod = cache.findMethod( + jmethodID getAddressMethod = lookup.findMethod( inetAddressClass, "getAddress", "()[B"); if(getAddressMethod == NULL) { @@ -774,13 +774,13 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL); } - jclass InetSocketAddressClass = cache.findClass("java/net/InetSocketAddress"); + jclass InetSocketAddressClass = lookup.findClass("java/net/InetSocketAddress"); if(InetSocketAddressClass == NULL) { return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL); } - jmethodID inetSockGetAddressMethod = cache.findMethod( + jmethodID inetSockGetAddressMethod = lookup.findMethod( InetSocketAddressClass, "getAddress", "()Ljava/net/InetAddress;"); jobject addrObject = env->CallObjectMethod(in_remoteAddress, inetSockGetAddressMethod); @@ -790,7 +790,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL); } - jmethodID inetSock_getPort = cache.findMethod( + jmethodID inetSock_getPort = lookup.findMethod( InetSocketAddressClass, "getPort", "()I"); if(env->ExceptionCheck() || inetSock_getPort == NULL) @@ -1059,13 +1059,13 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_status jmethodID nodeStatusConstructor = NULL; // create a com.zerotier.sdk.NodeStatus object - nodeStatusClass = cache.findClass("com/zerotier/sdk/NodeStatus"); + nodeStatusClass = lookup.findClass("com/zerotier/sdk/NodeStatus"); if(nodeStatusClass == NULL) { return NULL; } - nodeStatusConstructor = cache.findMethod( + nodeStatusConstructor = lookup.findMethod( nodeStatusClass, "", "()V"); if(nodeStatusConstructor == NULL) { @@ -1086,25 +1086,25 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_status jfieldID secretIdentityField = NULL; jfieldID onlineField = NULL; - addressField = cache.findField(nodeStatusClass, "address", "J"); + addressField = lookup.findField(nodeStatusClass, "address", "J"); if(addressField == NULL) { return NULL; } - publicIdentityField = cache.findField(nodeStatusClass, "publicIdentity", "Ljava/lang/String;"); + publicIdentityField = lookup.findField(nodeStatusClass, "publicIdentity", "Ljava/lang/String;"); if(publicIdentityField == NULL) { return NULL; } - secretIdentityField = cache.findField(nodeStatusClass, "secretIdentity", "Ljava/lang/String;"); + secretIdentityField = lookup.findField(nodeStatusClass, "secretIdentity", "Ljava/lang/String;"); if(secretIdentityField == NULL) { return NULL; } - onlineField = cache.findField(nodeStatusClass, "online", "Z"); + onlineField = lookup.findField(nodeStatusClass, "online", "Z"); if(onlineField == NULL) { return NULL; @@ -1207,7 +1207,7 @@ JNIEXPORT jobjectArray JNICALL Java_com_zerotier_sdk_Node_peers( return NULL; } - jclass peerClass = cache.findClass("com/zerotier/sdk/Peer"); + jclass peerClass = lookup.findClass("com/zerotier/sdk/Peer"); if(env->ExceptionCheck() || peerClass == NULL) { LOGE("Error finding Peer class"); @@ -1265,7 +1265,7 @@ JNIEXPORT jobjectArray JNICALL Java_com_zerotier_sdk_Node_networks( return NULL; } - jclass vnetConfigClass = cache.findClass("com/zerotier/sdk/VirtualNetworkConfig"); + jclass vnetConfigClass = lookup.findClass("com/zerotier/sdk/VirtualNetworkConfig"); if(env->ExceptionCheck() || vnetConfigClass == NULL) { LOGE("Error finding VirtualNetworkConfig class"); From abbcb0a12cbab782c1d9879391efb65e9cd92acf Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Sat, 13 Jun 2015 14:38:04 -0700 Subject: [PATCH 010/314] Modified ant build script so that it can be integrated with Android Studio's build system --- java/build.xml | 39 ++++++++++++--------------------------- 1 file changed, 12 insertions(+), 27 deletions(-) diff --git a/java/build.xml b/java/build.xml index e24a0e13c..93d754a64 100644 --- a/java/build.xml +++ b/java/build.xml @@ -1,4 +1,4 @@ - + @@ -9,7 +9,7 @@ - + @@ -24,6 +24,10 @@ + + + + - + @@ -91,7 +95,7 @@ overwrite="true"/> - + @@ -101,23 +105,4 @@ - - \ No newline at end of file From adf89901c4d2de0d2338889a7fa1e5df1ab6b9be Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 19 Jun 2015 19:00:06 -0700 Subject: [PATCH 011/314] dont consider multicast groups in VirtualNetworkConfig.equals() --- .../src/com/zerotier/sdk/VirtualNetworkConfig.java | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/java/src/com/zerotier/sdk/VirtualNetworkConfig.java b/java/src/com/zerotier/sdk/VirtualNetworkConfig.java index 35453ddc3..980f48f70 100644 --- a/java/src/com/zerotier/sdk/VirtualNetworkConfig.java +++ b/java/src/com/zerotier/sdk/VirtualNetworkConfig.java @@ -55,18 +55,6 @@ public final class VirtualNetworkConfig { } public boolean equals(VirtualNetworkConfig cfg) { - boolean mcgEqual = true; - if(multicastSubscriptions.length == cfg.multicastSubscriptions.length) { - for(int i = 0; i < multicastSubscriptions.length; ++i) { - if(!multicastSubscriptions[i].equals(cfg.multicastSubscriptions[i])) - { - return false; - } - } - } else { - mcgEqual = false; - } - boolean aaEqual = true; if(assignedAddresses.length == cfg.assignedAddresses.length) { for(int i = 0; i < assignedAddresses.length; ++i) { @@ -89,7 +77,7 @@ public final class VirtualNetworkConfig { broadcastEnabled == cfg.broadcastEnabled && portError == cfg.portError && enabled == cfg.enabled && - mcgEqual && aaEqual; + aaEqual; } /** From 759d71037ef429c0277d8bebe16cc4ac1f426c45 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 23 Jun 2015 23:03:02 -0700 Subject: [PATCH 012/314] added Comparable interface to VirtualNetworkConfig so we can sort arrays containing it. --- java/src/com/zerotier/sdk/VirtualNetworkConfig.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/java/src/com/zerotier/sdk/VirtualNetworkConfig.java b/java/src/com/zerotier/sdk/VirtualNetworkConfig.java index 980f48f70..278fafd26 100644 --- a/java/src/com/zerotier/sdk/VirtualNetworkConfig.java +++ b/java/src/com/zerotier/sdk/VirtualNetworkConfig.java @@ -27,11 +27,13 @@ package com.zerotier.sdk; +import java.lang.Comparable; +import java.lang.Override; import java.lang.String; import java.util.ArrayList; import java.net.InetSocketAddress; -public final class VirtualNetworkConfig { +public final class VirtualNetworkConfig implements Comparable { public static final int MAX_MULTICAST_SUBSCRIPTIONS = 4096; public static final int ZT1_MAX_ZT_ASSIGNED_ADDRESSES = 16; @@ -80,6 +82,14 @@ public final class VirtualNetworkConfig { aaEqual; } + public int compareTo(VirtualNetworkConfig cfg) { + if(cfg.nwid == this.nwid) { + return 0; + } else { + return this.nwid > cfg.nwid ? 1 : -1; + } + } + /** * 64-bit ZeroTier network ID */ From bfb152f53f528934583ee76437453a005610a7ea Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 24 Jun 2015 20:31:22 -0700 Subject: [PATCH 013/314] configure the NDK to build all supported ABIs and package them up in the jar --- java/build.xml | 15 ++++++++++++--- java/jni/Application.mk | 5 +++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/java/build.xml b/java/build.xml index 93d754a64..4bc1cdc08 100644 --- a/java/build.xml +++ b/java/build.xml @@ -43,18 +43,27 @@ - + + + + diff --git a/java/jni/Application.mk b/java/jni/Application.mk index 3118ec2e4..8b6c80208 100644 --- a/java/jni/Application.mk +++ b/java/jni/Application.mk @@ -1,4 +1,5 @@ APP_ABI := armeabi armeabi-v7a arm64-v8a x86 APP_STL := gnustl_static -APP_CPPFLAGS += -Wall -fPIE -fstack-protector -fexceptions -DZT_TRACE - +APP_CPPFLAGS += -Wall -fPIE -fstack-protector -fexceptions +APP_PLATFORM := android-14 +APP_ABI := all From c9919cc5bae5c06980a701b8a4fa4d31805d4428 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 26 Jun 2015 18:26:57 -0700 Subject: [PATCH 014/314] reflect changes to ZT1_PeerRole in JNI --- java/jni/ZT1_jniutils.cpp | 8 ++++---- java/src/com/zerotier/sdk/PeerRole.java | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/java/jni/ZT1_jniutils.cpp b/java/jni/ZT1_jniutils.cpp index 6b877417a..90f3bb847 100644 --- a/java/jni/ZT1_jniutils.cpp +++ b/java/jni/ZT1_jniutils.cpp @@ -171,11 +171,11 @@ jobject createPeerRole(JNIEnv *env, ZT1_PeerRole role) case ZT1_PEER_ROLE_LEAF: fieldName = "PEER_ROLE_LEAF"; break; - case ZT1_PEER_ROLE_HUB: - fieldName = "PEER_ROLE_HUB"; + case ZT1_PEER_ROLE_RELAY: + fieldName = "PEER_ROLE_RELAY"; break; - case ZT1_PEER_ROLE_ROOTSERVER: - fieldName = "PEER_ROLE_ROOTSERVER"; + case ZT1_PEER_ROLE_ROOT: + fieldName = "PEER_ROLE_ROOT"; break; } diff --git a/java/src/com/zerotier/sdk/PeerRole.java b/java/src/com/zerotier/sdk/PeerRole.java index 7a5156e1b..d7d55f053 100644 --- a/java/src/com/zerotier/sdk/PeerRole.java +++ b/java/src/com/zerotier/sdk/PeerRole.java @@ -34,12 +34,12 @@ public enum PeerRole { PEER_ROLE_LEAF, /** - * Locally federated hub + * relay node */ - PEER_ROLE_HUB, + PEER_ROLE_RELAY, /** - * planetary rootserver + * root server */ - PEER_ROLE_ROOTSERVER + PEER_ROLE_ROOT } \ No newline at end of file From aee8e95d4961195b3251bcc8581677a8f0c0cdd8 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 30 Jun 2015 19:21:46 -0700 Subject: [PATCH 015/314] logging --- java/jni/com_zerotierone_sdk_Node.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index aa42c5488..ca4c4838c 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -365,7 +365,7 @@ namespace { env->ReleasePrimitiveArrayCritical(objectSizeObj, objSize, 0); } - LOGI("Out Object Size: %lu", *out_objectSize); + LOGV("Out Object Size: %lu", *out_objectSize); return retval; } @@ -410,12 +410,14 @@ namespace { if(buffer == NULL) { + LOGD("JNI: Delete file: %s", objectName); // delete operation return env->CallIntMethod( ref->dataStorePutListener, deleteMethod, nameStr); } else { + LOGD("JNI: Write file: %s", objectName); // set operation jbyteArray bufferObj = env->NewByteArray(bufferSize); if(env->ExceptionCheck() || bufferObj == NULL) From f803dd5ff46cc03e07364961eb23feb64b7697bd Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 1 Jul 2015 18:13:39 -0700 Subject: [PATCH 016/314] ... --- java/build.xml | 1 + java/jni/Android.mk | 1 + java/jni/com_zerotierone_sdk_Node.cpp | 8 +++++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/java/build.xml b/java/build.xml index 4bc1cdc08..4604ad66e 100644 --- a/java/build.xml +++ b/java/build.xml @@ -42,6 +42,7 @@ + node == node); + if(ref->node != node) + { + LOGE("Nodes not equal. ref->node %p, node %p", ref->node, node); + return; + } JNIEnv *env = NULL; ref->jvm->GetEnv((void**)&env, JNI_VERSION_1_6); @@ -613,6 +617,8 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init( &VirtualNetworkConfigFunctionCallback, &EventCallback); + LOGI("Node Created."); + if(rc != ZT1_RESULT_OK) { LOGE("Error creating Node: %d", rc); From 0b7cd2f40a9502a797eff49db12f6f892e319f45 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 1 Jul 2015 20:26:14 -0700 Subject: [PATCH 017/314] change some build settings. add a lock --- java/CMakeLists.txt | 1 + java/jni/Android.mk | 1 + java/jni/Application.mk | 6 +++--- java/jni/com_zerotierone_sdk_Node.cpp | 23 ++++++++++++++++++++--- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/java/CMakeLists.txt b/java/CMakeLists.txt index 382fd3cdb..484517f8b 100644 --- a/java/CMakeLists.txt +++ b/java/CMakeLists.txt @@ -59,6 +59,7 @@ set(src_files set(include_dirs ${CMAKE_CURRENT_SOURCE_DIR}/../include/ + ${CMAKE_CURRENT_SOURCE_DIR}/../node/ ${Java_INCLUDE_DIRS}) if(WIN32) diff --git a/java/jni/Android.mk b/java/jni/Android.mk index 15ba38753..56e6fb80e 100644 --- a/java/jni/Android.mk +++ b/java/jni/Android.mk @@ -4,6 +4,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := ZeroTierOneJNI LOCAL_C_INCLUDES := $(ZT1)/include +LOCAL_C_INCLUDES += $(ZT1)/node LOCAL_LDLIBS := -llog # LOCAL_CFLAGS := -g diff --git a/java/jni/Application.mk b/java/jni/Application.mk index 8b6c80208..0f3697300 100644 --- a/java/jni/Application.mk +++ b/java/jni/Application.mk @@ -1,5 +1,5 @@ -APP_ABI := armeabi armeabi-v7a arm64-v8a x86 -APP_STL := gnustl_static -APP_CPPFLAGS += -Wall -fPIE -fstack-protector -fexceptions +NDK_TOOLCHAIN_VERSION := clang +APP_STL := c++_static +APP_CPPFLAGS := -O2 -fPIE -fvectorize -Wall -fstack-protector -fexceptions -fno-strict-aliasing APP_PLATFORM := android-14 APP_ABI := all diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index e8f7272bd..e98342e7a 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -30,6 +30,7 @@ #include "ZT1_jnilookup.h" #include +#include "Mutex.hpp" #include #include @@ -192,9 +193,9 @@ namespace { { LOGV("EventCallback"); JniRef *ref = (JniRef*)userData; - if(ref->node != node) + if(ref->node != node && event != ZT1_EVENT_UP) { - LOGE("Nodes not equal. ref->node %p, node %p", ref->node, node); + LOGE("Nodes not equal. ref->node %p, node %p. Event: %d", ref->node, node, event); return; } JNIEnv *env = NULL; @@ -478,9 +479,11 @@ namespace { typedef std::map NodeMap; static NodeMap nodeMap; + ZeroTier::Mutex nodeMapMutex; ZT1_Node* findNode(uint64_t nodeId) { + ZeroTier::Mutex::Lock lock(nodeMapMutex); NodeMap::iterator found = nodeMap.find(nodeId); if(found != nodeMap.end()) { @@ -633,8 +636,10 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init( return resultObject; } + ZeroTier::Mutex::Lock lock(nodeMapMutex); ref->node = node; nodeMap.insert(std::make_pair(ref->id, ref)); + return resultObject; } @@ -650,7 +655,12 @@ JNIEXPORT void JNICALL Java_com_zerotier_sdk_Node_node_1delete( LOGV("Destroying ZT1_Node struct"); uint64_t nodeId = (uint64_t)id; - NodeMap::iterator found = nodeMap.find(nodeId); + NodeMap::iterator found; + { + ZeroTier::Mutex::Lock lock(nodeMapMutex); + found = nodeMap.find(nodeId); + } + if(found != nodeMap.end()) { JniRef *ref = found->second; @@ -819,6 +829,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( jbyteArray addressArray = (jbyteArray)env->CallObjectMethod(addrObject, getAddressMethod); if(addressArray == NULL) { + LOGE("Unable to call getAddress()"); // unable to call getAddress() return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL); } @@ -849,6 +860,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( } else { + LOGE("Unknown IP version"); // unknown address type env->ReleasePrimitiveArrayCritical(addressArray, addr, 0); return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL); @@ -856,6 +868,11 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket( env->ReleasePrimitiveArrayCritical(addressArray, addr, 0); unsigned int packetLength = env->GetArrayLength(in_packetData); + if(packetLength == 0) + { + LOGE("Empty packet?!?"); + return createResultObject(env, ZT1_RESULT_FATAL_ERROR_INTERNAL); + } void *packetData = env->GetPrimitiveArrayCritical(in_packetData, NULL); void *localData = malloc(packetLength); memcpy(localData, packetData, packetLength); From ab34884e3e47eb611d42312eb05079119f62e8b8 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 3 Jul 2015 18:14:50 -0700 Subject: [PATCH 018/314] Set -O0 anything above that currently goes kaboom on ARM platforms --- java/jni/Application.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/jni/Application.mk b/java/jni/Application.mk index 0f3697300..5f68ef6e1 100644 --- a/java/jni/Application.mk +++ b/java/jni/Application.mk @@ -1,5 +1,5 @@ NDK_TOOLCHAIN_VERSION := clang APP_STL := c++_static -APP_CPPFLAGS := -O2 -fPIE -fvectorize -Wall -fstack-protector -fexceptions -fno-strict-aliasing +APP_CPPFLAGS := -O0 -fPIC -fPIE -fvectorize -Wall -fstack-protector -fexceptions -fno-strict-aliasing APP_PLATFORM := android-14 APP_ABI := all From a408e5f6858a0e2f13c27e56f203b35f64ab07e7 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 8 Jul 2015 17:59:53 -0700 Subject: [PATCH 019/314] set ZT_NO_TYPE_PUNNING and -O3 for Android builds --- java/jni/Application.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/jni/Application.mk b/java/jni/Application.mk index 5f68ef6e1..2a7897870 100644 --- a/java/jni/Application.mk +++ b/java/jni/Application.mk @@ -1,5 +1,5 @@ NDK_TOOLCHAIN_VERSION := clang APP_STL := c++_static -APP_CPPFLAGS := -O0 -fPIC -fPIE -fvectorize -Wall -fstack-protector -fexceptions -fno-strict-aliasing +APP_CPPFLAGS := -O3 -fPIC -fPIE -fvectorize -Wall -fstack-protector -fexceptions -fno-strict-aliasing -DZT_NO_TYPE_PUNNING=1 APP_PLATFORM := android-14 APP_ABI := all From e45475c5b5bcee4fb88e797a50eb38b6ad3d6923 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 9 Jul 2015 20:26:23 -0700 Subject: [PATCH 020/314] fixed a misspelling --- java/src/com/zerotier/sdk/EventListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/src/com/zerotier/sdk/EventListener.java b/java/src/com/zerotier/sdk/EventListener.java index 078023d95..bb191c1d5 100644 --- a/java/src/com/zerotier/sdk/EventListener.java +++ b/java/src/com/zerotier/sdk/EventListener.java @@ -42,7 +42,7 @@ public interface EventListener { public void onEvent(Event event); /** - * Callback for network error events: {@link Event.EVENT_AUTHENTICATION_FAILUER}, {link Event.EVENT_INVALID_PACKET} + * Callback for network error events: {@link Event.EVENT_AUTHENTICATION_FAILURE}, {link Event.EVENT_INVALID_PACKET} * * @param event {@link Event} enum * @param source {@link InetSocketAddress} containing the origin address of the packet From d5b48c90edd801f41a40783312deca9f233605ae Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 27 Aug 2015 19:51:27 -0700 Subject: [PATCH 021/314] added a 512x512 app icon (for Play store) --- artwork/ZeroTierIcon512x512.png | Bin 0 -> 51309 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 artwork/ZeroTierIcon512x512.png diff --git a/artwork/ZeroTierIcon512x512.png b/artwork/ZeroTierIcon512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..d225c2e339de78c4e4ba15c802cb7ae51f4222e4 GIT binary patch literal 51309 zcmeFaRal%&^1wT|OK^9W;O-s>5D4z>&fu;g!3i2%0txQHJ-7u3?hxGF;S9;QyWcLm zIsc1uaV|2?!!W7ps_OoARd>Jd%#e2q@={3fc<=xK07?3V_-gqbSAktchi76>ce)Ev!ud0JoW9 zH8W);i^=&KimV`A$d5q_kXtGq*pMGP)M2Il6hvX+=v=xDFbEpd%d&IGB6+cdy8=E3 z28)zkh!84EcC`f{#a~DPK6x!hxfWk&?3nH~R1Wjpq&iRPTmUR>waaV$lwsf{UQ3IL zGgC7P1a@3wLYkYmBJ*nNzT>756oh^_a0e1X0<;~LLOY=@4e`}5(CU=IPO9UYrT&{1!oomgW^o2 z?*&s{1+$lN=Xouxg4ink6+09#UJST(uhSOHoPpApH86NatY8FD)_eUjJ+)&FN2u%o0-f?r|)?UzRXP8N`fgxYWtmW>W516xU=q31;QqY_R< zKlUf};#0%=!2j`JEk4K?@D1w4VO`b;01@o9T0#Z^dyq~ons5oVQSj*JkEE%Tv@$q- zuM*&8+R;KBN=WETX*S3dMRu7NQW+7Wz%!AfL;4+KU#|)FvgNkNsRIfC(~9pia0EWK z=q2Ez@fF4NpuGoE2mIKvmUau!7Tdy1K)jIPIj%K$2RH@LDI}+0&_?BsLQ-0=bSzv3 zd}FSI31vd1L~+miXlP;Iu3%kPOXBn5l?@h#I7QEfEFlf896@9gLp%l2V5&z_Hz6_8 z#jB=gFIQuKESTf5z>3gtNBajdV34A;pD(=8wSRLD2ZN3FLl_W3YRXN9sr`Zk9Qz$j z2QjLM-}{(aeS1=WKrZU?7%csRvoL3EbS4IP90_q0sR*f!@Xc7W6XM=0n9=(xggpsQ zlx~ObZwgsElClO~m~xM~e1$=gpb>sXfqI{EgVyUduxZS1tZn4PVoQn#g(?gU2Z;dMEb&d;iEpYPxAHJ!K2<_{NXW%6@mu{}a+)?t zc>T_E=PeFec;X^zFIoG2C(wmYYluSJRQOabNU=4@@5LmQ9|q8l6LF6egEoEX@+H2L z7R2*Pq1Bn(PSi9W%9B9~@d30%R)9vtb9s?#|w6!WS=xmwNPwOPxdjBu-3T%b_V? z2k?G9SM3gi{y9-##aw#aCy4-09{a{X>e#qG9y|b!LI7S>7K%|)2Q;$1KaAJ2x6I*E z1n;9GX_rW`gQNBFObrD46yL3>2O>=c>`g@w+oK|Jzfrox#UAmusttVZw2FIu2n_)# zQU;4D8upD^7WQR(x;<$ltS?#kTT-;QPGqq?q~by0NfKUi%4qcOkiK$eCtSvG%cPPG zp{IRiTmc&qYorj2#^|N0mL?w!C3xu(BVx?{L0p~+*kf1`uKnUU?>0WwzLo3slD3mb6@9%txa86iCJzm7!m~g)7QE~jT|&ytMXV0 zSTXHT?64N5oXLx5w28M#kZO~PiF_;*&XO^RYKIH%hku0ujWLeNi0O^7ig6XnhLK3S zuVDSU@#9o6cjm_|!#8SmFT-|xl*}MUKgcZCye>Mpm;8x?*g{crU6WLkzqqv8#XN0%d&1OG%Sy^( z!$QsSA#=WD{!>o=YF=zMo6aZAjavD{=ebt7__{FaNK z`*RkyBPI~Oqi?Eg?oBr2U5I4l5a(r-wurWfJfwr!=$kQ*=qI%$>GBLWmmN&PN45?j33(mD8v+wq zAITDlK!8t>5mk+o!s607HBp|CHkSsU>cTzmFyTaW(AZkndzBlOhA^BvvsO?TYE`?V zJt;YfZF_DDUNdORHD5hPUF*BEuyWtqF($TBKAh7%*3LEt%-KLV^1S_E?&4&4`erkP#f9a4QXbro zpd)luxmtWHT>4O(w_@7La|N}YM-xY#M?!MO^5Gfk0!I!3!1kh`3Gw2u`R_c@7Ac^p z8DG}NTE{ZHw3SwT`62Fg$}uMgyR(U<+RRkdv<3DU(rEBj1a47yTzDGponEka^?KpH z^nPp~wN8e$fcy226D7nv3|SsQ6&pI&?JQYIQ_J=Afv7odTcjExdO9m3Rbr-~nuLpR z;vT)hgJ+j;s_^N?HzuV6KFO6tTpL#WX|4*G z-22?|+=IMaSw40hqk40XS;Pk1Ff)Ey1g0AwDuGz8N|S`GqN_@x0p#Q+8)O!0EBSuy zlRAVAm*KFa8qem@+uN%a27Api$F`kPr50OF^D6s=cBw^iFD11S&F8c&N5uy6eSC%+5bzZOS2-)_`+ZXfJdOS#W zM1*lQ&wpKXatAK0duxS%QMSD*Q>i^$|MJ%6j6;<}W%k4D%Nn7Dn2MY;&(Z@cSG?V# zxhsoAbG6C+pm{S(0V}HuoP7;dsfpfgk8}B%*(0${l!zOGbDP=HhL&Rhau4$Dz0rEq zB#I=lHO~)c^F@RH4*V!{!u-$F+h*S{IDT+CapZBi5E1%T<@VNW^}LD{+T%6#D7vm4 zIx?Y-lV{*(ajV!h_N}a~yHFm=mts`X+E10|^FAB+%C={gGn{_IbGtECEK*E8e3i!M zvaoSGf}o3y_uNCf$PQ@7cN})ZBsC*2v%}=BYq@*4Z@x`1>AvFFx~8NiT6*invAx}C zRX)jEO0C!8ZZsNEl5(5!$_{hR!=d5yyfw|;71x!1KYy{X-p;LMU2RtH!qwf0&=>VO zbI)L`O@PJy_09LSt@8B4^vK1Q>!zCzm(#*_SHyU})?T(J zw}%=2zF*FA&zxJL8*#kqe#GAw>Xgpw)|_@n|^5Cebg0184xoE}Vys*qQH<&7A=<1;=*?0O1~2N#T2>V_&1I zNNB(zzy%7t_rx#BR3FHu&x4}R1#tv;4=z$)AE_<&iDGtKB0Y=|4CeqEMh_RPh-xX; z*xp`$Y-#BeA;1~I{CUEGH=tD+=F2vi@GR1q@1EWRnCgKQYfWBz4gkQbXQ8a_q%J4R zYh-8h+`!n*(B!$BjXmfR0|4L`a6aJu`cce8M)I?X zla&CO$YVefbvXqRF*`>S5{~Dbj7H3yTqImP&sjLQxY)TENLZO!IGC8(nAn&ZS=o5m znR(e+N&b3}3BrS3@jDuu^1c?A{3{&jUjk(2PEPi`OiZq>uFqZBp4&N^F|qLQ@Gvp6 zGO@BUf?6;F-EEx=+!$?vgnW1xRN{u-B! z{XYZQ0{>zMqR8ZCV9&(zoSEsr85tY>)5hM}(fViCj6tUfYZDt2TPGmMj^)4F+5h9R z?w{uW7V@9!{}~uGCvtNC-S{86ugUp0Pmh}a*>@8+i~nKvsQG2~GZlW#5I<pbX+0M>d@K@FR>q;MVq5n8W5*jrNTVp#{ zAno4<_Ls@uycrwun%X(q7&r-9*ch0ZFxlIh@iYBP__vn-%qm_nJ8L^f&>&3&+4!0M zoA|$4f$l&k{JH@lC~g6?w>EJ9yYb(&f3yCXr@Yd(KqmuRBNJ(HL6G3Ng@rM%0S_yu z2{Su8BPS<^DI>QjI~$_`mmvou2Qw=dCl4nN53`ZM&vDDi{oVYDYjHax=f_$Dx&E~* z8QU3w-2ZD(++3{ermUQ%jO@m&rl6!T;b7$EVdh~pHeqKmHs&&9HsECcN1(qsdlKlC zqXlTyG_d|#o5!&jgMzVf^KcpS7_u_58k%x}a*CaWk;jyS4HUwNoyE|Eorja#@E;-m zi<>8*URVH~>>SM0Dk%ZoB98a;c9MT`&Xg=*CPGp z>SwF}?F49N>f~zRXd+?;%8&m`mHqPi?`Hqoy^*7X6~Ow@K`)Q=kwo7@gL>=v~>9&_d;G!*@KeM;Agq9@H0J;{VQjFwO4;E zUu)-I?b+FxK@TRD$LGIn|E~W}TaEu0+rR7o)AnDcDz+9*f~nW4pNdDmZ4VZ}=o-+B3nW4pNdDmZ4VZ}=o-+B3nW4pNdDmZ4V%X=*4R}0Kmo>003qJ0Jrl1K%g-IV800f?3x1r%z^*_YV?oY58D8M zzml}Lh_c(v?!2p)v6}nC(J;@2{Mct#3(te|`U_hl{O~P(4-{$GD@syKG&B!1SW>tw z7{nyQa3oHgSq$vCrt^}Ti@f>q0#~`Fi_}G8*Q&zmNfWb=IuYycCuo{hxf&Ku8|eq` z@=7*B_fp5>PQnfk1<=W{V&d^q>Q^+2Vth->(MO_gLDC`ZPA2_4`~+sTM)-CD^UJ~& zA1c;?Nw|x>dDT{Rd-=B8)_eyKt0-)v&53Q|On1r^3ZHODBhO%7C`i+=zdhh1;7%n) z3v-k|p}85AQ)fp=oj)zW{aBngLXg>TtSu?^KF$n3hS^c#Jo$^TOrfTwtu7reotYdX=5TzCZE z%*)`v=~r{WcbCfqw$nt2W?^=zcWYwcvD28uvv$$o^Sc~!%g`2Mz=w&@?%*TI__r&n z;ucmxDX2bcglSdO#I*`&LAV!%B9@Bq{(8B&^y<8)yKH+iW4tyBf~Gj#l~m*8Hi|Y^ zcl%nYEyeJ?M%lTE_e%dIdv4SN&qU+lq^9$2i&FQ^MdY1!Zkdcx_ZA5-sL;3|z(*F%la{UX7Gm%zp1&|R9SMse3& z8m}XqQF#)%Pz~M%&hV8DzDadXk)!e|CqIMYWaVE_OSIJI7m%M0T=ab>j{5sxOjbv@Hd<8Mjtr30e1C zV|CYT!g338t5-BrS}|n3l`vr}sownD*{?o|WoUvGUtvt}lGWlJeOO5uB8pZ)bub>z zX7#{Z^;;gS1KiE=gdJ6lW^8{h?_S3vz`EU{@dw4c!*B_Ma>&W@_T;4+gJKnzIGNcE zHGM^=WK(2g(aR38)cMqpjI*+RlCZQH71n&1m1>p7%U)j|mTl)4f>y+8CvxbZOxskm z*M?Ve1;cjY0ux&k23x0((BH>BqZISZORi_l@J{O>I8Ltnm>+fHX{Pv0B~?|R_0^eio3oM%gZi@jyv%hXRM@au5OZWa%E>U)-X)rfPoxRsypjmNxhd^In}iqCFcd;yb~mho!|AO?jZ+&_8~p2G0uy0(saMUu z`Q08_LM?N{zWEuhyMqK97ku|811x&@x4rxuEW0srCN`+*#Zd7#Zm3fX6VMUdbg-Xg zG!U^;s?{+ex2nt>IE)Pw3an8%BYlW{_L~wt@oy^a+F;@dDc7|ypo7b)S2@Ai}qihC81u#q<~+Dq0>KH}^)auQQ0Z!s@&47m{7 zDkEyrLdBh9m+6xUUw&K#(?)@pf9W9k%ICzhQjL?>db#OpC}rKMP;nmjYSY-X{QM6W zCv#T2Zi~G@OUU8kcQm_4E$8mfl!%L=_*-Py_WQpd`KBJVAW*x>ML1XJ9n#_yKL6ok z9!&Ufrx`G#vv2ji95ar*Gi2kIq>td{PTlj=Oi9X@NUY>_X7__vo$qiG`C=xJ!m?pC zT@M0UR3;E^`%NaJdb|8L(3lSI=2rc?V2YVF7>olChSfxF@bGS~i`oHHlW!Z4)tN4F z+2EBqFDoI8$J&7U0lKl_^|XGyB2JgiaA*0M&ICW0(f-5TQTfTyLCMZy2_^| z6RnkGKdEJ>;wOG2;(w{NLpNCquU+Zb!Bp>-dEf@rLf1$gy%!%VL2~TEq{mwpW zQ`T1mZ^1?oHv3G;z4kTILr>)pIr4g$1YyPI*IHp(Fnv0%YvIZ+JD0M`xY1ILIIm0I z+$PpyIC^VsEv88);(RWFhc^D$oevu&k``ORs4L%q-_!0QV-Ynf@#e!?swa{Sg&(U^b;Vq`$78Uk8Ns2o}V6>Y3%YV z5GNJ7q?X3R(Z1!I00tJM4naY|&@+*f2GJaWf1LshPBof^1xB??iuHv_s+h@n%lZzS z5?=atcyr7W;x!i;R7&hseufln~LxV2kRT zl%upg8s}Q|4LA%D0Qcx2Q|QjfypAHsFqI(!Wp&sq)O08nR_nDAI!+gTS}4Iv9?uk)$Y z@@YnAu|;7W`uINMRY}mJc(ssXE%PGJ16@W--QcCX!PHSsUjp3fdix@6WDU&x+{Z*O zmS$IN4NZD@6%}yke+H(-fMm!dZ_}0Y$rF@(ppSPP>chL>qG^V=CYg$U0p1!mA`@>_ z+i0-aD^z%Lp@ZX+4}bw0PilXdp$Od^7_ixOQ&Dxd)>CAtG*d|U)zj=?fOI9?4b%QX%M#$DoM=_-++ZZpI~@s zYT?_(?4{>hnDNqOqQAe{#C2eI?NG<1&a83sQh^8Izo{;{5J; zQ(sNYT3F6<24UV+3#>dRT`?fqYKAFg)%tE$bEagR>c^5e5aye72NP(R9xPqGgfF7g zYKpvurSJweWj^1iA^6gK0O%_ov2CLh7nPF}BlAEYV4C3Ut>?X#S^a4=0p3*r_T08= zdaF^;N(n)}Fv8bWXd6E@n=){}_vT3DE_a+ykd6Agx6;%_0mJfKvX8}OFsf+W3y#)$ znnJh_%bnO&6hfR~jAn$ggZK1HtyPEsEDld+^OJ`Gd)^WlE)0gf*e*R-Qt^CM2yL=H zRR;YNeERw3WN*{`3~)aAb=Pd_2Pu{QjU555;cp?fUpJ#!@H8eteans$1JHzz=o8@0 ziKz{`x_VD$KTqQXYt0@?+pD_MOWUh&pMiZ7eY*ha&RYU8SS#}HTl)xRd@#)hid^YM zzMi9R01VsPA8c>1>C^7V0_D7o-7`={VUOk}Sh;N!6xU7}Rl2;Os%r;M2496%fa@!k znvbUGl{!IxJOa%FsV*y|c@dIgKC~%M$4&F;y;`x4-2_{~XF33uvwP0|m1XKO)C6xG zxo7UL=5&yLVR&1%?j5;<83(xa%qd5Mj54&!C4|)zsK_Bl{Jxe@fUx?q-o1N|)EFo% zvpL;+P?R7yjd%b_>ZZ;0(s;zf7uSzIZsrv3W_^=OmWFbLmvb8rX|8i_)8F9$(A7m6 z&OUr4k_iMhx1ce@I*7(~ee}wX$(k@(yKXs`Ooon4_lYjcGo0{3b~#nlRaHF{Vj~3t z5IxSV$9;g>NQ^%xB8aBS*`*AZWSZ^M2*IUkS7jmpFm;MFI&vM35xfsQH{fzJ52}6- zf6Zf4+u||M+jj=>?R1H?gqrNbJcqu}0-mC5k_I}yDwPBKcQteZ_G#>oBl!v$0>HpZ zq!Vx(vK~8ck>rs>#{vW>h3Va=csl9oagVXy`n%`d5n`#~`I3V26-`W-@s6vCYVtvc zZdFD0>uNp3(7Qp1xv}`Q0rzLO%EzNG+!q&VatO&IK#LD7OFk(8GrQ2Ekx@(uEm1p=blSKhIHla>QX-BkKONu2kYxRlEP+S6uOO1KP{?BXy^^R5}fF_ zeefh}<6}))>#IsC)@4xpLue^)Fz6(kpbj^vVbW+`2D(z?%dX?_@h<{t5 z&u)?3aRx~Sskl(jxud@n@O^;qL_#Rbu3zWKwC2Gs$Hyg|;R+qZCQltuRy7n^Uf#_hJDy185<{kWWn$_hY-6ev9G=+sUPo5Jy2n>5wA-tL}b zdwo-DSvd}+@({F8eC8hdIL7>5O{p4g?~I8L%hWzT!=*R6LzA@^b2o<$4`c)qded{> zCe=gQhOoVr^pB3m0e;#1aRNZ&6VRWl+eB%w>;G8%@E&Zb>7ayfUyuL3EI-^y=v*58 zd0=9lvI3~CP(QsTdOR0tzM7Gi&S$)V#evlIshxqZQv9ySEY@pYZ?6t+ReW zf<1fvO8wP>6}BGH19Ic#zOdy^7qP%W;E7hvWKhQ3L(I2z+b0cYoxSpP4;={X}!tL_dSX`OV`B5*pUaK%gUZyG}^{vSrJXl?ewRDS1wG z;@`DxE?3mBVf01zXDMWF&iJmO?d)Bp6ohuPY!b*eEm`>6`ug6CJiO+0k}TS2GC3OH z=h;>R4U0y;ykd9v!-r3cE#77KC-A^IIzKH%Mfa+^3p6CQ!TlCi&0jvv3jv&85i4(o z>2o3$+2pU9SG^-$2w=J$-gfqhBJ_m_;sBed+_xW37Asf|cQe69Z77|FN1s<~`7h*b z=E{it()hlN>*0A=TNQ5?*U-4HKQ<-HD?^;x&I)10F4nGfoA%$hZ)$KHw*c5q?wc(r z1pi8QCw)cb!uviMj?1q2Piglp_Pe2g3;P?=@M@Fd?L#RJEDFHm1dZjve=9(F7;l5H z5mJyjBR~hFyPc8}bmzBx<*5QtQs2WpHVSStc(b2$wUpeQ%)cna32^#CY_C};mZ&;` zh#x%83Q6*q9mJR(7y|a2?@L7N_?9BPwNWCC$q?w?AB<{#x%-*GIl(ILT#+Mg?7(bk=hP6R{%{B*yZyc^jw3oVPyjM8VNgGleCW=~bOr6C z-JRw{0j{d-ZE0Sw2fpw1eOyY|O%w|fny*OXM@i$! zKEAH4uJ@%S*?D*bXi+42!Bo9fff@~Mzv^;|7zYUec{0RPG6_$Y?q4{J0c2u)(we@1 z^%!|*Pe>+ZY`m@oAauy;+i4OW3YetSO#^h@Cpe7qN zVLr6s&$MpEeXBl#`{e|VwygG``aNnm?|r_>%RV4xdZnsMLp_d8R2T=p1`e8mTp2YSKm!MO)V)&%#J!HM1CU@oddXJCv7!fq zVMYTyazx7qw8p^uA%Z<-QZ71J+yL0)k}o6A44DZ=-w$|PV$il8AXHxek~4uTN2mZ~ zR+%&BNQIjTpebZT%SOyd&Gat2{0L{6mEWRSP%BH%5%!gTaiRmnM7KL&lq5VuVY#zt ztz5zndrj>lRXKs?$WDqx=^&g;Mc2;?1wq4utPTQClSSqi+;oGH`DpROF;UVy!Garf$-}{(>u!@Elk)SixqfKhj`>|i4Vuxg)e)*1! z`K2RZ>;`+RV#;ou;=eMJD(oLwG!^?Re6QlnU#@h)%PLTQx(|R8ru&(ny>R`4zg`>( z=p}$XZVkCz9>^qr`IWHHBmXtfQNybD@V`)KW4`|t99PrY8Yn?Ng-Zdy{~EY4L-H}V)dSY;1J4WIUu$P zK>UbDCrR8aS~-y zJwE5<@yoIkiNs4O%51dzqogB=itZ0fj{2i2g_^A~07&I+j7l+U@kEh>9FdyM4x!&W zAw`VxBn>rDZsEy}3B9M}NjBh)F|cPhKZTKGLk!Qul{S_(@n+TihChshuZ(bf-OP?+ zySr3Am_`F-AcYRc7uPNNJx=O#Xh?o!$m4T($h)}U&x|M|%9y$3bTVTxHL$kMh=ije zG>2Y2*U=m}QJa9xukJ;QECrl@doj;i=%734jiv%4enO(4n8oJL|% z;mv*)MpFmw^_$leuQf)~;dm#y4D|}siZSHV!Gvjp?HHsNVMzQ@dKuCJY4tCYEQ2TD zi%C{2S7J~(Fcr58+rO(x<`=>$X<+7-(6!IK;Xc7z8L$c;n^TC43?VThN$WI@(8du> z6_4DJ0iYU=;(O%=EO<{rsj+kC_4E_#kFmv`ANAcnm27DOHM{39Rs2X^T_Bc={c_=%eX* z&ej=k@1jMao^%K?YXRn-{c{n?(R&BH>kalpx}$<7-18&typ zbU)CBM^!a~!iVZ8jY6T((v-;I=`mgJ>o*@FIW;cWXG%?{|eoE0){hU&uz+IVXCSMy{gNM7J6w2%@^t7}2Tf&f#EkYTA z(vZ?PQHx-@<&7cm^B#rnawJb1i699^5gc{?!q5}!ao~Bjre#VWFdj^g4np(?)9TIr zxF0oWcar}&LX1C#!h?85<>obOKs3A1Iq`+mg$U1ZBTGbbY@xjAR{KDgp7PbwbJMy%60yU@8QR^Fd&iy^Jn=BC*0z9&`vy8=lHF%4YS0w6d=|wqW zPzmBQW*rNHoV$DEE4&P;if!*dJkCqUT48dnzJ)-{F|)CEk*`yBHtLGR4^Hs+pb(K` zd?rOlE*R#Wkxh5E>(d?lwhp&lEXD)ELxjk({f)8uCySWweIN;H^2ftf#bWvCnZFgE1kr!kC4&20zW182p{GzHY`#y z%SJ-x_hw)K93w}o)2LmxaH14)Me*SXI8OeoJpOj~m)q_qoj|uc3E<~~aOjL5Yv&lz z(bO`ufXotz3N(QDJN8>hq!!hWu|zHI*Cax2`Y2JhTX_O%+mn%Ol(YUvRzH?Ihhe|T zEN^DEoqP3AL*SsN3L|1In$0cTGTqzJ7f0?xb9WYiQ@NHY0_DQP62?!y^lt#~cq-p^ z&g=UKPv}QLf+>=LwStb%vcB*N1~3E>gC6{i<*_Ng4Jks_`^Fc`%e3RGT%h+QzB%B} zEd3Brqpw15j0$GwIAZ3ASKOu}YtwR1qGY3YbJAj};V*;f<~f2~x_JYlmRP9DQGT{W z0$Qs*LdHM^w1qFv!u*~x=IkiE^AdE|nryLVRLKba;}NF6yWE;~MPtl`c4c(Gyq#o7 zDyVZ^iC19RkaU1^4-$HOuyBl>p!=QeJWFMFc7C6*iNJ!mUjc4siJ}1%a3?VzDW<~{3J}#FC zqj?<0+6Xhp5o+c3DuelRv-@zFb&hzYMVwFkSlO)Gub(*tUa%yZvqLIk6CgGBruFmf zGp=B1k0`*yHhfp<{yYY01jjpt0Vf5;wyi|8rJRuUvD<#ehXL-M^wIPSyAPHeOLs5&b1M1{ozAmtq8@N`JmmfIEUpx%^}O^ZI@ zFzL7~9SRQIFd1}2%6rvO%0Pz&t`kYw^c|b=kw6zUABkc1fzoegM#S5nBbB2fMIs0I$0ES@BEE}ZXaXIFB-u{Gjk)dh zqd$FdIrCs-kQq9%~>_Jl9 zXCm&8KNtWkHaPg<%L&1)C+?17FkFibv7YHXU+?!7Nj8tt`XpNz(6Ybq z53Jx~rZ&{3S7MEi@m9XCb7s-B>dWMZ)csZ)%MpFf@@}`Bk#E={NM03FjPL=Xi)#tu z!$uHkod}n4 z`q~z58ma9nisA4{nhucN<9YWCyHC{Z9ippHdDOu|L*PyN9!dPUye1D%QjcrZoGuXp zOAb}n)`?ZElL_0)#P4jMvcl^)Smp}MnI$vM%W`mw>>@cY$DC_OIhqai4cH-aEaGx# zqe3(^w7U8voV6I#LQd=gjRkId)Zay;!2z{ z3+?Wu#dT2U!osD?ouZ(E@m@n#rT{Fvhwl~W%CvKKCn}(Ds<|PNc&;*5i+H-bB(}C_ znCrafOXYI3n3Y_d3ed84rOH%ZYx-+r9`}h=edZNzP$!mkh87T$daNk|X*t$2bDa?Q$dv{UfDn(^kCk;i5U~V@T||6o zXIJCNV%E0!KeiZk8h7HuG`@T$B6MLP-_lQ#`VxvEAp`D5)2!>uFYdzLLD(|eUE@<7 z0mJ3GjPLn6;q0oJ2Q6cVE{DOEb|X}UQQOG{0l`eQyzC324k1$4k&=e2Epq$FXfr$3 zFam_1+)bN3Y$o}0pjKfL-={b9iQiB9`ZvmVmPn!m#)cs9d8d5blJ?t_OXyH#B~y#c zIMg}Kr)PQETkgCNUhQu#-<4{%<1?j5edLAD!Ihm!wDfyC1bjTZF5f(c6({_1u)7B1 zYPWHNvcD`m+&kTQVBS%hG>fyb3*|iLcF&MdYHlno#d|?+Y5OFHT4O)F{W_hltKyB8aBf>?)`{=yJbB1|E46O?~f; zJSXMc-&~vLVlbFq@o<{z4ma+)BM_B!nCT$^C=xXJteGpTV2ld7-nwAx-CZSQP9CI4 zADl&T+-lNd)u=jN^_iBmxN#O@O|X=*Ade`N={5@ChHueZoKmwRe)M`lr4UJ`i)DB= z3avU^yqpa*t*~$lXuI+jvpA5F4g_mLCua`&JdEDTK^%(pF+j6C*cvCK@`igL2Vc3CBH z*yyaC7jLIOK+=aI5SK`RH=T*=z84Nc#(;5Z1TozB+p|QTV$6XLioNdrcy5E~g8Nq; zg8Le?Llc1_s7Xb=0jq^z7k1mmY8%WA=g5ac_zBEbE|``SVbZ2+ny5<2peyLS^Kpw2 z%xAEC{O6~n%`V+kww||ut#G0Iru(DH>kZDXy7f~mUEgu=AuY{Ua^5^{>*lXs;oZd& zKnJ*EP@y9}qft}R!(ZL*noh0!oWApXYki|-anO4Qx$+Ybaxo)yFTGn0Vx}Jbw!au3 zbbXK^QKW}KCRBoFkz5(JS3x8*m3lP?0`d9JOyYn?)*kT#wnfaV^0;&N84t$E~UOCg^M2 zj#00quwelU7U8G@X71`C^J0?~zFxBxy-px470|4<+~MBs`&v8YS>s(nu(tcYtZB8X zpUPC*_mOfPi_1^iDy=ixsP^n<942#ao%}%;-1EflyvX z8ZD(6EjQg0uG_KbRG@`jm^tHKmjhwB2&EEkWyWj zVHIThUJww{PE#f$b9nc9FDbDz#@lUL<_DS5`CHG$#OkiV(D@jcIYqvmcsD;RfhrgA ztufi z3poCv_-g@K^f8OKwDH|NI~+JJF)L9$!+-{TvN}s)a{rL^^17$XampDXV)#euTVB43 z_%b^;H!ZHThZ9I0Z`uXm9hnn9S}G+;VgmPC+H=scOosiQv_d1};bvS_@GK{SVE_9y+Be;Yk?Fe)rjm_4HHM`#wSk=KI`E=4#E$_vF1g)85u(C}zNYLD(h^nt183Nv zGR^kb_cA9Is`cfHve{|7p!P}Xbzq;+bRi&GKWM(f5EGLYJe|Q5@9Sv0Ape?gY)nq# zV996xS^e#ZctYu|HG0O)wB#GKg^vRhM0_tyC3SF1g?zCNnr&Ik80`@8ZWM7hGVW>F zYVyA+;1N2STQF>Z)``>;HO}KEPZ#@cbQtrLAfudaRX8W4+^dj-Vk3L*4!y=Tb~?KD zsUX*Z-WbtTcr?IQTB}cE*Os@Kblcx%6Mq1Ow1*RY>oARWgAPC+$C?nTVHuK399q3A z)gEYf=g@COHj6CTz^42lEY~My!f$xQZ0FG_I;5-J?YckRhC)2kzc3U7R}39Kh;ZnY z!E|eg@UCbX{XkpJNJpbAqACbL3c5xU9~N5qHk+}cB;=OxaKFZ>&x-eu`NJ1BXqY>&sA;l>R_yzQ0fAu?Ry7XZ|;h9l6;1mwKS0hGxT(C553vzizHi|S=>^0sO0 znw*{!`wTi_4VC&AwMCkiL4TNMiZqB12uDee3axEi54|c%R_mYit&1lXtW7+>r=W>o z6Y(E$U~jg&T=(X)C+IX=@TRKfc=qB34Lk@Ez#<3XSBNWTd^M@Xb*SfR)46W@27P`< z$jX55;b8n_-B#aKkRhq{Xh>0%O3yL<(aN~rN0^e1+i4ZA`#ZC84-rDWW*~x<%lXO; zI<{)JXzQd;Q=0jUlU~AjRk5P&@qp4Dkt`799m&1e>L#xpjFQr70OB?j5 zh`l@LhIGd^NWyL|DQM4>JzpD?0 zC2n@Wm49JWA?br63OWxRcP+x%z8CT~XL`8pI18t^gR{ErHoYoM(i!YtaKy7~u=KHK zmSyEC)Wq{qH0NmLiXKqV!CW)4(;E!HjrZE`25nC*#ETh8gph<%v3)p#XR8s)-5rfP z$-(Ao2K=~)sMO0ujIaEY;t=R-%7>b)kPpibgkDPdq6vU;$@WjVwX7wxXQB}FycLOmR{0oA!1cxxJ8CHpv_1%S5L z5k#Pw%5f)3YUg6J0cAC2j5cf;REuqu%hViaYqxJ%&3;p0@i@5<0Ge#k0$ z_Q>$o$GaPn^Zw0sA8bbL7Q5hCD*KI|fWlgZrz!Pe;8qY4S?W z7)Aq-!GJ+>t@_JEVw=ojZyZcV3P?~IWy69C_ZYa*3}V|ZetmUchLTHFa%5K$c|7f! z(WcjIK{+!rRaNu>>k|zmfO9YK_3iXd;>p!TYHxV`6yzH~h#tR#-|*s>82>hmK4)Y3 zLJ;n}!{8s5{KFeoEek_x`wRXPnFx*bU3d=(GdK_D&6SrqlME1xhWxk(*q;O;afbcO z+z*gmUbVvv8JOx!e+>pmot%MooJCg~^4N1lQmJ$&&{8DZ7S^MfxilfPy9%taX;)V{ zoZgo5xaVNGzk@J4DN$qW%)4D;=OWF6UB$QVTP>b^zAkjXNnrY2UI7*mH*tHjmr}Rp zKd)|OV)D2(=3(Vxa3e?AZvN2osZDQFv;*(EC%`>bLM9D zd&6zE=HR&Q8{MWjU_-loNGD_bGXsPRxbhVBR zAtz*njR`|&rJi%M>`k#&;n2Fug3H^Gq2)OVXLYTqKEF)ZOwbCJ@#@YELW~?Yj{f9v zad&uaYbo5b%y+T>LkeZDQypG2f&I&budWhL#@!N6YGncLY({jKo@{JGVf#6ydQ)S} zu=l1mR<$ZdBfkQDumo_H{N`%Cw5C5x1XS7Fa15Jo``J=>uO>5WDbhHgm79SIk2*aznjDOj_m*VbpXP|-k zILp$_3ZluN#CdS)=S4oF3h=&1aN{=$z+>G1N3QLkP53xDEwP z{f-)1Z!sdx4@))8|A(fljH;^Z)&~Sp8tG2y?(PPqyQM|Cr9)5}q`Q&sZV4$t0Ria{ z5Xp0puDg!!cgNrd1NL4y*IYB6`Rwm}3BU533>1Qbp0ODrqXF60WTe`Jne{G=-H{4I zbkz5P-pB(K`Q+BIlOb~M8z@Vuz!vGq+uO4&J=i1*A=#aNkHFD#MX&f3d#PZx<9% z-(Pjxy8RrZ?|X$xgyzyjvv1UMUU?{b`BzGNP%g?2EL?gU8eK6l`6%oIWmTCw=LgMq z@i$Wr%)5=0g3-Q>m7D{_8Gjj+>5v#FT%s~~n6H*mCT(0Dp11TVg($OJ%TN1nMv@Xy zs1}&Cm%yi4C~MN=Hm?hUT1wO<5A}|LESA*w8(%BiVA%!>)CT(;${a`wA$Wwj-^ac< z3&;LJoI-!%wWclFTon1x<<25&#SYgj^qZUS+up1$4m{kyCjAg&24AkOQ*yn@-LP6? z5E0d8kyC1b(AuwhuF$M{fBn3EW&z8?S{Kapm^*3iY;E+?A~ckSH-y^Bjc4F+l}1^+ z3*w5OK7YC6&|mChSgj{%N_`Y4tHhIwjP`IDH`D$`hv(fSin=n0ul~vlYRZkVwQ`1^ zPCOTjLFr}aIz?dbk@~lB#`TC-F&6SBF;hLes+lC?VPg017_HltLijwb{m;8?Icw|5 zj3n`?h%&WAo9e^zZUenJsnvmQ+YIMG)#F)C`xV{lToA+?J$IFc7qA90A^yL9jJIu8 z=^oh010dJPJBUd3M&XRn<@h`sErILF-K`qttRYYK-^oQm(AYqb}cLV0%X9r&zVqT=(lW;Q?jg`IdpvF z58ch8X4Uzpc}9?NTo+o3vW_1DIqYk{@jXNc#cumwn^b;Cd1nP0*+RBn+ms~}znc8P z`nnoov=H7G<9xXhc4N@njK;Qv1U7tg+mpI4f~?2o#^&4uozTPgvZsJ`6Ee7+qCu0UDUQ3}BFyKkkc5Yd>LDZHda?Bew1lDL z3NwzwmjycA9klj2=>8SjVZevb)H`BJyYdgvDQ6Kj#ye7`J2dEYEon5a>($`WOWT*0 zUHLi)$_^bUAN}`sjZR`xKD2`4;FE|(z2ml4SbpM2Rb%Es0v^e{wx!TvwdCtin9y*Cn&&l39EIR>X8T zjaFc=Ei3SZ9zim{koqXFDVD+eeCI8e?`o^RijL^STCb~6^ADViGY(ntT3Smc4y@A) zXG19yYr12{&@Uvnw&#D{ztG-jG_b0R3eb&dQGumt^}p%K@xY=xUH$vT@Ec~=&TWRV zyF807K!3q(8pZW;RzH)nXTRI}-Nk_P`tX}X^5)XT(cndl_CJ07=J=sit*PF|c8#k$ z0{5s{U&Y-sCcei@D6vlK8%~*YvOfgURCHN6&u(dBLfq2#HDvDaa91z>IE^h7F0+4k z%tNw*TC?JMkd$}5g@_zn$%p)E4Ev&lbbQyU!m+ocgPjey8Fd~+c2;Q8QAy5;{Hgi8!*bAqVpOHm;w{rd#lUQZ@Y z>GS*yYJdLtLc71Hp<#dn*XRl3SRi6yG_Sb2e;?Z%ZZZ^EV}zH?TyjSEYEwEmWG9n| zvcrkXI`Os=!uZ0^In;<^0j&lko)Pk!f}qrqVUBmAZRKbVj^K5+x=$sct!Cns)hU1P z-=+U%4u02aA|7AD!xC4Hp8Z6DrK(x9sU)lW=6bsr$aa2l%Dc-wnVSVqpLGA$r#y4d zG@~SX0&!w>GyqsOJsH~^z!R=M?i1o->>+y1X&)SuY%pLQh3PBi>VvoGg7yq8J{ka2 zP=Xb+(YFslXoh3Hr_bG8jh}CWY12Y}dBFl^hTILfi?|<{gNu|(!~&alsOS@=#-*gD z2}ZQkGrJ$w#C;R0Q6kYgnG7zA90)bcaFBmO_1-I0BWe!~`2X&Z3n$b0c16;O74LGf zg;IN0B+WR3#1sEAL|>CM&dUedmWKtJg+@2vmGC z#+Nwq6h7rEDM`OiqlB<3qp%=Wj1M5IcIX@&l5Cd+Enq?GMC(hIsguj{!vlXBhS&m? zA``PCbTx%YFyv|5#M#;|ovTg#vf*c}YmG$X^ZBf)qKjR-q&?OParY+;fvcp!Pk~LJ zE^EU7MtEYbr69E8$(Z4)-x=bjg+j|6{-%{KLd^4DjH}*fh|(`DSe(6@uudn22e1<@ zAaIv*O(+<~=`9wR(49l8-WRtXZ8#=mYfmfK0FB3HxUsHk+L?Hc!J4ZPGS+!fBeamS zz8g=T@bA^dheC4X53KQT4nGUfAH#aNBD_uc^8Tcw0np**FP>DNkqr~QNd=433Pi!U z&jJw&tseb$y5~r6W4t+iJQE}$e~N3WU(i1D^0~Wew1VYfmsQ=h3dU`E?oQEAxT6_{ zHdEk;VBfAkZ`!7-Wj;SRe21{D}^uL!a_#YT@UR%0ja!`GmgW@B#~ zw6hc(t3SQiT3bUVxLEEh20T=277#qgm7?4046pYJR(fh+TMX|)n-QlPY!t8zrt&>= zd)*v-z##&8SbejX_c)u$0uRH_yvSGGM#-x9eEC)l9U6M3v_#(a@iZ_cz(Wz?e1`x> z63|u$3jzoa9>TdI={P({cseRVU#J^iCE@IMP2BO?hrCY8gMG3BM>US{5+(S)#M{09 zBH-Cj%kr=tG^}4E-u-UTN1y)TDc6vuqz>yKUs)^OUrvx^5pAf~ihBa^1*Iwa?-g3k zzKJBuZyVizIaxfl#fk6GHv@PGtDsMGOtS+}Wfy zm*gR4Aq*G8G7*J-$)rP+$MthNd_A^o$qFWuhT4&sBFKkg?BVGrh!EytAqNXKzU`|Q zo1`K%J~#bRzttXJU~sKGg6KcT54LAJXmGUUa1{H{MfsU%+*gG(^ydS&oc?)>8Hp6@Sz2$*#FzX@95R;lC#$Y~5J+P|y%HY; ziA|7ae@uVYFmYZqr~azHQ$&I5Zgl;g8i*|o2E-yw%ZG zrP$&=+9Ih(-6!&rUSLVe?jXQ}A4*KfJr>?yo($`IP~bwU>nEI8%gTjOl?foITqTbr zYY?12Mb+g$pYnw$TgF&}2Yu+<;^D!E5yaq1#lLidvsol)=e}o*lSamB27}17kq=L} zwux1Ef4LkLUU%&v#H=u2UX&52>Um2Ak56mm4hNcWom=krR3kv;v=s!pL@q|-aJm(eJpvJ#S*$5G<}Vxp~@BPGi&iZW~_@Ik+~Wg zYwf(t*hZ3p3?G*kK~ z7#r9hNw_tx{nTE*Lt&425}Z918*NPjPk=Ai&_n3m-v41P&t zpZJ*>a+*1&VWFV=ukpS@nM?pMK^B|rvrCl;0Cx<4)@Zo$k>4p@pOPVR&OLJ_|1&m_ zzl|hG9TlfJn;Q8+VHxZj1f8B6#Q&8bK%GQYBIf@-P~*y;*qIOGOr2XK`d%0FfTmGw z4f$MSqbp;u%CYg?Diwf3Mx25{^R7CO4wM-pOUdoi{pN|+tPCUoC?N}d42k@Sv3 zU4P5n9BKuC9E4UOqLgLr^zwAY*2rK@NFX#dr6u(8;vAdxH^Yi!kyiZ2asT3nPKbSR z#Y)9pp%kU%Z&@LVh}eafh`~diyf65^hf>fdo}Wa{Z=IPAY=+i4X_f+;~U$qd!N!qi~x{VFT0 z!fd1u`Sc$6Kx*#`dk7iFEDJ&@Xb!JpN<|Hx!X<9JmM8Ii)ar#){4=-YuHWw%-D-+L ziEn)gVBERXiO^ym_(RCZdsWn1+k}uR1cgfT2P&WlHM&?Ctv^KYUU{K3m+$H=p%16J-So_k8{yV4auM z;IW!l96lnt(g{6b*h4C@eqw0AEaeR>P%hB9k8S1B)$GNdp_?FVpi!hf4S5cf?Asv} z(yL$Hu4$oF&WRs-rBx##l1{{Cxv^oof(>Z-V4X#!YuJCwWldfaDFGo9vkaSe??IM2 z{Ip!Z?j`}BFAXfxp0g%u|H!iYzq$9ZeeFAsODP zu-RNSh@?f;5I}6d-z@FZR}tRdCEt;$p(mL(|FxG48Z1OqC-6Fbd1zVkxyjb*E*@Jh zfMb26!2F8fRJumSfR0Y)pIjpWJ@cHz4Ma}Ni7_V|4!_4i1x7bAdQn0 z){H>*u#Y@FBC1B!VXyNZ`AfpTg7tMWIvLtGUksz@EkR!GwEq@?4Z^FVP|g&eFy$m}$Rv!SMK=wKG8pGj zC7Ji#+axl~AbpznSipn=R|*&j{#02ry|SY(E^7iEZW=joI{zIQZeGk*oB{-NxBs7PM%Yv8hkM#$C_CrLQ(to zI1VyIrL87rG0H^>tMPE1>O&Js99-3WLXu>*TzKn}pC4JygoRrj9|oYkV2|w5mrWtn zo>Itt>9_3BFK$rWR1g3-UxSxSPS|0gDTu0e{%GN@u!JAgLSU+75FWtvoEAUL8haW^ zRwV{S%5UBT@v283VnoxV@iI27A_8)X>{6!aB_k5{>*`9#xHa$7fK12l^7NL64*wy# zVnrtFbUqLl4gESMD@h#{qG>KRa5O+`B_=UN4CxoAK{I5gW=Zzx0ShDeRX*?;2dhs;HzSo7u2vT3f7~{BMr4{1(UrY$9_4b^&*rQ;J z$qD65G*n0wU*}t5CExWCYns92T_jw{{J|e4yR(-vI^iH_NagTLC}-!_q&SAbl;n#T z;xp_1pxtKLy3LH7?id@EyB~*gR=f1LZ`;8_}lnFln1Ze!VY(0j3yMqP{QTZ(u;gtKBOy4AO!i z>W0wYsq7J&J*r4}uawtD@t;neob1$ejXfwll1%>T?qG!o*K`vx_38w#G#sp5B;Su7 z+pUADfg4OLOEDp0_4iCauTVHs?;<0GX0s;tJzvMjF%1>YDZh^ly@`Y?LH)6)k z6g(GI=6ycRmyoop^`6N9F?h9r7bI%)QT6LY8rg>n-+8({2G#->Igusxp9VK4K0_vd ziFkJe$dmwxnW1qU7FiQXzGs@f((@r6C^G6)EWYiMhxl85SFU$^$v0?q3mlnraZLku zgH=ftN8*HCQAkPq>FA?=&R|v)yjRT6A)5B_B6*_0bHcs%y?ng7U)tWt6~#QHJu$QQ zFWF`dw&&P$y^o^b;n%^N9rtmOvE@XkQb7n$7smUGVcQlIpeKdJ)7TRet;?qbVZ)*ND_;M+;$V5{M+M7A6sd$kDgCaPnv=B2>^t&s>Z(bpaCppg|U zkY`XADSF1D07=7p3Yih#L+IJww8qd*mE)wJB5a#pzSk$E9jzk6q#M+J0ug?)1Hj-B z)4$s9*UD%JfL9P}UUl%m0n8JTQP#A))z7y(uv-qi>b4*mhQn?pU-5V8Bsjs7A$YxJ zYag1g1XdbJwv0XH(dbHU;V<u720y?hCAEJw_g9Gk)u9WAET_6~}Ls&;5S)kwP5d6aN zk$DyC6HqSv|Jn9SG%$g(xnAQlG@uvS=JRV{N$=2jv! z^lY~%oPSgt{|P!wg5={9uemJIIu>)&_rijX&U&rng;Y{!ErBxtA1w;RL5j)LRUS`rwk82Nt&fm&8pk>qN6{Q@%$aIU-z3e3VVypUM~wO@#rI z&XN=0x)z~gz4?t_-eEH=+~}FdYzXWx3eB1=T#>nxY%RO2vMMSb!$t30b-2vhl+X5S zEkdYR-)TF70UE%Ir%`91GY%?YLZW0BcT-W$lg==h<00ZL^ACS~e@tZRg(ZFs0(bPY z#QJ5QRn|-gOY>7vQph+65E!&pVpSz3f`ShDtvtWO>b0e*ttCIs;hpA--sXtw3dUM7 zXMP{e8=$Y16}SgHcPC%%#Z*XlP+R#AJluH^mdE7jamYS#-Ryp-a=w~$_DWPFNdbcN*BtrMS*myIUXjCZI|x=^|)SsH6(G4u_g^=ht7o zcs%&I8td57>`PrTP)D;62ug?i)hOlp#tnZh>_Oi)=*RMF-Rjq$M;3#gLST5wj8nU8 zX%htn+);esWo_l}Aj`3T@rJ>nDjSPxknZfhI-+*1F$^4tt2xJNC@>UG=2UhI{b|*z z5+Ldg&kRgGH^@>a#)7!>HTxl-*|3hR)ov0%Tsl1&Vs5`r2Eg+dzgBK28|#`w=S_G~ zG(o`Z8ALf1%C-SEK-~86_qyo3T?8pZrVbRI+Y6JW6IS@$AWa(7_x*OtWC>g;+hX&> z7Z@7}1C>)5QpNO9P-|Eo=zCF~yXzwJ-GuXGkZoW69cg*@t#8`Dvo4i@^gKZ*RFM4$3vKJ_SJkHFWfm-9FO2l97be!Hr9e!V> z?&}I3k+F3?Le=;^KI7@*p~cYa4}<8V{<)i~;@F}UV8!6SPn<6WZ$nh4Ex$KBt`Y4P znl~EZK(ebQQucvovgtmWnkpotQpZKSme@c2X(TW$k}b7=>-3}FmoiF4kH6uS9IZSE zPXQ-6omrB5+^ok&$enZ?;p4?XK3=@z-sa84ap-$mkU)Y37z|4=TWs#j}*X|MM70iH|=#5V`Y#~SgX=kpFDLF|%?JRtpKWamIBZQtG%F1RtDSh;sV zwvFcf2DpE)qq}&=Q@V z-XJL`;Y+^9#do{BSmLkqeV|Hsa2PR^QE`mv^}RzKx%?*qgJ^#Vo*AUFI{*5yJM~!u z^`k9*-*;5?)RrGY^wzJX8v(l#pKT!?AxE8$ zF?aAZR|(k7`=c|K^cn5A<|}8s!sb$Ex`DEwro{Vuq{YOVNNkR)4p+P)8GG^50Sph! z;%|$iH}zG`6Q5YNj@RlC{}aeTl{1ng@y4Bb*ij_`HrjqyB}8ge6JD{?#c=5%Dd$IST0%P$W}9Ygp>wGBe}=8y ze$@ggd6|Eaz%|P|d=))klV8D_?2QkRw2zz&q077f{NtEXNpX0@te>f$GBM=4bn(gK+JlD*K%35L$s|1D&kg*$@^!ei{N<{B9L6pa&55 zly^1^%=TB`?gK zmL-n6@55TR8!ImtNcC_~MYy4GS->5)3b6V531A=$<#a@i)$u_=tY#)KAFlqg?f(pN z!6r{q3MoW#YO#ns9~khzPPP46S4&yqvAT7SoqWHgkrv-={TyvqTWQY>wDwW^>Bwc* zb=S|^@6BjW+mSJmf9*WF4ZO1u4;XKZq35yFW0&KKb#AJmPk~)du#vVoJBsAH)rN_Z z29dH7`>*{t^}R!G?C1G!Y#;F;F+;9+L05~`#$AOtXz$30e%bk3wr>}7_ZLe_+Gh|j zmQrpry5K$dez9@t2_npOMm0XB?8@majsu#=?XyK$z9c({7ec26D5kzm>rXN`84ewE z5S0dR%lG?3B0c7I$Gx4lNdd+ustq|s_FcMLY_IO8PvaLyKSu#rN17W~^?Lk*xfQA8 zVdu}2JfCr9n^tY}0Fa>u=1{{Uh+^2caIZzrV00Y=k)pJI~l zz9M)&SFWIKZ@S%o9Y4BHgUJ34-Xu3MNI0WG>jkPeKbM>#vtgh+rJ`2z8DXKHKmo+} zFqK_fRXUh)XINrl_;AJl)^C5Isg^@2Qeer*!;KU^V8=^8ZLaxP8 zjI#LE`AqtXy6!jiKK&=^%Fw|UC-M87<^%hEg(2w%qkP7iVM=vt>P1WpDD=2yd*elp zR397XR}xFRnpikSZ+KJahrZd{d$>QXgFr=ySR-2WPOa;Vcg)h_7SWH+&_O*4xIdee zy`8D6Jyz;Z6UvP6RJJJ5xHuCw^PEk`Ir4-R>y~Tlma2|PX)Gdx{KuJVB>WyoAi`r8&_Ou8HeDfFhM0*I0Y-lB=R8gEpn6BvM9T90Ijl zsgdW8=iNghO_42cqa@m$aE?1|5E!4U+{4XnKBBc}ae}u)`+6r4Xf~GBY(B4&w(Mfw zIj^*S47xw!DNf1_hj49^KD=4n{V1XTW&Y@A-0o5+X%L#erO#Jio~tZ@YB~b6(WHMG zpKP zO&?M3`WH{K$QawpX^s}yhhxzfuXtlC-Xm2$`t_3W<(^#L{*|7rB15A;Y{&NULWDnY zjD+k9)8$6MnyqdC@x%FQqkeZAyWqB3jW1l4{lrdywH;LHia#9jfDjWL6O4F&N@#R- z*_v0{%kiP&3CdFC7=}i6#jqKRwsm+x2;Rfr9NWv!#G}XvjT9Vh{jg=Cp;0SV z=3)&UoW-Tcs|A7ilRR&yuPJv7g;0TTlgRjP`{&1PZ>g;U01gUV1T^guZ~LpZu~zHC zC3;QR{%=7X$z=Gwn5C%6R zJLB;ZAWA|(buaXx2ZnSZ(LhUJTPEMhPq62I1(X~g@q2o zTJw##BOkcE%F@-CCyGqurQZ%qHF+dkz}6_IK+YJ?`R(I6i^S3(z<-H=N*UT+J=MYe zLBoM|wEfF@tek;Rp&tv0s+@aj>=sV7RBUIfLu zcI3&XouIPdd@lC(PA|{uu9Te-tEiHuzYDS_^}+u*Zn%(zRvpJ;YtBjhyqV!@R*nA~ zSHhrc_6Pf01WW(auT`670O4rM>M$4w@PqVbPDqkqk8ZL1>>|+AoHy1ad@#|n#<_;` z>RNuflKER+ogaHaZOsCc^Hw`?Ev4p%LYaeAvGEud_7y7EuQgo01c+RXq)}`;TpZGg zNb%go-)i+tWk+y}KioIAZ)RsCj37ncDuSLeEHUEvbR!^xzt*$@qF>syABFz(59A$C z=|CI@5Qs#}O-rI9oXd z3kKG%Y5ZO!(jS*mYl2prz1e1nKl&ozCGB^|KY!|6{sETZozuTmV?tJSHg!3D8U67k zP}T;CxF5NI&Arqd%{2#u9@nBVBP>e2`1Y0K)8otK>xDr6W{i{7eZte0eS(>3W6V)j z8#-EQNit9i8Ck$83ySe2+MO95yr;bQTQCsw&j75OpXk)NIu=^qnm6fZ){GR>Ukph1 zfC^_?cAgOzMmz@kNBokqw>3^IhZdItF{b{FxZsGyYF8?T$XlPOSe5q87~+WoE+b_CNvhr6au|*8q)Zdcm6rU_xZO-&I>m_1M zPiE)^NfOCq!zV7j`_0i$J25FARt;MyNu(WOGxPECn?D=AVBSByi#%_z(c?Jw9imyi zjFOwk)A=xVnO@*g=N0yP!smB>53p3{In&C(oo#ersw(8wi zfYw{Fb(`Uf4$bZ5z28h;32#QWdX_J!L)|B{brMlYh#lQ=JM-1SptCIgL-w1JWZ?#7 z^Lvqkuo4?L+nTyEc? zBA$Yf*oIb0_i&lBm3=MW(K;3mn>Xg7Y@l!32~R)`X8d{MI;LRcvt8m|&I&ApW6^;D zqmGk+AZZ3uq4w9oyQD`xe;^KC7qH3kU1)~`q3by)gcJ=YSGBZGT5oc^Oexaf)2K^r zHtK9Y_3pe}z4KdG6BB0Y4qP9xPbXxn-qku5i)NY1!q|ILr;%c81Fm>Rdu9PLb5_DU zo{zOUvX=)~dE2{cWK<~`3)q~x7@Wgy`2zjBPHPj#0v@ncJ@y>{q~P+Fe?G?3pCrXH zfH)J1tX;EA=?2`pOt)f{Ydu}8G_hMD76mm)81 zo!o^Upr>EohzJhKI)5(Iu5%7<24o&vW%13>NH&vY52&%J-w#A~gGFqzd+yABtL;(~ z4~(FZkOofvjP1nc$oA6^vD?dy?xu_9?$j=u<9AZE5`vT78V<-ou3K)a?khB7%(M#y z9!`E{?Qw(2z6GGrTeTiLVToT*mtgZzt?5|RuwdRDG(stZ5F06^XaJG?5mV1?rQ`C= zfyJu(HeyYOIe{(5C%G@uQrHP>hGn;Rsv@YHI49`)EuN=03|KCw$KHV4V}0bxS z{EJz}P;yb){CU&df1o8S?Dh_8&h-e_vFo@3+1O(TU3aotT11#=ASKMO)YMBG72mtR zFIDVLw525{>v(O*a_Mb-`<$N0Tg^a6%jXXjKJNug1S5O>2T)Tv$|IZl=^LdaRB8yh zwmr}Q76MsB{nL7B4nu}sqAHHFE4i1pST*A&D2jXqUdfds%cH+Q~me`C#a z-1Am^x5n<(Xq7RxqIFnQuwY4(E;dF;{lObj^RGMXJwXo?M{D1t=6KqtT*$<7PX?E{+j9tba-?7 zAuzd!`ap8dcK=9x?(kp(L~o&4wo6LIx68XPCJ*kR-S;jd8-Hf9u72<9xou~#NsUS{ zF2}^)veEZFw z%&k)ZN?MiOCcG5CYRI!HT}RHq6K~sK&jl5gdpU7r9vD2fINyXu+x z@U*tsaBr6--!7ZudhgNl=P=SvMcZzrPAFvtr8(qwh`v~Fre2OnbaWbD zosax;cOw?{8r<*@S{;O^NLOoF+9#_T>#tAH9S>#RNbrsT3AsF*K>-5`s+%#b`Tk=u zqp4+{D7qOQa{W0be}6k{4LsG1b>W5Zv@EUXvWZVp5rD>!!$XRB*A(x@H*dz9^#iTq zYIsEi9x!dV`-a^kA!ONu>V`5PNaVmZ+~DOc;oyBSqfNfukP>SQSZH(_D-9M5rL<&x zzgeDPj0u?cD--$bnToe#q>~}HSG@GTU<7ruKWF*-!bpWdmWbgnfN40D3z_GJp>|wM z_Xq_*q56&3bH^#y>cWY6DnhCAn<8%wqSqtkWB|$g(IZAl8E0!XZr{3cU`&M2Ip&L}MEi+4t;=<>SuC%pye7b^>QWQ;TGeEhLi zMoVe|RrBWyUvu6p3nY+YX-auYR<3(e&D zvjLJYlo+-Trp1WKlV`AI;l-1i)VL!J08?tL3`n>2x_~aUIL#d%4Nw|67KF;1G4bum z99V7#2G8v1p2h*E?;ap$jVL3v3HA-D{@%#pjALXg0k#WwKC0jED#I0YeA9d1jx)2H ztxU9n`q0{3(UJaDStosSH?KgE=}+5ncrCgX^+e_?HGy-7e-z5etFpBQ+N1XcEd$xm zjK(tNjVH5*-Dsek`qA7-AynSl)#ML>2b4^u&tBAMO^-><+M(jjzTf(qdIK<<2(Wa4esosM(2b zy8W!MSq=Oly88CJu{NuRhYTfk>DL!psR&W_gh+k#jf^Ee<9ukoL-uU``>maAcN=%2 zjg<@nmcY?OA(OyHvVf4W*7dUV-`8jaLVZZ<72h`!&bdt%3KL9yDlQjRw$w>31(fJN zxR?Q9kX4)ODYEtvgN{OIzy7xQa**0AmH>ah(*YDu!4LLl;rMs@LrZGn2A;_sKrCo_ zU={x+QmsGzhV9^W28d|H<+Xm&=GBt#CgTYW$DcY>3pz+Ws_pf`q-?VhKVwVbOzNj= zgnfQCb7Er;^it_wvm=`qqs$BI@ZNwguT6a?(VgxOosQmi#R33Af7Q`)&j~~02Jw=k ziz>IJkB>V8mh%x(em(Q>^01(L*4BgrtF63A_L%3yswL#D>dNMad>REhjGrRzG>pldhtU3O0u^}?PjBisJfkOw9N z5RlBIBW@ATx@4vRUu-kfutuyig;K08eyv8Rui&0;7%McGM+s%HE13#SP=TbRrk@uS zKL8o!Ir^f`tE*sN6*moM-=kO7@=T7XAWGp%(_biQV3n0)P4+vUPO2#lqSN|z!Oxjg zaJ-HUAh*OX-=Z@#qCam$XK0|CrWjz#I|`x82~!fj(el99d3*h+e5=akTUk}wgYkV^ zL~jZGFv#t#m$K}*0eUG(hXX((aEddty1=G(<=yT64dnR4i2}By_266 zr9@D1Y~&nesjVP+7dE{wO1nSuIL4uS$0Zpq_G=be0K@|cDRm=?SEgFXOG}YH<}wPV zWoyKiZC1Xxl{?xEo$lfHiL7_DfD3TuFDMzGNRT-4<{90God!~T`FcO3Q_x19G;Lf`Hp=C_lhr4=652X zPy7!QB8_!ij{@_jS#%@Dh{0xrp2ZB zaI(xw8soNx3;+i>9pf=dZ~cVHE$+q3V$1P_iyfk0QUg*BgHUEf<$_o2g9GSISkQ07 zn7IqnUyDdP7nbLy)W-%+W5YwVmVb*FY7nE31nR=2;wf=J`o%3a3jFNkBFJ zHclF-svxYk+l+aBX57&fGDGk~N{%Rk+fB9>n*#@ex1-tjF*Z2dr(hTb)M|H#HdPwb zSB2nLW)bfZSs&I=TLxEhW*p1={TBWYy@ZKlq?pCY+@~Z;B}6!#`ENck6F> zJZY>sWq|e?lrV{oLY%c6)QcGx0J{ z?<=53vdc7hsw>5fW=~0b7eM_|cJcZgOaq`!DTXHpsh_dZ4jOhWMgD9Gf`bd*EUtW+ z5%IIzM~!%zMEsCm%YIf6x|@2APza|+v(}Z#1`53XwFMiCtzP3RFTNMmDg6b?OdR@S zw%g{W)G!Q)VWmof5CH9{6MbX;gf45Wp1Luq0UYgDz|CzrA~grg#D7R?E|`K5f$Hx! zLCc7LP$NJt6VlxNDD$8mqo)WT`bkCfpzf6u8{q7-{Mq$7b@G!HAiDYSbz5po`6^-b zRe=59cj@mT`At1UBV%L`YEuPJu3w0L6G)`rP5Gyv6xu=_u)4q}5 z9GqG5^LcB_u@a`FX^t-Y9vjZQ;dc_{K%d_g|0lYkK-BIVuCFk?$;Rl2Fi_(}i|%axIWAm>u- zwD5G**1tnoVPS=9;%E|Q5fde770^?H(vxCtQ|u@HDswzm0jD(a6kS@XfoJAb)GZ6H zhu2V}orEG+lNSpb;bbp(54c;ICIRkInG$YsKr`$HV| zs|IGs+y)K2>z^qID&Oj?Z}Stq@M1AsNo;jp5K!T&uXK-08TktWR>|)pweLT(^1C_u z`&a2u{1o=cRX0eZca0i`H?JPAwfYQqNpcu$2wqXTAKdJ;VRUJ(3zE!hw8haE+9$9fi>&{`lF(M_aLr8#504( z^4#!2Qz(8DOD^!^l$$qCstMu!;E}qHPNqV$_3<3$tYL{0>9Zik^i3Hjy5ryd74=;o zzods-RmL->qk{3rwnfF5w07#dPwZ$~COeus1oU`VGP4+N;kKdEJq#t_1n{L~CC~ym zx)%Q9&@<-*zINzcet2!u=UBnnp|MX6+WDTGk4($+=d;fhOB-TJ{pF`AJ|qKzJlaH< zQn8pnviGfp#M;fuWLF&0c|hL0v1neaDIcXHo3%xn&qRsnCU$%TV|?2nEoQwwBjZ|R z&N>Q=jp(DFbC}zGqD)G0KjEtim(OD$kM;@`IkY~h^Nj76E(Qhp+|;{AC4C|K2I>0k zg{HfqA(Pz*v$DiQ%BS6HhZ8q9?H)R~0zFPbf1ih8r5hKC6BrKPXQT6Pj0Ws(1rksX z&Tgx~!M0BxZ;|SuDF~2~wL(|gltQ=&bs_N6N@`i7zOUb9C{zv;9fU@@Sf3(Nk)WrX>G{0nwsrv7?SpEi_ z1UOyu+Xe%0j{v^!Q9$So|3fGZ_5c3x)Bug>zhC$2E*sF{y#9Vq>8U>1O(0+o>UkdRV-)lKeF)w#0)pI z|LDZ0xhvQh4gRCJ)<8Rn@PX3VQDOMMp546puiGSZHb%#TG3)j5 z|Cp<35Fjo(p93$+!jk^upJpN+)cAjzXt`i&c^>)yh9Hd>lMfU+p73uq@0SFf3?`C!OsW|Wq*9#`~v2)GVGdoCK z>KUVr%5!*o=`GJ8RT}#szhN7P6s&=7rYFCtgStP0O9v*dI)#)#)iXz7>dFiGn~~{g zEetQa1Kkbs{&0TXV*U9jQ7O11eo@T)g_Er$SQ}|o9#n^$Pb(jrHNZ~;f0Q2;zF1d- zssSKhg?E<9s!Xn^AY8ardefeD{x{yVt?Kh^hm7K5_#8^}sI@Fw4#FNIj|=9cOiz@4ut|b+79Lv--0RE@$q=a-AL}g45WV~2uU3uQd1rw!oMuA`RC3k-pb^Z@Uenn$JiFf zt?$uoyHVZ^S8X9*VCP%zTaEoImF;r4dWd2|2=^XRtG(RYJa^0>yy5lU8~gg@%EiuS zNqxmOE!F$BkH`QOF3@;#OSJ)B=mP$(uH7@e#ew6|fi*V^GGCVVSPsQ{X1e_*ll~4X zHoZw9!-Z=aRafQ2mnE&MoeY1Ydr-7~rd@knbP8NhTyT8Wh?picIVoQ_$y|y-9mW0k z0hR65-WMOsMUGGX7QHXt+-#_LFR$#^bpCpGKgnSfaOJE(VfbLRT)(S?@$WDc<^-|Q z8hAVU{2)DUui8&c^F;sD5V(o_!2MCV@gY~utebJ!wYER;IRg9yXdm2d)$`~C4OH!m zyL$7I_!^jPWfBUp4r086ep5qF|C6V)-``4PC7lmH>mXsh>DtZLfgRb(z!Pc>Bk} zN=-MZ**1n|lD;4(`ub*%N?Lh@IBM+eEPD~%jYO!k(H z?)g||&t3so6h+$TUA}A8O^@vBx~#Iq#UX7k!FNAjAGk5!Ech+^uP8C zA?vOS_P6rG;S{xQD6mQ@ebb`{NsH;6@4p2ir&F-@M5iO*>IJoElsmh|zmSLIF7vZm z&#l+(!b5xN<%bmXF2yf_z4udu>9O9)?e~b5*5dFx(p8fr$XfBL;O^%39i>;--w^2v zXiYN)!#Ofj{)7{eW5=I7>B!@omP*GAK%N6Spild}eiit-_^LwfyY;*<(+QegARp1o z-!F*kQY%1p5bT@zfIu=#!%ZK4Cv$y>?UiH7lX>L1R<7^y^>D%1Pxao}cmB9Kk9?0j z6WZ=%Cr5;?G@Of4J&;eD=iHlFxN(` z1jWE?)zb0QWu0cJWg&%;5!zK36GQkJ+t@YAxs}nHh*d=k(|$o!;#xX*LBnp#nQiPX z`VD^P;;q54*4&yy0BKXNF8=LK#PTi4!Cy&{L}fy0634GQ18P+&X{ zJpr9;ZF7zHiM}cAU=3JnvAJ=9-#oVcu5bMI@JG|J`okI@g$ce}A%qY@yi}hYg+bwy zDXZ)F*6+Ih=H5rQ-;NDhUTZDZ*r5H*v+W-LHlbZ~$I*Q0M~~ck>+ie%+Qu6XCw~?1-Tg{s(Aq~yB|r!vgg~K!c2Q;N z^XndN^JaZeVedOx|Gu95AJA^tlb!S49aSlpr945TaC@eg)P~;``}r zuh;bJJ=r<$QP^ir=69h_&W~!_b|n{ouqUzLTUj^OtMGF}0ulm*5JHq%;~&iQ&$`jR zp2Ym`?oKX#pTh1r+24sic|Wr4>5pCZx7oQ@|6N~7uTgkt>w|0`EQAoELTUL@@JFRtX3pgqX&?ek>Y;ul!_p zrt#MY5_KQI@=ajm)P<3gD%gHN!TLSS{7`$O{y#G&x=Z1q$;ve%gb-pH_WC^(S<)uF z_i(uWzxJpZA5^gJ=$1UEhIYu|VavwVOH#PKL9>!DzPls$FEQAoE*!%qk z1!OQI1JpfYOxeF4cEgVVQ(|4bdy4;kA9#3&zhq~N>3REXci&qb<(;lEE=psqLgokv zA%rNVW?v}_)?l!nZ=KBt{P{m>R}Hr;qOE-@eW&ge`93;;|LF1S?@_3~YzlSUfS+zw zR)HG{wn3I4AcPQNN;mv~pT=5)b;F(AUh_T1sxJW>r{X*}cZz*KTZT;eM`O0?R^R%6 zUaJQ#RNB-jYcWQK1%wbnOifxFP+*Pf9WXU(lns4p*u>YwRbn9cjH%a&b*JF-I0XDI zz2LPQ)84>^!#nT#(8ihvM82yqJg{0i_57)2^%`bHA=+4%fd{ck4P z^h9LOo$XWo`*)}8ccyhGO8@-v165Df)Wt8jsA=#|@RDaLWrQM)z*URf3A0AK_`8#_5tSmaZ zI;>2k!eXrs78VL2gb@uy0Mq>Y+qBwn@*g`>)Cd9y9m*2hG@gwIV4~yHoxN zSGlPZns&6lZD07@$6cMgW@cvNpT*qN;xMLM=Qa|uxi=w%5Msg_{oHzeiz02Ek(3wN zeK5S@E7@?xee?D11L$D6pDMEE$1R%g)CN@ngLBZ}-2Ck5+y_-C@`^>#&JWkBp4r+Y zt6Z(o!T5lL0U?ACg*EyLtbvR%7#$tzvvmh|rJBC#WwZA+gq__6#|Gm7#rbo(Mf!`e zK6>wnU-9kje#LJMi_dCudjF!yb}gy&`$Agz>W z?%T9*US;Z4HGa?K)p{Tr*1lG#kixnO8wNDS0p+8Vl~5pr5GB^w2UE;k&^~~%sH{O} zEqGa9`vayb-LLBZux~i_tJ;}McP?DA>~Q-N4;%<~_VbFq;V=3C@SGrkAun4p~RUB%lrELcu%zo8OIGV z9eVuJE&v?40<6jHyKIfZc4vLMm38p2q=;w_HwwhahRXH%_eI!$qwYH#3stI~kim(D zw2CTYVjjemA?_$uZmcZ_Re@4*tSz@tp%oPd$`zCYaTIYp8)0M=svO8fAz~q$JL=fi zx!9nBFu=G=Q3aR%k?UWLyPTgNFyqrjJs$z#K;ai%JYp58nAzQ%b*cbfm+2`EA z?2+Ev(VL&Oxz1BCbW6m6w1#jJhJ1)bz*QM6qrixTQ4Pb!GNND@rADxJ1njU@YSg!O z#A-%e7`0j_vc{$y{M4YW&DPd?9t(c%+ecoRw%Q-{a1$vaDG$eFtS0M^pH^728OzVn>7v5&dO{CC*Z>>1Shr@vI()(XG;pyG`~ z@W3`j+*cfGR@9{wWz~x4fWlhni)j3$A{J9=vf9gP6%QM5L!gW%rS$)2?+lilhG8)L zNp_pPvK)BZp?65W)`}MrJqBZ-L$mb7TV>oWF|AtM3!ttmi60? zP3vK42Az{KvWFKmbV+Yj zoGw58G7jI?bvddGx-7u))4%&p8#)dVjP*H-4)^dmi=FvSH&hgxLg)5TW^yN6(|W|Q ztmzaI&?X}YghFOeOA&HWT^YfUK`DhA2n!`eLj+~1tSqx-f*KZ8X=2eSX$ui4iY0x5 zr|2v(7cIn)qAcM`37!m%+W~4t9X0v60>4VG`@{vS7vjf__|}P6U&Srr?Q8M*C4BfK zK7JwJy%%q;#i}J^sBp}k+kuI&v4dFjzd5Jz$X?;kB z*y>us&0usZh-!2WN`o}QY&_M-4AUC*o6q>TrcI>H47;ClI3(M*%3xbaX`2T-Xb#nD zANqQ11mYO_bD+A%@}Hv{(-Y^tWY?=R>GfZrd3$1cr|`L?o$0`{PNbiYJI>QO@O}bL zxq~L>;ry)k%=`7$8$2w>iT4@Z1k9Yor{(q%fgpt>x*}o$%RBLXfFb8Wc^+A>{o4J% hy*$4F009600{{^~Gh={`>p}nk002ovPDHLkV1hqVx>W!G literal 0 HcmV?d00001 From 73bedfcc016e69b682dc916d26490c3810482ce0 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Sat, 29 Aug 2015 17:54:30 -0700 Subject: [PATCH 022/314] ifdef default assignments --- include/ZeroTierOne.h | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/include/ZeroTierOne.h b/include/ZeroTierOne.h index 8583aa3ad..b8d14c5ff 100644 --- a/include/ZeroTierOne.h +++ b/include/ZeroTierOne.h @@ -760,7 +760,11 @@ enum ZT1_ResultCode ZT1_Node_new( ZT1_VirtualNetworkFrameFunction virtualNetworkFrameFunction, ZT1_VirtualNetworkConfigFunction virtualNetworkConfigFunction, ZT1_EventCallback eventCallback, - const char *overrideRootTopology = (const char *)0); + const char *overrideRootTopology +#ifdef __cplusplus + = (const char *)0 +#endif + ); /** * Delete a node and free all resources it consumes @@ -881,7 +885,11 @@ enum ZT1_ResultCode ZT1_Node_leave(ZT1_Node *node,uint64_t nwid); * @param multicastAdi Multicast ADI (least significant 32 bits only, default: 0) * @return OK (0) or error code if a fatal error condition has occurred */ -enum ZT1_ResultCode ZT1_Node_multicastSubscribe(ZT1_Node *node,uint64_t nwid,uint64_t multicastGroup,unsigned long multicastAdi = 0); +enum ZT1_ResultCode ZT1_Node_multicastSubscribe(ZT1_Node *node,uint64_t nwid,uint64_t multicastGroup,unsigned long multicastAdi +#ifdef __cplusplus + = 0 +#endif + ); /** * Unsubscribe from an Ethernet multicast group (or all groups) @@ -897,7 +905,11 @@ enum ZT1_ResultCode ZT1_Node_multicastSubscribe(ZT1_Node *node,uint64_t nwid,uin * @param multicastAdi Multicast ADI (least significant 32 bits only, default: 0) * @return OK (0) or error code if a fatal error condition has occurred */ -enum ZT1_ResultCode ZT1_Node_multicastUnsubscribe(ZT1_Node *node,uint64_t nwid,uint64_t multicastGroup,unsigned long multicastAdi = 0); +enum ZT1_ResultCode ZT1_Node_multicastUnsubscribe(ZT1_Node *node,uint64_t nwid,uint64_t multicastGroup,unsigned long multicastAdi +#ifdef __cplusplus + = 0 +#endif + ); /** * Get this node's 40-bit ZeroTier address From 0b9e5928d35c43748d8cd413e05e5718f7b1fc52 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Sat, 26 Sep 2015 13:53:38 -0700 Subject: [PATCH 023/314] update PacketSender interface --- java/src/com/zerotier/sdk/PacketSender.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/java/src/com/zerotier/sdk/PacketSender.java b/java/src/com/zerotier/sdk/PacketSender.java index 5302f5ce5..ab31729be 100644 --- a/java/src/com/zerotier/sdk/PacketSender.java +++ b/java/src/com/zerotier/sdk/PacketSender.java @@ -37,11 +37,13 @@ public interface PacketSender { * on failure. Note that success does not (of course) guarantee packet * delivery. It only means that the packet appears to have been sent.

* - * @param addr {@link InetSocketAddress} to send to + * @param localAddr {@link InetSocketAddress} to send from. Set to null if not specified. + * @param remoteAddr {@link InetSocketAddress} to send to * @param packetData data to send * @return 0 on success, any error code on failure. */ public int onSendPacketRequested( - InetSocketAddress addr, + InetSocketAddress localAddr, + InetSocketAddress remoteAddr, byte[] packetData); } From 7c3be2b5c152e8631237c1050e0c90ad37dfcb1d Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Sat, 26 Sep 2015 14:10:16 -0700 Subject: [PATCH 024/314] fix function signature in lookup for onSendPacketRequested function --- java/jni/com_zerotierone_sdk_Node.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index e513cdf52..e1b69d1e4 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -462,7 +462,7 @@ namespace { } jmethodID packetSenderCallbackMethod = lookup.findMethod(packetSenderClass, - "onSendPacketRequested", "(Ljava/net/InetSocketAddress;[B)I"); + "onSendPacketRequested", "(Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;[B)I"); if(packetSenderCallbackMethod == NULL) { LOGE("Couldn't find onSendPacketRequested method"); From 75a191a8564030f4d5e99aca76b980e2d69abd20 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Sat, 26 Sep 2015 14:10:45 -0700 Subject: [PATCH 025/314] don't create an InetSocketAddress on local address if it's equal to ZT_SOCKADDR_NULL --- java/jni/com_zerotierone_sdk_Node.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index e1b69d1e4..e60426491 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -469,7 +469,12 @@ namespace { return -2; } - jobject localAddressObj = newInetSocketAddress(env, *localAddress); + jobject localAddressObj = NULL; + if(memcmp(localAddress, &ZT_SOCKADDR_NULL, sizeof(sockaddr_storage)) != 0) + { + localAddressObj = newInetSocketAddress(env, *localAddress); + } + jobject remoteAddressObj = newInetSocketAddress(env, *remoteAddress); jbyteArray bufferObj = env->NewByteArray(bufferSize); env->SetByteArrayRegion(bufferObj, 0, bufferSize, (jbyte*)buffer); From 64aaea3978533a6643850f6ed05a9afe7f4dc7be Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 6 Oct 2015 18:04:53 -0700 Subject: [PATCH 026/314] Cleanup, and add an even faster Poly1305 on systems that support it. --- node/Poly1305.cpp | 311 ++++++++++++++++++++++++++++++++++++++++------ node/Utils.cpp | 4 +- 2 files changed, 273 insertions(+), 42 deletions(-) diff --git a/node/Poly1305.cpp b/node/Poly1305.cpp index 77b32a800..0968170eb 100644 --- a/node/Poly1305.cpp +++ b/node/Poly1305.cpp @@ -132,9 +132,236 @@ typedef struct poly1305_context { unsigned char opaque[136]; } poly1305_context; -/* - poly1305 implementation using 32 bit * 32 bit = 64 bit multiplication and 64 bit addition -*/ +#if defined(_MSC_VER) || defined(__GNUC__) + +////////////////////////////////////////////////////////////////////////////// +// 128-bit implementation for MSC and GCC + +#if defined(_MSC_VER) + #include + + typedef struct uint128_t { + unsigned long long lo; + unsigned long long hi; + } uint128_t; + + #define MUL(out, x, y) out.lo = _umul128((x), (y), &out.hi) + #define ADD(out, in) { unsigned long long t = out.lo; out.lo += in.lo; out.hi += (out.lo < t) + in.hi; } + #define ADDLO(out, in) { unsigned long long t = out.lo; out.lo += in; out.hi += (out.lo < t); } + #define SHR(in, shift) (__shiftright128(in.lo, in.hi, (shift))) + #define LO(in) (in.lo) + +// #define POLY1305_NOINLINE __declspec(noinline) +#elif defined(__GNUC__) + #if defined(__SIZEOF_INT128__) + typedef unsigned __int128 uint128_t; + #else + typedef unsigned uint128_t __attribute__((mode(TI))); + #endif + + #define MUL(out, x, y) out = ((uint128_t)x * y) + #define ADD(out, in) out += in + #define ADDLO(out, in) out += in + #define SHR(in, shift) (unsigned long long)(in >> (shift)) + #define LO(in) (unsigned long long)(in) + +// #define POLY1305_NOINLINE __attribute__((noinline)) +#endif + +#define poly1305_block_size 16 + +/* 17 + sizeof(size_t) + 8*sizeof(unsigned long long) */ +typedef struct poly1305_state_internal_t { + unsigned long long r[3]; + unsigned long long h[3]; + unsigned long long pad[2]; + size_t leftover; + unsigned char buffer[poly1305_block_size]; + unsigned char final; +} poly1305_state_internal_t; + +/* interpret eight 8 bit unsigned integers as a 64 bit unsigned integer in little endian */ +static inline unsigned long long +U8TO64(const unsigned char *p) { + return + (((unsigned long long)(p[0] & 0xff) ) | + ((unsigned long long)(p[1] & 0xff) << 8) | + ((unsigned long long)(p[2] & 0xff) << 16) | + ((unsigned long long)(p[3] & 0xff) << 24) | + ((unsigned long long)(p[4] & 0xff) << 32) | + ((unsigned long long)(p[5] & 0xff) << 40) | + ((unsigned long long)(p[6] & 0xff) << 48) | + ((unsigned long long)(p[7] & 0xff) << 56)); +} + +/* store a 64 bit unsigned integer as eight 8 bit unsigned integers in little endian */ +static inline void +U64TO8(unsigned char *p, unsigned long long v) { + p[0] = (v ) & 0xff; + p[1] = (v >> 8) & 0xff; + p[2] = (v >> 16) & 0xff; + p[3] = (v >> 24) & 0xff; + p[4] = (v >> 32) & 0xff; + p[5] = (v >> 40) & 0xff; + p[6] = (v >> 48) & 0xff; + p[7] = (v >> 56) & 0xff; +} + +static inline void +poly1305_init(poly1305_context *ctx, const unsigned char key[32]) { + poly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx; + unsigned long long t0,t1; + + /* r &= 0xffffffc0ffffffc0ffffffc0fffffff */ + t0 = U8TO64(&key[0]); + t1 = U8TO64(&key[8]); + + st->r[0] = ( t0 ) & 0xffc0fffffff; + st->r[1] = ((t0 >> 44) | (t1 << 20)) & 0xfffffc0ffff; + st->r[2] = ((t1 >> 24) ) & 0x00ffffffc0f; + + /* h = 0 */ + st->h[0] = 0; + st->h[1] = 0; + st->h[2] = 0; + + /* save pad for later */ + st->pad[0] = U8TO64(&key[16]); + st->pad[1] = U8TO64(&key[24]); + + st->leftover = 0; + st->final = 0; +} + +static inline void +poly1305_blocks(poly1305_state_internal_t *st, const unsigned char *m, size_t bytes) { + const unsigned long long hibit = (st->final) ? 0 : ((unsigned long long)1 << 40); /* 1 << 128 */ + unsigned long long r0,r1,r2; + unsigned long long s1,s2; + unsigned long long h0,h1,h2; + unsigned long long c; + uint128_t d0,d1,d2,d; + + r0 = st->r[0]; + r1 = st->r[1]; + r2 = st->r[2]; + + h0 = st->h[0]; + h1 = st->h[1]; + h2 = st->h[2]; + + s1 = r1 * (5 << 2); + s2 = r2 * (5 << 2); + + while (bytes >= poly1305_block_size) { + unsigned long long t0,t1; + + /* h += m[i] */ + t0 = U8TO64(&m[0]); + t1 = U8TO64(&m[8]); + + h0 += (( t0 ) & 0xfffffffffff); + h1 += (((t0 >> 44) | (t1 << 20)) & 0xfffffffffff); + h2 += (((t1 >> 24) ) & 0x3ffffffffff) | hibit; + + /* h *= r */ + MUL(d0, h0, r0); MUL(d, h1, s2); ADD(d0, d); MUL(d, h2, s1); ADD(d0, d); + MUL(d1, h0, r1); MUL(d, h1, r0); ADD(d1, d); MUL(d, h2, s2); ADD(d1, d); + MUL(d2, h0, r2); MUL(d, h1, r1); ADD(d2, d); MUL(d, h2, r0); ADD(d2, d); + + /* (partial) h %= p */ + c = SHR(d0, 44); h0 = LO(d0) & 0xfffffffffff; + ADDLO(d1, c); c = SHR(d1, 44); h1 = LO(d1) & 0xfffffffffff; + ADDLO(d2, c); c = SHR(d2, 42); h2 = LO(d2) & 0x3ffffffffff; + h0 += c * 5; c = (h0 >> 44); h0 = h0 & 0xfffffffffff; + h1 += c; + + m += poly1305_block_size; + bytes -= poly1305_block_size; + } + + st->h[0] = h0; + st->h[1] = h1; + st->h[2] = h2; +} + +static inline void +poly1305_finish(poly1305_context *ctx, unsigned char mac[16]) { + poly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx; + unsigned long long h0,h1,h2,c; + unsigned long long g0,g1,g2; + unsigned long long t0,t1; + + /* process the remaining block */ + if (st->leftover) { + size_t i = st->leftover; + st->buffer[i] = 1; + for (i = i + 1; i < poly1305_block_size; i++) + st->buffer[i] = 0; + st->final = 1; + poly1305_blocks(st, st->buffer, poly1305_block_size); + } + + /* fully carry h */ + h0 = st->h[0]; + h1 = st->h[1]; + h2 = st->h[2]; + + c = (h1 >> 44); h1 &= 0xfffffffffff; + h2 += c; c = (h2 >> 42); h2 &= 0x3ffffffffff; + h0 += c * 5; c = (h0 >> 44); h0 &= 0xfffffffffff; + h1 += c; c = (h1 >> 44); h1 &= 0xfffffffffff; + h2 += c; c = (h2 >> 42); h2 &= 0x3ffffffffff; + h0 += c * 5; c = (h0 >> 44); h0 &= 0xfffffffffff; + h1 += c; + + /* compute h + -p */ + g0 = h0 + 5; c = (g0 >> 44); g0 &= 0xfffffffffff; + g1 = h1 + c; c = (g1 >> 44); g1 &= 0xfffffffffff; + g2 = h2 + c - ((unsigned long long)1 << 42); + + /* select h if h < p, or h + -p if h >= p */ + c = (g2 >> ((sizeof(unsigned long long) * 8) - 1)) - 1; + g0 &= c; + g1 &= c; + g2 &= c; + c = ~c; + h0 = (h0 & c) | g0; + h1 = (h1 & c) | g1; + h2 = (h2 & c) | g2; + + /* h = (h + pad) */ + t0 = st->pad[0]; + t1 = st->pad[1]; + + h0 += (( t0 ) & 0xfffffffffff) ; c = (h0 >> 44); h0 &= 0xfffffffffff; + h1 += (((t0 >> 44) | (t1 << 20)) & 0xfffffffffff) + c; c = (h1 >> 44); h1 &= 0xfffffffffff; + h2 += (((t1 >> 24) ) & 0x3ffffffffff) + c; h2 &= 0x3ffffffffff; + + /* mac = h % (2^128) */ + h0 = ((h0 ) | (h1 << 44)); + h1 = ((h1 >> 20) | (h2 << 24)); + + U64TO8(&mac[0], h0); + U64TO8(&mac[8], h1); + + /* zero out the state */ + st->h[0] = 0; + st->h[1] = 0; + st->h[2] = 0; + st->r[0] = 0; + st->r[1] = 0; + st->r[2] = 0; + st->pad[0] = 0; + st->pad[1] = 0; +} + +////////////////////////////////////////////////////////////////////////////// + +#else + +////////////////////////////////////////////////////////////////////////////// +// More portable 64-bit implementation #define poly1305_block_size 16 @@ -256,43 +483,6 @@ poly1305_blocks(poly1305_state_internal_t *st, const unsigned char *m, size_t by st->h[4] = h4; } -static inline void -poly1305_update(poly1305_context *ctx, const unsigned char *m, size_t bytes) { - poly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx; - size_t i; - - /* handle leftover */ - if (st->leftover) { - size_t want = (poly1305_block_size - st->leftover); - if (want > bytes) - want = bytes; - for (i = 0; i < want; i++) - st->buffer[st->leftover + i] = m[i]; - bytes -= want; - m += want; - st->leftover += want; - if (st->leftover < poly1305_block_size) - return; - poly1305_blocks(st, st->buffer, poly1305_block_size); - st->leftover = 0; - } - - /* process full blocks */ - if (bytes >= poly1305_block_size) { - size_t want = (bytes & ~(poly1305_block_size - 1)); - poly1305_blocks(st, m, want); - m += want; - bytes -= want; - } - - /* store leftover */ - if (bytes) { - for (i = 0; i < bytes; i++) - st->buffer[st->leftover + i] = m[i]; - st->leftover += bytes; - } -} - static inline void poly1305_finish(poly1305_context *ctx, unsigned char mac[16]) { poly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx; @@ -380,6 +570,47 @@ poly1305_finish(poly1305_context *ctx, unsigned char mac[16]) { st->pad[3] = 0; } +////////////////////////////////////////////////////////////////////////////// + +#endif // MSC/GCC or not + +static inline void +poly1305_update(poly1305_context *ctx, const unsigned char *m, size_t bytes) { + poly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx; + size_t i; + + /* handle leftover */ + if (st->leftover) { + size_t want = (poly1305_block_size - st->leftover); + if (want > bytes) + want = bytes; + for (i = 0; i < want; i++) + st->buffer[st->leftover + i] = m[i]; + bytes -= want; + m += want; + st->leftover += want; + if (st->leftover < poly1305_block_size) + return; + poly1305_blocks(st, st->buffer, poly1305_block_size); + st->leftover = 0; + } + + /* process full blocks */ + if (bytes >= poly1305_block_size) { + size_t want = (bytes & ~(poly1305_block_size - 1)); + poly1305_blocks(st, m, want); + m += want; + bytes -= want; + } + + /* store leftover */ + if (bytes) { + for (i = 0; i < bytes; i++) + st->buffer[st->leftover + i] = m[i]; + st->leftover += bytes; + } +} + } // anonymous namespace void Poly1305::compute(void *auth,const void *data,unsigned int len,const void *key) diff --git a/node/Utils.cpp b/node/Utils.cpp index 658c397d0..3c6dee32b 100644 --- a/node/Utils.cpp +++ b/node/Utils.cpp @@ -191,7 +191,7 @@ void Utils::getSecureRandom(void *buf,unsigned int bytes) if (devURandomFd <= 0) { devURandomFd = ::open("/dev/urandom",O_RDONLY); if (devURandomFd <= 0) { - fprintf(stderr,"FATAL ERROR: Utils::getSecureRandom() unable to open /dev/urandom\r\n"); + fprintf(stderr,"FATAL ERROR: Utils::getSecureRandom() unable to open /dev/urandom\n"); exit(1); return; } @@ -200,7 +200,7 @@ void Utils::getSecureRandom(void *buf,unsigned int bytes) for(unsigned int i=0;i= sizeof(randomBuf)) { if ((int)::read(devURandomFd,randomBuf,sizeof(randomBuf)) != (int)sizeof(randomBuf)) { - fprintf(stderr,"FATAL ERROR: Utils::getSecureRandom() unable to read from /dev/urandom\r\n"); + fprintf(stderr,"FATAL ERROR: Utils::getSecureRandom() unable to read from /dev/urandom\n"); exit(1); return; } From 598a1d8dd7f621bb75a7f0537c5a63ee93e85a4c Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 6 Oct 2015 18:10:40 -0700 Subject: [PATCH 027/314] Try reopening /dev/urandom if there is a problem. --- node/Utils.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/node/Utils.cpp b/node/Utils.cpp index 3c6dee32b..6c5d8c7d6 100644 --- a/node/Utils.cpp +++ b/node/Utils.cpp @@ -181,7 +181,7 @@ void Utils::getSecureRandom(void *buf,unsigned int bytes) #ifdef __UNIX_LIKE__ - static char randomBuf[65536]; + static char randomBuf[131072]; static unsigned int randomPtr = sizeof(randomBuf); static int devURandomFd = -1; static Mutex globalLock; @@ -199,10 +199,16 @@ void Utils::getSecureRandom(void *buf,unsigned int bytes) for(unsigned int i=0;i= sizeof(randomBuf)) { - if ((int)::read(devURandomFd,randomBuf,sizeof(randomBuf)) != (int)sizeof(randomBuf)) { - fprintf(stderr,"FATAL ERROR: Utils::getSecureRandom() unable to read from /dev/urandom\n"); - exit(1); - return; + for(;;) { + if ((int)::read(devURandomFd,randomBuf,sizeof(randomBuf)) != (int)sizeof(randomBuf)) { + ::close(devURandomFd); + devURandomFd = ::open("/dev/urandom",O_RDONLY); + if (devURandomFd <= 0) { + fprintf(stderr,"FATAL ERROR: Utils::getSecureRandom() unable to open /dev/urandom\n"); + exit(1); + return; + } + } else break; } randomPtr = 0; } From 1b2cac0cc59790620262f447588274440c7fbefa Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 7 Oct 2015 09:38:33 -0700 Subject: [PATCH 028/314] Trim some cruft that is not used and probably never would be. --- include/ZeroTierOne.h | 27 +-------------------------- node/IncomingPacket.cpp | 18 ++---------------- node/Node.cpp | 16 +--------------- node/Node.hpp | 6 ------ 4 files changed, 4 insertions(+), 63 deletions(-) diff --git a/include/ZeroTierOne.h b/include/ZeroTierOne.h index 341bb767a..611e36997 100644 --- a/include/ZeroTierOne.h +++ b/include/ZeroTierOne.h @@ -255,31 +255,6 @@ enum ZT_Event */ ZT_EVENT_FATAL_ERROR_IDENTITY_COLLISION = 4, - /** - * A more recent version was observed on the network - * - * Right now this is only triggered if a hub or rootserver reports a - * more recent version, and only once. It can be used to trigger a - * software update check. - * - * Meta-data: unsigned int[3], more recent version number - */ - ZT_EVENT_SAW_MORE_RECENT_VERSION = 5, - - /** - * A packet failed authentication - * - * Meta-data: struct sockaddr_storage containing origin address of packet - */ - ZT_EVENT_AUTHENTICATION_FAILURE = 6, - - /** - * A received packet was not valid - * - * Meta-data: struct sockaddr_storage containing origin address of packet - */ - ZT_EVENT_INVALID_PACKET = 7, - /** * Trace (debugging) message * @@ -287,7 +262,7 @@ enum ZT_Event * * Meta-data: C string, TRACE message */ - ZT_EVENT_TRACE = 8 + ZT_EVENT_TRACE = 5 }; /** diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 305232ee3..26d4bda8b 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -227,7 +227,6 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) unsigned char key[ZT_PEER_SECRET_KEY_LENGTH]; if (RR->identity.agree(id,key,ZT_PEER_SECRET_KEY_LENGTH)) { if (dearmor(key)) { // ensure packet is authentic, otherwise drop - RR->node->postEvent(ZT_EVENT_AUTHENTICATION_FAILURE,(const void *)&_remoteAddress); TRACE("rejected HELLO from %s(%s): address already claimed",id.address().toString().c_str(),_remoteAddress.toString().c_str()); Packet outp(id.address(),RR->identity.address(),Packet::VERB_ERROR); outp.append((unsigned char)Packet::VERB_HELLO); @@ -236,11 +235,9 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) outp.armor(key,true); RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); } else { - RR->node->postEvent(ZT_EVENT_AUTHENTICATION_FAILURE,(const void *)&_remoteAddress); TRACE("rejected HELLO from %s(%s): packet failed authentication",id.address().toString().c_str(),_remoteAddress.toString().c_str()); } } else { - RR->node->postEvent(ZT_EVENT_AUTHENTICATION_FAILURE,(const void *)&_remoteAddress); TRACE("rejected HELLO from %s(%s): key agreement failed",id.address().toString().c_str(),_remoteAddress.toString().c_str()); } @@ -249,7 +246,6 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) // Identity is the same as the one we already have -- check packet integrity if (!dearmor(peer->key())) { - RR->node->postEvent(ZT_EVENT_AUTHENTICATION_FAILURE,(const void *)&_remoteAddress); TRACE("rejected HELLO from %s(%s): packet failed authentication",id.address().toString().c_str(),_remoteAddress.toString().c_str()); return true; } @@ -261,7 +257,6 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) // Check identity proof of work if (!id.locallyValidate()) { - RR->node->postEvent(ZT_EVENT_AUTHENTICATION_FAILURE,(const void *)&_remoteAddress); TRACE("dropped HELLO from %s(%s): identity invalid",id.address().toString().c_str(),_remoteAddress.toString().c_str()); return true; } @@ -269,7 +264,6 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) // Check packet integrity and authentication SharedPtr newPeer(new Peer(RR->identity,id)); if (!dearmor(newPeer->key())) { - RR->node->postEvent(ZT_EVENT_AUTHENTICATION_FAILURE,(const void *)&_remoteAddress); TRACE("rejected HELLO from %s(%s): packet failed authentication",id.address().toString().c_str(),_remoteAddress.toString().c_str()); return true; } @@ -284,11 +278,7 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_HELLO,0,Packet::VERB_NOP); peer->setRemoteVersion(protoVersion,vMajor,vMinor,vRevision); - bool trusted = false; - if (RR->topology->isRoot(id)) { - RR->node->postNewerVersionIfNewer(vMajor,vMinor,vRevision); - trusted = true; - } + bool trusted = RR->topology->isRoot(id); if (destAddr) RR->sa->iam(id.address(),_remoteAddress,destAddr,trusted,RR->node->now()); @@ -369,11 +359,7 @@ bool IncomingPacket::_doOK(const RuntimeEnvironment *RR,const SharedPtr &p peer->addDirectLatencyMeasurment(latency); peer->setRemoteVersion(vProto,vMajor,vMinor,vRevision); - bool trusted = false; - if (RR->topology->isRoot(peer->identity())) { - RR->node->postNewerVersionIfNewer(vMajor,vMinor,vRevision); - trusted = true; - } + bool trusted = RR->topology->isRoot(peer->identity()); if (destAddr) RR->sa->iam(peer->address(),_remoteAddress,destAddr,trusted,RR->node->now()); } break; diff --git a/node/Node.cpp b/node/Node.cpp index d5cc50b99..d5ca147c5 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -82,9 +82,6 @@ Node::Node( _lastPingCheck(0), _lastHousekeepingRun(0) { - _newestVersionSeen[0] = ZEROTIER_ONE_VERSION_MAJOR; - _newestVersionSeen[1] = ZEROTIER_ONE_VERSION_MINOR; - _newestVersionSeen[2] = ZEROTIER_ONE_VERSION_REVISION; _online = false; // Use Salsa20 alone as a high-quality non-crypto PRNG @@ -540,16 +537,6 @@ std::string Node::dataStoreGet(const char *name) return r; } -void Node::postNewerVersionIfNewer(unsigned int major,unsigned int minor,unsigned int rev) -{ - if (Utils::compareVersion(major,minor,rev,_newestVersionSeen[0],_newestVersionSeen[1],_newestVersionSeen[2]) > 0) { - _newestVersionSeen[0] = major; - _newestVersionSeen[1] = minor; - _newestVersionSeen[2] = rev; - this->postEvent(ZT_EVENT_SAW_MORE_RECENT_VERSION,(const void *)_newestVersionSeen); - } -} - #ifdef ZT_TRACE void Node::postTrace(const char *module,unsigned int line,const char *fmt,...) { @@ -659,8 +646,7 @@ enum ZT_ResultCode ZT_Node_processWirePacket( } catch (std::bad_alloc &exc) { return ZT_RESULT_FATAL_ERROR_OUT_OF_MEMORY; } catch ( ... ) { - reinterpret_cast(node)->postEvent(ZT_EVENT_INVALID_PACKET,(const void *)remoteAddress); - return ZT_RESULT_OK; + return ZT_RESULT_OK; // "OK" since invalid packets are simply dropped, but the system is still up } } diff --git a/node/Node.hpp b/node/Node.hpp index 20c544718..0ae176c0d 100644 --- a/node/Node.hpp +++ b/node/Node.hpp @@ -226,11 +226,6 @@ public: */ inline bool online() const throw() { return _online; } - /** - * If this version is newer than the newest we've seen, post a new version seen event - */ - void postNewerVersionIfNewer(unsigned int major,unsigned int minor,unsigned int rev); - #ifdef ZT_TRACE void postTrace(const char *module,unsigned int line,const char *fmt,...); #endif @@ -288,7 +283,6 @@ private: uint64_t _now; uint64_t _lastPingCheck; uint64_t _lastHousekeepingRun; - unsigned int _newestVersionSeen[3]; // major, minor, revision bool _online; }; From 6c7ce79c8960cd2360657f9247788ff5640ae974 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 7 Oct 2015 09:51:35 -0700 Subject: [PATCH 029/314] Be consistent in how enums are defined in the main .h file. --- include/ZeroTierOne.h | 130 +++++++++++++++++++++--------------------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/include/ZeroTierOne.h b/include/ZeroTierOne.h index 611e36997..990f682d1 100644 --- a/include/ZeroTierOne.h +++ b/include/ZeroTierOne.h @@ -389,6 +389,68 @@ enum ZT_VirtualNetworkConfigOperation ZT_VIRTUAL_NETWORK_CONFIG_OPERATION_DESTROY = 4 }; +/** + * Local interface trust levels + */ +enum ZT_LocalInterfaceAddressTrust { + ZT_LOCAL_INTERFACE_ADDRESS_TRUST_NORMAL = 0, + ZT_LOCAL_INTERFACE_ADDRESS_TRUST_PRIVACY = 10, + ZT_LOCAL_INTERFACE_ADDRESS_TRUST_ULTIMATE = 20 +}; + +/** + * What trust hierarchy role does this peer have? + */ +enum ZT_PeerRole { + ZT_PEER_ROLE_LEAF = 0, // ordinary node + ZT_PEER_ROLE_RELAY = 1, // relay node + ZT_PEER_ROLE_ROOT = 2 // root server +}; + +/** + * Vendor ID + */ +enum ZT_Vendor { + ZT_VENDOR_UNSPECIFIED = 0, + ZT_VENDOR_ZEROTIER = 1 +}; + +/** + * Platform type + */ +enum ZT_Platform { + ZT_PLATFORM_UNSPECIFIED = 0, + ZT_PLATFORM_LINUX = 1, + ZT_PLATFORM_WINDOWS = 2, + ZT_PLATFORM_MACOS = 3, + ZT_PLATFORM_ANDROID = 4, + ZT_PLATFORM_IOS = 5, + ZT_PLATFORM_SOLARIS_SMARTOS = 6, + ZT_PLATFORM_FREEBSD = 7, + ZT_PLATFORM_NETBSD = 8, + ZT_PLATFORM_OPENBSD = 9, + ZT_PLATFORM_RISCOS = 10, + ZT_PLATFORM_VXWORKS = 11, + ZT_PLATFORM_FREERTOS = 12, + ZT_PLATFORM_SYSBIOS = 13, + ZT_PLATFORM_HURD = 14 +}; + +/** + * Architecture type + */ +enum ZT_Architecture { + ZT_ARCHITECTURE_UNSPECIFIED = 0, + ZT_ARCHITECTURE_X86 = 1, + ZT_ARCHITECTURE_X64 = 2, + ZT_ARCHITECTURE_ARM32 = 3, + ZT_ARCHITECTURE_ARM64 = 4, + ZT_ARCHITECTURE_MIPS32 = 5, + ZT_ARCHITECTURE_MIPS64 = 6, + ZT_ARCHITECTURE_POWER32 = 7, + ZT_ARCHITECTURE_POWER64 = 8 +}; + /** * Virtual network configuration */ @@ -536,15 +598,6 @@ typedef struct int preferred; } ZT_PeerPhysicalPath; -/** - * What trust hierarchy role does this peer have? - */ -enum ZT_PeerRole { - ZT_PEER_ROLE_LEAF = 0, // ordinary node - ZT_PEER_ROLE_RELAY = 1, // relay node - ZT_PEER_ROLE_ROOT = 2 // root server -}; - /** * Peer status result buffer */ @@ -610,59 +663,6 @@ typedef struct unsigned long peerCount; } ZT_PeerList; -/** - * Local interface trust levels - */ -typedef enum { - ZT_LOCAL_INTERFACE_ADDRESS_TRUST_NORMAL = 0, - ZT_LOCAL_INTERFACE_ADDRESS_TRUST_PRIVACY = 10, - ZT_LOCAL_INTERFACE_ADDRESS_TRUST_ULTIMATE = 20 -} ZT_LocalInterfaceAddressTrust; - -/** - * Vendor ID - */ -typedef enum { - ZT_VENDOR_UNSPECIFIED = 0, - ZT_VENDOR_ZEROTIER = 1 -} ZT_Vendor; - -/** - * Platform type - */ -typedef enum { - ZT_PLATFORM_UNSPECIFIED = 0, - ZT_PLATFORM_LINUX = 1, - ZT_PLATFORM_WINDOWS = 2, - ZT_PLATFORM_MACOS = 3, - ZT_PLATFORM_ANDROID = 4, - ZT_PLATFORM_IOS = 5, - ZT_PLATFORM_SOLARIS_SMARTOS = 6, - ZT_PLATFORM_FREEBSD = 7, - ZT_PLATFORM_NETBSD = 8, - ZT_PLATFORM_OPENBSD = 9, - ZT_PLATFORM_RISCOS = 10, - ZT_PLATFORM_VXWORKS = 11, - ZT_PLATFORM_FREERTOS = 12, - ZT_PLATFORM_SYSBIOS = 13, - ZT_PLATFORM_HURD = 14 -} ZT_Platform; - -/** - * Architecture type - */ -typedef enum { - ZT_ARCHITECTURE_UNSPECIFIED = 0, - ZT_ARCHITECTURE_X86 = 1, - ZT_ARCHITECTURE_X64 = 2, - ZT_ARCHITECTURE_ARM32 = 3, - ZT_ARCHITECTURE_ARM64 = 4, - ZT_ARCHITECTURE_MIPS32 = 5, - ZT_ARCHITECTURE_MIPS64 = 6, - ZT_ARCHITECTURE_POWER32 = 7, - ZT_ARCHITECTURE_POWER64 = 8 -} ZT_Architecture; - /** * ZeroTier circuit test configuration and path */ @@ -775,7 +775,7 @@ typedef struct { /** * Remote device vendor ID */ - ZT_Vendor vendor; + enum ZT_Vendor vendor; /** * Remote device protocol compliance version @@ -800,12 +800,12 @@ typedef struct { /** * Platform / OS */ - ZT_Platform platform; + enum ZT_Platform platform; /** * System architecture */ - ZT_Architecture architecture; + enum ZT_Architecture architecture; /** * Local device address on which packet was received by reporting device From ab0228f626573381db93173cd5849cb934481ca5 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 7 Oct 2015 10:30:47 -0700 Subject: [PATCH 030/314] More cleanup and simple refactoring, consolidate InetAddres serialize/deserialize into the class. --- node/IncomingPacket.cpp | 102 ++++++++++++++-------------------------- node/InetAddress.hpp | 5 +- node/Packet.hpp | 15 ++---- node/Peer.cpp | 19 +------- 4 files changed, 43 insertions(+), 98 deletions(-) diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 26d4bda8b..6186affdf 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -46,6 +46,7 @@ namespace ZeroTier { bool IncomingPacket::tryDecode(const RuntimeEnvironment *RR) { + const Address sourceAddress(source()); try { if ((cipher() == ZT_PROTO_CIPHER_SUITE__C25519_POLY1305_NONE)&&(verb() == Packet::VERB_HELLO)) { // Unencrypted HELLOs are handled here since they are used to @@ -54,23 +55,24 @@ bool IncomingPacket::tryDecode(const RuntimeEnvironment *RR) return _doHELLO(RR); } - SharedPtr peer = RR->topology->getPeer(source()); + SharedPtr peer = RR->topology->getPeer(sourceAddress); if (peer) { if (!dearmor(peer->key())) { - TRACE("dropped packet from %s(%s), MAC authentication failed (size: %u)",source().toString().c_str(),_remoteAddress.toString().c_str(),size()); + TRACE("dropped packet from %s(%s), MAC authentication failed (size: %u)",peer->address().toString().c_str(),_remoteAddress.toString().c_str(),size()); return true; } if (!uncompress()) { - TRACE("dropped packet from %s(%s), compressed data invalid",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped packet from %s(%s), compressed data invalid",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); return true; } - //TRACE("<< %s from %s(%s)",Packet::verbString(verb()),source().toString().c_str(),_remoteAddress.toString().c_str()); + //TRACE("<< %s from %s(%s)",Packet::verbString(v),sourceAddress.toString().c_str(),_remoteAddress.toString().c_str()); - switch(verb()) { + const Packet::Verb v = verb(); + switch(v) { //case Packet::VERB_NOP: default: // ignore unknown verbs, but if they pass auth check they are "received" - peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),verb(),0,Packet::VERB_NOP); + peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),v,0,Packet::VERB_NOP); return true; case Packet::VERB_HELLO: return _doHELLO(RR); case Packet::VERB_ERROR: return _doERROR(RR,peer); @@ -90,13 +92,13 @@ bool IncomingPacket::tryDecode(const RuntimeEnvironment *RR) case Packet::VERB_CIRCUIT_TEST_REPORT: return _doCIRCUIT_TEST_REPORT(RR,peer); } } else { - RR->sw->requestWhois(source()); + RR->sw->requestWhois(sourceAddress); return false; } } catch ( ... ) { // Exceptions are more informatively caught in _do...() handlers but // this outer try/catch will catch anything else odd. - TRACE("dropped ??? from %s(%s): unexpected exception in tryDecode()",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped ??? from %s(%s): unexpected exception in tryDecode()",sourceAddress.toString().c_str(),_remoteAddress.toString().c_str()); return true; } } @@ -108,7 +110,7 @@ bool IncomingPacket::_doERROR(const RuntimeEnvironment *RR,const SharedPtr const uint64_t inRePacketId = at(ZT_PROTO_VERB_ERROR_IDX_IN_RE_PACKET_ID); const Packet::ErrorCode errorCode = (Packet::ErrorCode)(*this)[ZT_PROTO_VERB_ERROR_IDX_ERROR_CODE]; - //TRACE("ERROR %s from %s(%s) in-re %s",Packet::errorString(errorCode),source().toString().c_str(),_remoteAddress.toString().c_str(),Packet::verbString(inReVerb)); + //TRACE("ERROR %s from %s(%s) in-re %s",Packet::errorString(errorCode),peer->address().toString().c_str(),_remoteAddress.toString().c_str(),Packet::verbString(inReVerb)); switch(errorCode) { @@ -118,7 +120,7 @@ bool IncomingPacket::_doERROR(const RuntimeEnvironment *RR,const SharedPtr RR->sw->cancelWhoisRequest(Address(field(ZT_PROTO_VERB_ERROR_IDX_PAYLOAD,ZT_ADDRESS_LENGTH),ZT_ADDRESS_LENGTH)); } else if (inReVerb == Packet::VERB_NETWORK_CONFIG_REQUEST) { SharedPtr network(RR->node->network(at(ZT_PROTO_VERB_ERROR_IDX_PAYLOAD))); - if ((network)&&(network->controller() == source())) + if ((network)&&(network->controller() == peer->address())) network->setNotFound(); } break; @@ -126,7 +128,7 @@ bool IncomingPacket::_doERROR(const RuntimeEnvironment *RR,const SharedPtr case Packet::ERROR_UNSUPPORTED_OPERATION: if (inReVerb == Packet::VERB_NETWORK_CONFIG_REQUEST) { SharedPtr network(RR->node->network(at(ZT_PROTO_VERB_ERROR_IDX_PAYLOAD))); - if ((network)&&(network->controller() == source())) + if ((network)&&(network->controller() == peer->address())) network->setNotFound(); } break; @@ -154,7 +156,7 @@ bool IncomingPacket::_doERROR(const RuntimeEnvironment *RR,const SharedPtr case Packet::ERROR_NETWORK_ACCESS_DENIED_: { SharedPtr network(RR->node->network(at(ZT_PROTO_VERB_ERROR_IDX_PAYLOAD))); - if ((network)&&(network->controller() == source())) + if ((network)&&(network->controller() == peer->address())) network->setAccessDenied(); } break; @@ -170,9 +172,9 @@ bool IncomingPacket::_doERROR(const RuntimeEnvironment *RR,const SharedPtr peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_ERROR,inRePacketId,inReVerb); } catch (std::exception &ex) { - TRACE("dropped ERROR from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),ex.what()); + TRACE("dropped ERROR from %s(%s): unexpected exception: %s",peer->address().toString().c_str(),_remoteAddress.toString().c_str(),ex.what()); } catch ( ... ) { - TRACE("dropped ERROR from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped ERROR from %s(%s): unexpected exception: (unknown)",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } @@ -187,36 +189,29 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) * in the first place. */ try { + const uint64_t pid = packetId(); + const Address fromAddress(source()); const unsigned int protoVersion = (*this)[ZT_PROTO_VERB_HELLO_IDX_PROTOCOL_VERSION]; const unsigned int vMajor = (*this)[ZT_PROTO_VERB_HELLO_IDX_MAJOR_VERSION]; const unsigned int vMinor = (*this)[ZT_PROTO_VERB_HELLO_IDX_MINOR_VERSION]; const unsigned int vRevision = at(ZT_PROTO_VERB_HELLO_IDX_REVISION); const uint64_t timestamp = at(ZT_PROTO_VERB_HELLO_IDX_TIMESTAMP); + Identity id; - unsigned int destAddrPtr = id.deserialize(*this,ZT_PROTO_VERB_HELLO_IDX_IDENTITY) + ZT_PROTO_VERB_HELLO_IDX_IDENTITY; + const unsigned int destAddrPtr = ZT_PROTO_VERB_HELLO_IDX_IDENTITY + id.deserialize(*this,ZT_PROTO_VERB_HELLO_IDX_IDENTITY); + InetAddress destAddr; + if (destAddrPtr < size()) // ZeroTier One < 1.0.3 did not include this field + destAddr.deserialize(*this,destAddrPtr); if (protoVersion < ZT_PROTO_VERSION_MIN) { TRACE("dropped HELLO from %s(%s): protocol version too old",id.address().toString().c_str(),_remoteAddress.toString().c_str()); return true; } - if (source() != id.address()) { - TRACE("dropped HELLO from %s(%s): identity not for sending address",source().toString().c_str(),_remoteAddress.toString().c_str()); + if (fromAddress != id.address()) { + TRACE("dropped HELLO from %s(%s): identity not for sending address",fromAddress.toString().c_str(),_remoteAddress.toString().c_str()); return true; } - InetAddress destAddr; - if (destAddrPtr < size()) { // ZeroTier One < 1.0.3 did not include this field - const unsigned int destAddrType = (*this)[destAddrPtr++]; - switch(destAddrType) { - case ZT_PROTO_DEST_ADDRESS_TYPE_IPV4: - destAddr.set(field(destAddrPtr,4),4,at(destAddrPtr + 4)); - break; - case ZT_PROTO_DEST_ADDRESS_TYPE_IPV6: - destAddr.set(field(destAddrPtr,16),16,at(destAddrPtr + 16)); - break; - } - } - SharedPtr peer(RR->topology->getPeer(id.address())); if (peer) { // We already have an identity with this address -- check for collisions @@ -230,7 +225,7 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) TRACE("rejected HELLO from %s(%s): address already claimed",id.address().toString().c_str(),_remoteAddress.toString().c_str()); Packet outp(id.address(),RR->identity.address(),Packet::VERB_ERROR); outp.append((unsigned char)Packet::VERB_HELLO); - outp.append(packetId()); + outp.append((uint64_t)pid); outp.append((unsigned char)Packet::ERROR_IDENTITY_COLLISION); outp.armor(key,true); RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); @@ -273,41 +268,23 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) // Continue at // VALID } - // VALID -- continues here + // VALID -- if we made it here, packet passed identity and authenticity checks! - peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_HELLO,0,Packet::VERB_NOP); + peer->received(RR,_localAddress,_remoteAddress,hops(),pid,Packet::VERB_HELLO,0,Packet::VERB_NOP); peer->setRemoteVersion(protoVersion,vMajor,vMinor,vRevision); - bool trusted = RR->topology->isRoot(id); if (destAddr) - RR->sa->iam(id.address(),_remoteAddress,destAddr,trusted,RR->node->now()); + RR->sa->iam(id.address(),_remoteAddress,destAddr,RR->topology->isRoot(id),RR->node->now()); Packet outp(id.address(),RR->identity.address(),Packet::VERB_OK); - outp.append((unsigned char)Packet::VERB_HELLO); - outp.append(packetId()); - outp.append(timestamp); + outp.append((uint64_t)pid); + outp.append((uint64_t)timestamp); outp.append((unsigned char)ZT_PROTO_VERSION); outp.append((unsigned char)ZEROTIER_ONE_VERSION_MAJOR); outp.append((unsigned char)ZEROTIER_ONE_VERSION_MINOR); outp.append((uint16_t)ZEROTIER_ONE_VERSION_REVISION); - - switch(_remoteAddress.ss_family) { - case AF_INET: - outp.append((unsigned char)ZT_PROTO_DEST_ADDRESS_TYPE_IPV4); - outp.append(_remoteAddress.rawIpData(),4); - outp.append((uint16_t)_remoteAddress.port()); - break; - case AF_INET6: - outp.append((unsigned char)ZT_PROTO_DEST_ADDRESS_TYPE_IPV6); - outp.append(_remoteAddress.rawIpData(),16); - outp.append((uint16_t)_remoteAddress.port()); - break; - default: - outp.append((unsigned char)ZT_PROTO_DEST_ADDRESS_TYPE_NONE); - break; - } - + _remoteAddress.serialize(outp); outp.armor(peer->key(),true); RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); } catch (std::exception &ex) { @@ -336,18 +313,9 @@ bool IncomingPacket::_doOK(const RuntimeEnvironment *RR,const SharedPtr &p const unsigned int vRevision = at(ZT_PROTO_VERB_HELLO__OK__IDX_REVISION); InetAddress destAddr; - unsigned int destAddrPtr = ZT_PROTO_VERB_HELLO__OK__IDX_REVISION + 2; // dest address, if present, will start after 16-bit revision - if (destAddrPtr < size()) { // ZeroTier One < 1.0.3 did not include this field - const unsigned int destAddrType = (*this)[destAddrPtr++]; - switch(destAddrType) { - case ZT_PROTO_DEST_ADDRESS_TYPE_IPV4: - destAddr.set(field(destAddrPtr,4),4,at(destAddrPtr + 4)); - break; - case ZT_PROTO_DEST_ADDRESS_TYPE_IPV6: - destAddr.set(field(destAddrPtr,16),16,at(destAddrPtr + 16)); - break; - } - } + if ((ZT_PROTO_VERB_HELLO__OK__IDX_REVISION + 2) < size()) // ZeroTier One < 1.0.3 did not include this field + destAddr.deserialize(*this,ZT_PROTO_VERB_HELLO__OK__IDX_REVISION + 2); + printf("OK(HELLO) %s\n",destAddr.toString().c_str()); if (vProto < ZT_PROTO_VERSION_MIN) { TRACE("%s(%s): OK(HELLO) dropped, protocol version too old",source().toString().c_str(),_remoteAddress.toString().c_str()); diff --git a/node/InetAddress.hpp b/node/InetAddress.hpp index c376a032e..6970e92d2 100644 --- a/node/InetAddress.hpp +++ b/node/InetAddress.hpp @@ -366,7 +366,8 @@ struct InetAddress : public sockaddr_storage template inline void serialize(Buffer &b) const { - // Format is the same as in VERB_HELLO in Packet.hpp + // This is used in the protocol and must be the same as describe in places + // like VERB_HELLO in Packet.hpp. switch(ss_family) { case AF_INET: b.append((uint8_t)0x04); @@ -387,8 +388,8 @@ struct InetAddress : public sockaddr_storage template inline unsigned int deserialize(const Buffer &b,unsigned int startAt = 0) { - unsigned int p = startAt; memset(this,0,sizeof(InetAddress)); + unsigned int p = startAt; switch(b[p++]) { case 0: return 1; diff --git a/node/Packet.hpp b/node/Packet.hpp index 409762c7e..1413db107 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -55,13 +55,15 @@ * 3 - 0.5.0 ... 0.6.0 * * Yet another multicast redesign * * New crypto completely changes key agreement cipher - * 4 - 0.6.0 ... CURRENT + * 4 - 0.6.0 ... 1.0.6 * * New identity format based on hashcash design + * 5 - 1.0.6 ... CURRENT + * * Supports CIRCUIT_TEST and friends, otherwise compatibie w/v4 * * This isn't going to change again for a long time unless your * author wakes up again at 4am with another great idea. :P */ -#define ZT_PROTO_VERSION 4 +#define ZT_PROTO_VERSION 5 /** * Minimum supported protocol version @@ -233,15 +235,6 @@ */ #define ZT_PROTO_MIN_FRAGMENT_LENGTH ZT_PACKET_FRAGMENT_IDX_PAYLOAD -// Destination address types from HELLO, OK(HELLO), and other message types -#define ZT_PROTO_DEST_ADDRESS_TYPE_NONE 0 -#define ZT_PROTO_DEST_ADDRESS_TYPE_ZEROTIER 1 // reserved but unused -#define ZT_PROTO_DEST_ADDRESS_TYPE_ETHERNET 2 // future use -#define ZT_PROTO_DEST_ADDRESS_TYPE_BLUETOOTH 3 // future use -#define ZT_PROTO_DEST_ADDRESS_TYPE_IPV4 4 -#define ZT_PROTO_DEST_ADDRESS_TYPE_LTE_DIRECT 5 // future use -#define ZT_PROTO_DEST_ADDRESS_TYPE_IPV6 6 - // Ephemeral key record flags #define ZT_PROTO_EPHEMERAL_KEY_FLAG_FIPS 0x01 // future use diff --git a/node/Peer.cpp b/node/Peer.cpp index 757f822c5..15648e0f0 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -170,25 +170,8 @@ void Peer::attemptToContactAt(const RuntimeEnvironment *RR,const InetAddress &lo outp.append((unsigned char)ZEROTIER_ONE_VERSION_MINOR); outp.append((uint16_t)ZEROTIER_ONE_VERSION_REVISION); outp.append(now); - RR->identity.serialize(outp,false); - - switch(atAddress.ss_family) { - case AF_INET: - outp.append((unsigned char)ZT_PROTO_DEST_ADDRESS_TYPE_IPV4); - outp.append(atAddress.rawIpData(),4); - outp.append((uint16_t)atAddress.port()); - break; - case AF_INET6: - outp.append((unsigned char)ZT_PROTO_DEST_ADDRESS_TYPE_IPV6); - outp.append(atAddress.rawIpData(),16); - outp.append((uint16_t)atAddress.port()); - break; - default: - outp.append((unsigned char)ZT_PROTO_DEST_ADDRESS_TYPE_NONE); - break; - } - + atAddress.serialize(outp); outp.armor(_key,false); // HELLO is sent in the clear RR->node->putPacket(localAddr,atAddress,outp.data(),outp.size()); } From c952fbbd8d72c7f4e295bcacfe6e5b0b448505af Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 7 Oct 2015 10:40:59 -0700 Subject: [PATCH 031/314] Only enable 128-bit Poly1305 on X86_64 right now. Has compilation issues on ARM, but the 64-bit version should be fine. --- node/Poly1305.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/node/Poly1305.cpp b/node/Poly1305.cpp index 0968170eb..b78071f65 100644 --- a/node/Poly1305.cpp +++ b/node/Poly1305.cpp @@ -20,6 +20,9 @@ namespace ZeroTier { #if 0 +// "Naive" implementation, which is slower... might still want this on some older +// or weird platforms if the later versions have issues. + static inline void add(unsigned int h[17],const unsigned int c[17]) { unsigned int j; @@ -132,10 +135,10 @@ typedef struct poly1305_context { unsigned char opaque[136]; } poly1305_context; -#if defined(_MSC_VER) || defined(__GNUC__) +#if (defined(_MSC_VER) || defined(__GNUC__)) && (defined(__amd64) || defined(__amd64__) || defined(__x86_64) || defined(__x86_64__) || defined(__AMD64) || defined(__AMD64__)) ////////////////////////////////////////////////////////////////////////////// -// 128-bit implementation for MSC and GCC +// 128-bit implementation for MSC and GCC from Poly1305-donna #if defined(_MSC_VER) #include From 13f14c2f4ccdb38f033a8092f0088f62d2a17348 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 7 Oct 2015 10:56:47 -0700 Subject: [PATCH 032/314] Kill debug line. --- node/IncomingPacket.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 6186affdf..19bea2430 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -315,7 +315,6 @@ bool IncomingPacket::_doOK(const RuntimeEnvironment *RR,const SharedPtr &p InetAddress destAddr; if ((ZT_PROTO_VERB_HELLO__OK__IDX_REVISION + 2) < size()) // ZeroTier One < 1.0.3 did not include this field destAddr.deserialize(*this,ZT_PROTO_VERB_HELLO__OK__IDX_REVISION + 2); - printf("OK(HELLO) %s\n",destAddr.toString().c_str()); if (vProto < ZT_PROTO_VERSION_MIN) { TRACE("%s(%s): OK(HELLO) dropped, protocol version too old",source().toString().c_str(),_remoteAddress.toString().c_str()); From 7d62dbe9f7fa620982c71f44089d319120023e26 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 7 Oct 2015 11:57:59 -0700 Subject: [PATCH 033/314] Tune NAT-t keepalives so that timing is better obeyed, clean up a build warning, and fix a potential source of network recursion (though harmless). --- node/Constants.hpp | 2 +- node/Network.cpp | 2 -- node/Peer.cpp | 7 +++++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/node/Constants.hpp b/node/Constants.hpp index 27c43aa7d..9ab390eb6 100644 --- a/node/Constants.hpp +++ b/node/Constants.hpp @@ -264,7 +264,7 @@ * This is also how often pings will be retried to upstream peers (relays, roots) * constantly until something is heard. */ -#define ZT_PING_CHECK_INVERVAL 6250 +#define ZT_PING_CHECK_INVERVAL 9500 /** * Delay between ordinary case pings of direct links diff --git a/node/Network.cpp b/node/Network.cpp index 9ce58c630..46f932419 100644 --- a/node/Network.cpp +++ b/node/Network.cpp @@ -448,7 +448,6 @@ class _AnnounceMulticastGroupsToAll public: _AnnounceMulticastGroupsToAll(const RuntimeEnvironment *renv,Network *nw) : _now(renv->node->now()), - RR(renv), _network(nw), _rootAddresses(renv->topology->rootAddresses()), _allMulticastGroups(nw->_allMulticastGroups()) @@ -458,7 +457,6 @@ public: private: uint64_t _now; - const RuntimeEnvironment *RR; Network *_network; std::vector
_rootAddresses; std::vector _allMulticastGroups; diff --git a/node/Peer.cpp b/node/Peer.cpp index 15648e0f0..111c849e7 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -173,6 +173,7 @@ void Peer::attemptToContactAt(const RuntimeEnvironment *RR,const InetAddress &lo RR->identity.serialize(outp,false); atAddress.serialize(outp); outp.armor(_key,false); // HELLO is sent in the clear + RR->antiRec->logOutgoingZT(outp.data(),outp.size()); RR->node->putPacket(localAddr,atAddress,outp.data(),outp.size()); } @@ -182,12 +183,12 @@ void Peer::doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now) RemotePath *const bestPath = _getBestPath(now); if (bestPath) { if ((now - bestPath->lastReceived()) >= ZT_PEER_DIRECT_PING_DELAY) { - TRACE("PING %s(%s)",_id.address().toString().c_str(),bestPath->address().toString().c_str()); + TRACE("PING %s(%s) after %llums/%llums send/receive inactivity",_id.address().toString().c_str(),bestPath->address().toString().c_str(),now - bestPath->lastSend(),now - bestPath->lastReceived()); attemptToContactAt(RR,bestPath->localAddress(),bestPath->address(),now); bestPath->sent(now); } else if (((now - bestPath->lastSend()) >= ZT_NAT_KEEPALIVE_DELAY)&&(!bestPath->reliable())) { + TRACE("NAT keepalive %s(%s) after %llums/%llums send/receive inactivity",_id.address().toString().c_str(),bestPath->address().toString().c_str(),now - bestPath->lastSend(),now - bestPath->lastReceived()); _natKeepaliveBuf += (uint32_t)((now * 0x9e3779b1) >> 1); // tumble this around to send constantly varying (meaningless) payloads - TRACE("NAT keepalive %s(%s)",_id.address().toString().c_str(),bestPath->address().toString().c_str()); RR->node->putPacket(bestPath->localAddress(),bestPath->address(),&_natKeepaliveBuf,sizeof(_natKeepaliveBuf)); bestPath->sent(now); } @@ -202,6 +203,8 @@ void Peer::pushDirectPaths(const RuntimeEnvironment *RR,RemotePath *path,uint64_ _lastDirectPathPush = now; std::vector dps(RR->node->directPaths()); + if (dps.empty()) + return; #ifdef ZT_TRACE { From e5f168f599ba053ee5e6029387dd7ad4b95a7d28 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 7 Oct 2015 13:35:46 -0700 Subject: [PATCH 034/314] Add proof of work request for future DDOS mitigation use. --- node/IncomingPacket.cpp | 121 ++++++++++++++++++++++++++++++++++++++++ node/IncomingPacket.hpp | 22 ++++++++ node/Packet.cpp | 2 +- node/Packet.hpp | 102 ++++++++++++++++++++++++++------- selftest.cpp | 14 +++++ 5 files changed, 240 insertions(+), 21 deletions(-) diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 19bea2430..de9017790 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -41,6 +41,8 @@ #include "Peer.hpp" #include "NetworkController.hpp" #include "SelfAwareness.hpp" +#include "Salsa20.hpp" +#include "SHA512.hpp" namespace ZeroTier { @@ -90,6 +92,7 @@ bool IncomingPacket::tryDecode(const RuntimeEnvironment *RR) case Packet::VERB_PUSH_DIRECT_PATHS: return _doPUSH_DIRECT_PATHS(RR,peer); case Packet::VERB_CIRCUIT_TEST: return _doCIRCUIT_TEST(RR,peer); case Packet::VERB_CIRCUIT_TEST_REPORT: return _doCIRCUIT_TEST_REPORT(RR,peer); + case Packet::VERB_REQUEST_PROOF_OF_WORK: return _doREQUEST_PROOF_OF_WORK(RR,peer); } } else { RR->sw->requestWhois(sourceAddress); @@ -1042,6 +1045,124 @@ bool IncomingPacket::_doCIRCUIT_TEST_REPORT(const RuntimeEnvironment *RR,const S return true; } +bool IncomingPacket::_doREQUEST_PROOF_OF_WORK(const RuntimeEnvironment *RR,const SharedPtr &peer) +{ + try { + // Right now this is only allowed from root servers -- may be allowed from controllers and relays later. + if (RR->topology->isRoot(peer->identity())) { + const unsigned int difficulty = (*this)[ZT_PACKET_IDX_PAYLOAD + 1]; + const unsigned int challengeLength = at(ZT_PACKET_IDX_PAYLOAD + 2); + if (challengeLength > ZT_PROTO_MAX_PACKET_LENGTH) + return true; // sanity check, drop invalid size + const unsigned char *challenge = field(ZT_PACKET_IDX_PAYLOAD + 4,challengeLength); + + switch((*this)[ZT_PACKET_IDX_PAYLOAD]) { + + // Salsa20/12+SHA512 hashcash + case 0x01: { + unsigned char result[16]; + computeSalsa2012Sha512ProofOfWork(difficulty,challenge,challengeLength,result); + + Packet outp(peer->address(),RR->identity.address(),Packet::VERB_OK); + outp.append((unsigned char)Packet::VERB_REQUEST_PROOF_OF_WORK); + outp.append(packetId()); + outp.append((uint16_t)sizeof(result)); + outp.append(result,sizeof(result)); + outp.armor(peer->key(),true); + RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); + } break; + + default: + TRACE("dropped REQUEST_PROO_OF_WORK from %s(%s): unrecognized proof of work type",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); + break; + } + } else { + TRACE("dropped REQUEST_PROO_OF_WORK from %s(%s): not trusted enough",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); + } + } catch ( ... ) { + TRACE("dropped REQUEST_PROOF_OF_WORK from %s(%s): unexpected exception",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); + } + return true; +} + +void IncomingPacket::computeSalsa2012Sha512ProofOfWork(unsigned int difficulty,const void *challenge,unsigned int challengeLength,unsigned char result[16]) +{ + unsigned char salsabuf[131072]; // 131072 == protocol constant, size of memory buffer for this proof of work function + char candidatebuf[ZT_PROTO_MAX_PACKET_LENGTH + 256]; + unsigned char shabuf[ZT_SHA512_DIGEST_LEN]; + const uint64_t s20iv = 0; // zero IV for Salsa20 + char *const candidate = (char *)(( ((uintptr_t)&(candidatebuf[0])) | 0xf ) + 1); // align to 16-byte boundary to ensure that uint64_t type punning of initial nonce is okay + Salsa20 s20; + unsigned int d; + unsigned char *p; + + Utils::getSecureRandom(candidate,16); + memcpy(candidate + 16,challenge,challengeLength); + + if (difficulty > 512) + difficulty = 512; // sanity check + +try_salsa2012sha512_again: + ++*(reinterpret_cast(candidate)); + + SHA512::hash(shabuf,candidate,16 + challengeLength); + s20.init(shabuf,256,&s20iv,12); + memset(salsabuf,0,sizeof(salsabuf)); + s20.encrypt(salsabuf,salsabuf,sizeof(salsabuf)); + SHA512::hash(shabuf,salsabuf,sizeof(salsabuf)); + + d = difficulty; + p = shabuf; + while (d >= 8) { + if (*(p++)) + goto try_salsa2012sha512_again; + d -= 8; + } + if (d > 0) { + if ( ((((unsigned int)*p) << d) & 0xff00) != 0 ) + goto try_salsa2012sha512_again; + } + + memcpy(result,candidate,16); +} + +bool IncomingPacket::testSalsa2012Sha512ProofOfWorkResult(unsigned int difficulty,const void *challenge,unsigned int challengeLength,const unsigned char proposedResult[16]) +{ + unsigned char salsabuf[131072]; // 131072 == protocol constant, size of memory buffer for this proof of work function + char candidate[ZT_PROTO_MAX_PACKET_LENGTH + 256]; + unsigned char shabuf[ZT_SHA512_DIGEST_LEN]; + const uint64_t s20iv = 0; // zero IV for Salsa20 + Salsa20 s20; + unsigned int d; + unsigned char *p; + + if (difficulty > 512) + difficulty = 512; // sanity check + + memcpy(candidate,proposedResult,16); + memcpy(candidate + 16,challenge,challengeLength); + + SHA512::hash(shabuf,candidate,16 + challengeLength); + s20.init(shabuf,256,&s20iv,12); + memset(salsabuf,0,sizeof(salsabuf)); + s20.encrypt(salsabuf,salsabuf,sizeof(salsabuf)); + SHA512::hash(shabuf,salsabuf,sizeof(salsabuf)); + + d = difficulty; + p = shabuf; + while (d >= 8) { + if (*(p++)) + return false; + d -= 8; + } + if (d > 0) { + if ( ((((unsigned int)*p) << d) & 0xff00) != 0 ) + return false; + } + + return true; +} + void IncomingPacket::_sendErrorNeedCertificate(const RuntimeEnvironment *RR,const SharedPtr &peer,uint64_t nwid) { Packet outp(source(),RR->identity.address(),Packet::VERB_ERROR); diff --git a/node/IncomingPacket.hpp b/node/IncomingPacket.hpp index 06220c4bc..fd7a06c0e 100644 --- a/node/IncomingPacket.hpp +++ b/node/IncomingPacket.hpp @@ -107,6 +107,27 @@ public: */ inline uint64_t receiveTime() const throw() { return _receiveTime; } + /** + * Compute the Salsa20/12+SHA512 proof of work function + * + * @param difficulty Difficulty in bits (max: 64) + * @param challenge Challenge string + * @param challengeLength Length of challenge in bytes (max allowed: ZT_PROTO_MAX_PACKET_LENGTH) + * @param result Buffer to fill with 16-byte result + */ + static void computeSalsa2012Sha512ProofOfWork(unsigned int difficulty,const void *challenge,unsigned int challengeLength,unsigned char result[16]); + + /** + * Verify the result of Salsa20/12+SHA512 proof of work + * + * @param difficulty Difficulty in bits (max: 64) + * @param challenge Challenge bytes + * @param challengeLength Length of challenge in bytes (max allowed: ZT_PROTO_MAX_PACKET_LENGTH) + * @param proposedResult Result supplied by client + * @return True if result is valid + */ + static bool testSalsa2012Sha512ProofOfWorkResult(unsigned int difficulty,const void *challenge,unsigned int challengeLength,const unsigned char proposedResult[16]); + private: // These are called internally to handle packet contents once it has // been authenticated, decrypted, decompressed, and classified. @@ -126,6 +147,7 @@ private: bool _doPUSH_DIRECT_PATHS(const RuntimeEnvironment *RR,const SharedPtr &peer); bool _doCIRCUIT_TEST(const RuntimeEnvironment *RR,const SharedPtr &peer); bool _doCIRCUIT_TEST_REPORT(const RuntimeEnvironment *RR,const SharedPtr &peer); + bool _doREQUEST_PROOF_OF_WORK(const RuntimeEnvironment *RR,const SharedPtr &peer); // Send an ERROR_NEED_MEMBERSHIP_CERTIFICATE to a peer indicating that an updated cert is needed to communicate void _sendErrorNeedCertificate(const RuntimeEnvironment *RR,const SharedPtr &peer,uint64_t nwid); diff --git a/node/Packet.cpp b/node/Packet.cpp index f69e4e79b..2d973dff9 100644 --- a/node/Packet.cpp +++ b/node/Packet.cpp @@ -45,7 +45,6 @@ const char *Packet::verbString(Verb v) case VERB_RENDEZVOUS: return "RENDEZVOUS"; case VERB_FRAME: return "FRAME"; case VERB_EXT_FRAME: return "EXT_FRAME"; - case VERB_P5_MULTICAST_FRAME: return "P5_MULTICAST_FRAME"; case VERB_MULTICAST_LIKE: return "MULTICAST_LIKE"; case VERB_NETWORK_MEMBERSHIP_CERTIFICATE: return "NETWORK_MEMBERSHIP_CERTIFICATE"; case VERB_NETWORK_CONFIG_REQUEST: return "NETWORK_CONFIG_REQUEST"; @@ -56,6 +55,7 @@ const char *Packet::verbString(Verb v) case VERB_PUSH_DIRECT_PATHS: return "PUSH_DIRECT_PATHS"; case VERB_CIRCUIT_TEST: return "CIRCUIT_TEST"; case VERB_CIRCUIT_TEST_REPORT: return "CIRCUIT_TEST_REPORT"; + case VERB_REQUEST_PROOF_OF_WORK: return "REQUEST_PROOF_OF_WORK"; } return "(unknown)"; } diff --git a/node/Packet.hpp b/node/Packet.hpp index 1413db107..93b594e59 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -523,10 +523,13 @@ public: */ enum Verb /* Max value: 32 (5 bits) */ { - /* No operation, payload ignored, no reply */ + /** + * No operation (ignored, no reply) + */ VERB_NOP = 0, - /* Announcement of a node's existence: + /** + * Announcement of a node's existence: * <[1] protocol version> * <[1] software major version> * <[1] software minor version> @@ -564,7 +567,8 @@ public: */ VERB_HELLO = 1, - /* Error response: + /** + * Error response: * <[1] in-re verb> * <[8] in-re packet ID> * <[1] error code> @@ -572,14 +576,16 @@ public: */ VERB_ERROR = 2, - /* Success response: + /** + * Success response: * <[1] in-re verb> * <[8] in-re packet ID> * <[...] request-specific payload> */ VERB_OK = 3, - /* Query an identity by address: + /** + * Query an identity by address: * <[5] address to look up> * * OK response payload: @@ -590,7 +596,8 @@ public: */ VERB_WHOIS = 4, - /* Meet another node at a given protocol address: + /** + * Meet another node at a given protocol address: * <[1] flags (unused, currently 0)> * <[5] ZeroTier address of peer that might be found at this address> * <[2] 16-bit protocol address port> @@ -613,7 +620,8 @@ public: */ VERB_RENDEZVOUS = 5, - /* ZT-to-ZT unicast ethernet frame (shortened EXT_FRAME): + /** + * ZT-to-ZT unicast ethernet frame (shortened EXT_FRAME): * <[8] 64-bit network ID> * <[2] 16-bit ethertype> * <[...] ethernet payload> @@ -628,7 +636,8 @@ public: */ VERB_FRAME = 6, - /* Full Ethernet frame with MAC addressing and optional fields: + /** + * Full Ethernet frame with MAC addressing and optional fields: * <[8] 64-bit network ID> * <[1] flags> * [<[...] certificate of network membership>] @@ -652,9 +661,10 @@ public: VERB_EXT_FRAME = 7, /* DEPRECATED */ - VERB_P5_MULTICAST_FRAME = 8, + //VERB_P5_MULTICAST_FRAME = 8, - /* Announce interest in multicast group(s): + /** + * Announce interest in multicast group(s): * <[8] 64-bit network ID> * <[6] multicast Ethernet address> * <[4] multicast additional distinguishing information (ADI)> @@ -667,7 +677,8 @@ public: */ VERB_MULTICAST_LIKE = 9, - /* Network member certificate replication/push: + /** + * Network member certificate replication/push: * <[...] serialized certificate of membership> * [ ... additional certificates may follow ...] * @@ -678,7 +689,8 @@ public: */ VERB_NETWORK_MEMBERSHIP_CERTIFICATE = 10, - /* Network configuration request: + /** + * Network configuration request: * <[8] 64-bit network ID> * <[2] 16-bit length of request meta-data dictionary> * <[...] string-serialized request meta-data> @@ -713,7 +725,8 @@ public: */ VERB_NETWORK_CONFIG_REQUEST = 11, - /* Network configuration refresh request: + /** + * Network configuration refresh request: * <[...] array of 64-bit network IDs> * * This can be sent by the network controller to inform a node that it @@ -724,7 +737,8 @@ public: */ VERB_NETWORK_CONFIG_REFRESH = 12, - /* Request endpoints for multicast distribution: + /** + * Request endpoints for multicast distribution: * <[8] 64-bit network ID> * <[1] flags> * <[6] MAC address of multicast group being queried> @@ -762,7 +776,8 @@ public: */ VERB_MULTICAST_GATHER = 13, - /* Multicast frame: + /** + * Multicast frame: * <[8] 64-bit network ID> * <[1] flags> * [<[...] network certificate of membership>] @@ -803,7 +818,8 @@ public: */ VERB_MULTICAST_FRAME = 14, - /* Ephemeral (PFS) key push: (UNFINISHED, NOT IMPLEMENTED YET) + /** + * Ephemeral (PFS) key push: (UNFINISHED, NOT IMPLEMENTED YET) * <[2] flags (unused and reserved, must be 0)> * <[2] length of padding / extra field section> * <[...] padding / extra field section> @@ -859,7 +875,8 @@ public: */ VERB_SET_EPHEMERAL_KEY = 15, - /* Push of potential endpoints for direct communication: + /** + * Push of potential endpoints for direct communication: * <[2] 16-bit number of paths> * <[...] paths> * @@ -899,7 +916,8 @@ public: */ VERB_PUSH_DIRECT_PATHS = 16, - /* Source-routed circuit test message: + /** + * Source-routed circuit test message: * <[5] address of originator of circuit test> * <[2] 16-bit flags> * <[8] 64-bit timestamp> @@ -977,7 +995,8 @@ public: */ VERB_CIRCUIT_TEST = 17, - /* Circuit test hop report: + /** + * Circuit test hop report: * <[8] 64-bit timestamp (from original test)> * <[8] 64-bit test ID (from original test)> * <[8] 64-bit reporter timestamp (reporter's clock, 0 if unspec)> @@ -1010,7 +1029,50 @@ public: * If a test report is received and no circuit test was sent, it should be * ignored. This message generates no OK or ERROR response. */ - VERB_CIRCUIT_TEST_REPORT = 18 + VERB_CIRCUIT_TEST_REPORT = 18, + + /** + * Request proof of work: + * <[1] 8-bit proof of work type> + * <[1] 8-bit proof of work difficulty> + * <[2] 16-bit length of proof of work challenge> + * <[...] proof of work challenge> + * + * This requests that a peer perform a proof of work calucation. It can be + * sent by highly trusted peers (e.g. root servers, network controllers) + * under suspected denial of service conditions in an attempt to filter + * out "non-serious" peers and remain responsive to those proving their + * intent to actually communicate. + * + * If the peer obliges to perform the work, it does so and responds with + * an OK containing the result. Otherwise it may ignore the message or + * response with an ERROR_INVALID_REQUEST or ERROR_UNSUPPORTED_OPERATION. + * + * Proof of work type IDs: + * 0x01 - Salsa20/12+SHA512 hashcash function + * + * Salsa20/12+SHA512 is based on the following composite hash function: + * + * (1) Compute SHA512(candidate) + * (2) Use the first 256 bits of the result of #1 as a key to encrypt + * 131072 zero bytes with Salsa20/12 (with a zero IV). + * (3) Compute SHA512(the result of step #2) + * (4) Accept this candiate if the first [difficulty] bits of the result + * from step #3 are zero. Otherwise generate a new candidate and try + * again. + * + * This is performed repeatedly on candidates generated by appending the + * supplied challenge to an arbitrary nonce until a valid candidate + * is found. This chosen prepended nonce is then returned as the result + * in OK. + * + * OK payload: + * <[2] 16-bit length of result> + * <[...] computed proof of work> + * + * ERROR has no payload. + */ + VERB_REQUEST_PROOF_OF_WORK = 19 }; /** diff --git a/selftest.cpp b/selftest.cpp index e938cf4d6..090839eed 100644 --- a/selftest.cpp +++ b/selftest.cpp @@ -52,6 +52,7 @@ #include "node/CertificateOfMembership.hpp" #include "node/Defaults.hpp" #include "node/Node.hpp" +#include "node/IncomingPacket.hpp" #include "osdep/OSUtils.hpp" #include "osdep/Phy.hpp" @@ -285,6 +286,19 @@ static int testCrypto() ::free((void *)bb); } + /* + for(unsigned int d=8;d<=10;++d) { + for(int k=0;k<8;++k) { + std::cout << "[crypto] computeSalsa2012Sha512ProofOfWork(" << d << ",\"foobarbaz\",9) == "; std::cout.flush(); + unsigned char result[16]; + uint64_t start = OSUtils::now(); + IncomingPacket::computeSalsa2012Sha512ProofOfWork(d,"foobarbaz",9,result); + uint64_t end = OSUtils::now(); + std::cout << Utils::hex(result,16) << " -- valid: " << IncomingPacket::testSalsa2012Sha512ProofOfWorkResult(d,"foobarbaz",9,result) << ", " << (end - start) << "ms" << std::endl; + } + } + */ + std::cout << "[crypto] Testing C25519 and Ed25519 against test vectors... "; std::cout.flush(); for(int k=0;k Date: Wed, 7 Oct 2015 13:46:44 -0700 Subject: [PATCH 035/314] Limit proof of work difficulty to something sane. --- node/IncomingPacket.cpp | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index de9017790..cfe5a6c30 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -1060,24 +1060,33 @@ bool IncomingPacket::_doREQUEST_PROOF_OF_WORK(const RuntimeEnvironment *RR,const // Salsa20/12+SHA512 hashcash case 0x01: { - unsigned char result[16]; - computeSalsa2012Sha512ProofOfWork(difficulty,challenge,challengeLength,result); - - Packet outp(peer->address(),RR->identity.address(),Packet::VERB_OK); - outp.append((unsigned char)Packet::VERB_REQUEST_PROOF_OF_WORK); - outp.append(packetId()); - outp.append((uint16_t)sizeof(result)); - outp.append(result,sizeof(result)); - outp.armor(peer->key(),true); - RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); + if (difficulty <= 14) { + unsigned char result[16]; + computeSalsa2012Sha512ProofOfWork(difficulty,challenge,challengeLength,result); + TRACE("PROOF_OF_WORK computed for %s: difficulty==%u, challengeLength==%u, result: %.16llx%.16llx",peer->address().toString().c_str(),difficulty,challengeLength,Utils::ntoh(*(reinterpret_cast(result))),Utils::ntoh(*(reinterpret_cast(result + 8)))); + Packet outp(peer->address(),RR->identity.address(),Packet::VERB_OK); + outp.append((unsigned char)Packet::VERB_REQUEST_PROOF_OF_WORK); + outp.append(packetId()); + outp.append((uint16_t)sizeof(result)); + outp.append(result,sizeof(result)); + outp.armor(peer->key(),true); + RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); + } else { + Packet outp(peer->address(),RR->identity.address(),Packet::VERB_ERROR); + outp.append((unsigned char)Packet::VERB_REQUEST_PROOF_OF_WORK); + outp.append(packetId()); + outp.append((unsigned char)Packet::ERROR_INVALID_REQUEST); + outp.armor(peer->key(),true); + RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); + } } break; default: - TRACE("dropped REQUEST_PROO_OF_WORK from %s(%s): unrecognized proof of work type",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped REQUEST_PROOF_OF_WORK from %s(%s): unrecognized proof of work type",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); break; } } else { - TRACE("dropped REQUEST_PROO_OF_WORK from %s(%s): not trusted enough",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped REQUEST_PROOF_OF_WORK from %s(%s): not trusted enough",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); } } catch ( ... ) { TRACE("dropped REQUEST_PROOF_OF_WORK from %s(%s): unexpected exception",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); From 69b44bf9a56ea742e05035f31660fbb23762df1b Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 7 Oct 2015 16:11:50 -0700 Subject: [PATCH 036/314] Finally add an ECHO. --- node/IncomingPacket.cpp | 15 ++++++++++++++- node/IncomingPacket.hpp | 1 + node/Packet.cpp | 1 + node/Packet.hpp | 28 ++++++++++++++++------------ 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index cfe5a6c30..083c47f82 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -83,6 +83,7 @@ bool IncomingPacket::tryDecode(const RuntimeEnvironment *RR) case Packet::VERB_RENDEZVOUS: return _doRENDEZVOUS(RR,peer); case Packet::VERB_FRAME: return _doFRAME(RR,peer); case Packet::VERB_EXT_FRAME: return _doEXT_FRAME(RR,peer); + case Packet::VERB_ECHO: return _doECHO(RR,peer); case Packet::VERB_MULTICAST_LIKE: return _doMULTICAST_LIKE(RR,peer); case Packet::VERB_NETWORK_MEMBERSHIP_CERTIFICATE: return _doNETWORK_MEMBERSHIP_CERTIFICATE(RR,peer); case Packet::VERB_NETWORK_CONFIG_REQUEST: return _doNETWORK_CONFIG_REQUEST(RR,peer); @@ -569,6 +570,18 @@ bool IncomingPacket::_doEXT_FRAME(const RuntimeEnvironment *RR,const SharedPtr

&peer) +{ + try { + Packet outp(peer->address(),RR->identity.address(),Packet::VERB_OK); + outp.append((unsigned char)Packet::VERB_ECHO); + outp.append(packetId()); + outp.append(field(ZT_PACKET_IDX_PAYLOAD,size() - ZT_PACKET_IDX_PAYLOAD),size() - ZT_PACKET_IDX_PAYLOAD); + RR->sw->send(outp,true,0); + } catch ( ... ) {} + return true; +} + bool IncomingPacket::_doMULTICAST_LIKE(const RuntimeEnvironment *RR,const SharedPtr &peer) { try { @@ -636,7 +649,7 @@ bool IncomingPacket::_doNETWORK_CONFIG_REQUEST(const RuntimeEnvironment *RR,cons outp.append(netconfStr.data(),(unsigned int)netconfStr.length()); outp.compress(); outp.armor(peer->key(),true); - if (outp.size() > ZT_PROTO_MAX_PACKET_LENGTH) { + if (outp.size() > ZT_PROTO_MAX_PACKET_LENGTH) { // sanity check TRACE("NETWORK_CONFIG_REQUEST failed: internal error: netconf size %u is too large",(unsigned int)netconfStr.length()); } else { RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); diff --git a/node/IncomingPacket.hpp b/node/IncomingPacket.hpp index fd7a06c0e..f5dd4b27a 100644 --- a/node/IncomingPacket.hpp +++ b/node/IncomingPacket.hpp @@ -138,6 +138,7 @@ private: bool _doRENDEZVOUS(const RuntimeEnvironment *RR,const SharedPtr &peer); bool _doFRAME(const RuntimeEnvironment *RR,const SharedPtr &peer); bool _doEXT_FRAME(const RuntimeEnvironment *RR,const SharedPtr &peer); + bool _doECHO(const RuntimeEnvironment *RR,const SharedPtr &peer); bool _doMULTICAST_LIKE(const RuntimeEnvironment *RR,const SharedPtr &peer); bool _doNETWORK_MEMBERSHIP_CERTIFICATE(const RuntimeEnvironment *RR,const SharedPtr &peer); bool _doNETWORK_CONFIG_REQUEST(const RuntimeEnvironment *RR,const SharedPtr &peer); diff --git a/node/Packet.cpp b/node/Packet.cpp index 2d973dff9..2fb7d4888 100644 --- a/node/Packet.cpp +++ b/node/Packet.cpp @@ -45,6 +45,7 @@ const char *Packet::verbString(Verb v) case VERB_RENDEZVOUS: return "RENDEZVOUS"; case VERB_FRAME: return "FRAME"; case VERB_EXT_FRAME: return "EXT_FRAME"; + case VERB_ECHO: return "ECHO"; case VERB_MULTICAST_LIKE: return "MULTICAST_LIKE"; case VERB_NETWORK_MEMBERSHIP_CERTIFICATE: return "NETWORK_MEMBERSHIP_CERTIFICATE"; case VERB_NETWORK_CONFIG_REQUEST: return "NETWORK_CONFIG_REQUEST"; diff --git a/node/Packet.hpp b/node/Packet.hpp index 93b594e59..01aadad00 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -46,22 +46,20 @@ #include "../ext/lz4/lz4.h" /** - * Protocol version -- incremented only for MAJOR changes + * Protocol version -- incremented only for major changes * * 1 - 0.2.0 ... 0.2.5 * 2 - 0.3.0 ... 0.4.5 - * * Added signature and originating peer to multicast frame - * * Double size of multicast frame bloom filter + * + Added signature and originating peer to multicast frame + * + Double size of multicast frame bloom filter * 3 - 0.5.0 ... 0.6.0 - * * Yet another multicast redesign - * * New crypto completely changes key agreement cipher + * + Yet another multicast redesign + * + New crypto completely changes key agreement cipher * 4 - 0.6.0 ... 1.0.6 - * * New identity format based on hashcash design + * + New identity format based on hashcash design * 5 - 1.0.6 ... CURRENT - * * Supports CIRCUIT_TEST and friends, otherwise compatibie w/v4 - * - * This isn't going to change again for a long time unless your - * author wakes up again at 4am with another great idea. :P + * + Supports circuit test, proof of work, and echo + * + Otherwise backward compatible with 4 */ #define ZT_PROTO_VERSION 5 @@ -660,8 +658,14 @@ public: */ VERB_EXT_FRAME = 7, - /* DEPRECATED */ - //VERB_P5_MULTICAST_FRAME = 8, + /** + * ECHO request (a.k.a. ping): + * <[...] arbitrary payload to be echoed back> + * + * This generates OK with a copy of the transmitted payload. No ERROR + * is generated. Response to ECHO requests is optional. + */ + VERB_ECHO = 8, /** * Announce interest in multicast group(s): From 0ce0bc00d220ba67af03bf0cc01c8fe9f9104039 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 7 Oct 2015 16:20:54 -0700 Subject: [PATCH 037/314] Make sure received() gets called for some new messages, and docs. --- node/IncomingPacket.cpp | 17 +++++++++++++---- node/Packet.hpp | 2 ++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 083c47f82..4dd308cdf 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -573,11 +573,13 @@ bool IncomingPacket::_doEXT_FRAME(const RuntimeEnvironment *RR,const SharedPtr

&peer) { try { + const uint64_t pid = packetId(); Packet outp(peer->address(),RR->identity.address(),Packet::VERB_OK); outp.append((unsigned char)Packet::VERB_ECHO); - outp.append(packetId()); + outp.append((uint64_t)pid); outp.append(field(ZT_PACKET_IDX_PAYLOAD,size() - ZT_PACKET_IDX_PAYLOAD),size() - ZT_PACKET_IDX_PAYLOAD); - RR->sw->send(outp,true,0); + RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); + peer->received(RR,_localAddress,_remoteAddress,hops(),pid,Packet::VERB_ECHO,0,Packet::VERB_NOP); } catch ( ... ) {} return true; } @@ -881,6 +883,8 @@ bool IncomingPacket::_doPUSH_DIRECT_PATHS(const RuntimeEnvironment *RR,const Sha } ptr += addrLen; } + + peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_PUSH_DIRECT_PATHS,0,Packet::VERB_NOP); } catch (std::exception &exc) { TRACE("dropped PUSH_DIRECT_PATHS from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),exc.what()); } catch ( ... ) { @@ -1045,6 +1049,8 @@ bool IncomingPacket::_doCIRCUIT_TEST(const RuntimeEnvironment *RR,const SharedPt RR->sw->send(outp,true,originatorCredentialNetworkId); } } + + peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_CIRCUIT_TEST,0,Packet::VERB_NOP); } catch (std::exception &exc) { TRACE("dropped CIRCUIT_TEST from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),exc.what()); } catch ( ... ) { @@ -1063,6 +1069,7 @@ bool IncomingPacket::_doREQUEST_PROOF_OF_WORK(const RuntimeEnvironment *RR,const try { // Right now this is only allowed from root servers -- may be allowed from controllers and relays later. if (RR->topology->isRoot(peer->identity())) { + const uint64_t pid = packetId(); const unsigned int difficulty = (*this)[ZT_PACKET_IDX_PAYLOAD + 1]; const unsigned int challengeLength = at(ZT_PACKET_IDX_PAYLOAD + 2); if (challengeLength > ZT_PROTO_MAX_PACKET_LENGTH) @@ -1079,7 +1086,7 @@ bool IncomingPacket::_doREQUEST_PROOF_OF_WORK(const RuntimeEnvironment *RR,const TRACE("PROOF_OF_WORK computed for %s: difficulty==%u, challengeLength==%u, result: %.16llx%.16llx",peer->address().toString().c_str(),difficulty,challengeLength,Utils::ntoh(*(reinterpret_cast(result))),Utils::ntoh(*(reinterpret_cast(result + 8)))); Packet outp(peer->address(),RR->identity.address(),Packet::VERB_OK); outp.append((unsigned char)Packet::VERB_REQUEST_PROOF_OF_WORK); - outp.append(packetId()); + outp.append(pid); outp.append((uint16_t)sizeof(result)); outp.append(result,sizeof(result)); outp.armor(peer->key(),true); @@ -1087,7 +1094,7 @@ bool IncomingPacket::_doREQUEST_PROOF_OF_WORK(const RuntimeEnvironment *RR,const } else { Packet outp(peer->address(),RR->identity.address(),Packet::VERB_ERROR); outp.append((unsigned char)Packet::VERB_REQUEST_PROOF_OF_WORK); - outp.append(packetId()); + outp.append(pid); outp.append((unsigned char)Packet::ERROR_INVALID_REQUEST); outp.armor(peer->key(),true); RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); @@ -1098,6 +1105,8 @@ bool IncomingPacket::_doREQUEST_PROOF_OF_WORK(const RuntimeEnvironment *RR,const TRACE("dropped REQUEST_PROOF_OF_WORK from %s(%s): unrecognized proof of work type",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); break; } + + peer->received(RR,_localAddress,_remoteAddress,hops(),pid,Packet::VERB_REQUEST_PROOF_OF_WORK,0,Packet::VERB_NOP); } else { TRACE("dropped REQUEST_PROOF_OF_WORK from %s(%s): not trusted enough",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); } diff --git a/node/Packet.hpp b/node/Packet.hpp index 01aadad00..6f3cb72fa 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -664,6 +664,8 @@ public: * * This generates OK with a copy of the transmitted payload. No ERROR * is generated. Response to ECHO requests is optional. + * + * Note that fragmented ECHO packets may not work. */ VERB_ECHO = 8, From fea1b6b2c3d004ad53c5997800229c070ccee79b Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 7 Oct 2015 16:25:08 -0700 Subject: [PATCH 038/314] docs --- node/Packet.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/node/Packet.hpp b/node/Packet.hpp index 6f3cb72fa..1c7a6f5ee 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -365,6 +365,10 @@ namespace ZeroTier { * immutable. This is because intermediate nodes can increment the hop * count up to 7 (protocol max). * + * A hop count of 7 also indicates that receiving peers should not attempt + * to learn direct paths from this packet. (Right now direct paths are only + * learned from direct packets anyway.) + * * http://tonyarcieri.com/all-the-crypto-code-youve-ever-written-is-probably-broken * * For unencrypted packets, MAC is computed on plaintext. Only HELLO is ever From 9347d6c866f6cae357448762f064a481fb765c00 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 7 Oct 2015 18:04:40 -0700 Subject: [PATCH 039/314] Make it so ZeroTierOne.h can be used with a C compiler again. --- include/ZeroTierOne.h | 4 ++-- node/Node.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/ZeroTierOne.h b/include/ZeroTierOne.h index 990f682d1..175cedc50 100644 --- a/include/ZeroTierOne.h +++ b/include/ZeroTierOne.h @@ -1255,7 +1255,7 @@ void ZT_Node_freeQueryResult(ZT_Node *node,void *qr); * @param trust How much do you trust the local network under this interface? * @return Boolean: non-zero if address was accepted and added */ -int ZT_Node_addLocalInterfaceAddress(ZT_Node *node,const struct sockaddr_storage *addr,int metric,ZT_LocalInterfaceAddressTrust trust); +int ZT_Node_addLocalInterfaceAddress(ZT_Node *node,const struct sockaddr_storage *addr,int metric, enum ZT_LocalInterfaceAddressTrust trust); /** * Clear local interface addresses @@ -1296,7 +1296,7 @@ void ZT_Node_setNetconfMaster(ZT_Node *node,void *networkConfigMasterInstance); * @param reportCallback Function to call each time a report is received * @return OK or error if, for example, test is too big for a packet or support isn't compiled in */ -ZT_ResultCode ZT_Node_circuitTestBegin(ZT_Node *node,ZT_CircuitTest *test,void (*reportCallback)(ZT_Node *,ZT_CircuitTest *,const ZT_CircuitTestReport *)); +enum ZT_ResultCode ZT_Node_circuitTestBegin(ZT_Node *node,ZT_CircuitTest *test,void (*reportCallback)(ZT_Node *, ZT_CircuitTest *,const ZT_CircuitTestReport *)); /** * Stop listening for results to a given circuit test diff --git a/node/Node.cpp b/node/Node.cpp index d5ca147c5..7f469b970 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -779,7 +779,7 @@ void ZT_Node_setNetconfMaster(ZT_Node *node,void *networkControllerInstance) } catch ( ... ) {} } -ZT_ResultCode ZT_Node_circuitTestBegin(ZT_Node *node,ZT_CircuitTest *test,void (*reportCallback)(ZT_Node *,ZT_CircuitTest *,const ZT_CircuitTestReport *)) +enum ZT_ResultCode ZT_Node_circuitTestBegin(ZT_Node *node,ZT_CircuitTest *test,void (*reportCallback)(ZT_Node *,ZT_CircuitTest *,const ZT_CircuitTestReport *)) { try { return reinterpret_cast(node)->circuitTestBegin(test,reportCallback); @@ -795,7 +795,7 @@ void ZT_Node_circuitTestEnd(ZT_Node *node,ZT_CircuitTest *test) } catch ( ... ) {} } -int ZT_Node_addLocalInterfaceAddress(ZT_Node *node,const struct sockaddr_storage *addr,int metric,ZT_LocalInterfaceAddressTrust trust) +int ZT_Node_addLocalInterfaceAddress(ZT_Node *node,const struct sockaddr_storage *addr,int metric, enum ZT_LocalInterfaceAddressTrust trust) { try { return reinterpret_cast(node)->addLocalInterfaceAddress(addr,metric,trust); From 273f0d18b0bc907d90e746f5836576150f4cde22 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Thu, 8 Oct 2015 09:05:25 -0700 Subject: [PATCH 040/314] docs --- node/Packet.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/node/Packet.hpp b/node/Packet.hpp index 1c7a6f5ee..4dfa73f0c 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -345,11 +345,11 @@ namespace ZeroTier { * ZeroTier packet * * Packet format: - * <[8] random initialization vector (doubles as 64-bit packet ID)> + * <[8] 64-bit random packet ID and crypto initialization vector> * <[5] destination ZT address> * <[5] source ZT address> * <[1] flags/cipher (top 5 bits) and ZT hop count (last 3 bits)> - * <[8] 8-bit MAC (currently first 8 bytes of poly1305 tag)> + * <[8] 64-bit MAC> * [... -- begin encryption envelope -- ...] * <[1] encrypted flags (top 3 bits) and verb (last 5 bits)> * [... verb-specific payload ...] From a3876353ca1cb07213c5e1c5208b531caeda5523 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Thu, 8 Oct 2015 13:25:38 -0700 Subject: [PATCH 041/314] Abiltiy to post a test via the controller web API, and parsing of CIRCUIT_TEST_REPORT messages. --- controller/SqliteNetworkController.cpp | 50 ++++++++++++++ controller/SqliteNetworkController.hpp | 8 +++ node/IncomingPacket.cpp | 94 +++++++++++++++----------- 3 files changed, 111 insertions(+), 41 deletions(-) diff --git a/controller/SqliteNetworkController.cpp b/controller/SqliteNetworkController.cpp index 334ccc750..861cdbcf0 100644 --- a/controller/SqliteNetworkController.cpp +++ b/controller/SqliteNetworkController.cpp @@ -505,6 +505,52 @@ unsigned int SqliteNetworkController::handleControlPlaneHttpPOST( } return _doCPGet(path,urlArgs,headers,body,responseBody,responseContentType); + } else if ((path.size() == 3)&&(path[2] == "test")) { + ZT_CircuitTest *test = (ZT_CircuitTest *)malloc(sizeof(ZT_CircuitTest)); + memset(test,0,sizeof(ZT_CircuitTest)); + + Utils::getSecureRandom(&(test->testId),sizeof(test->testId)); + test->credentialNetworkId = nwid; + test->ptr = (void *)this; + + json_value *j = json_parse(body.c_str(),body.length()); + if (j) { + if (j->type == json_object) { + for(unsigned int k=0;ku.object.length;++k) { + + if (!strcmp(j->u.object.values[k].name,"hops")) { + if (j->u.object.values[k].value->type == json_array) { + for(unsigned int kk=0;kku.object.values[k].value->u.array.length;++kk) { + json_value *hop = j->u.object.values[k].value->u.array.values[kk]; + if (hop->type == json_array) { + for(unsigned int kkk=0;kkku.array.length;++kkk) { + if (hop->u.array.values[kkk].type == json_string) { + test->hops[test->hopCount].addresses[test->hops[test->hopCount].breadth++] = Utils::hexStrToU64(hop->u.array.values[kkk].u.string.ptr) & 0xffffffffffULL; + } + } + ++test->hopCount; + } + } + } + } else if (!strcmp(j->u.object.values[k].name,"reportAtEveryHop")) { + if (j->u.object.values[k].value->type == json_boolean) + test->reportAtEveryHop = (j->u.object.values[k].value->u.boolean == 0) ? 0 : 1; + } + + } + } + json_value_free(j); + } + + if (!test->hopCount) { + ::free((void *)test); + return 500; + } + + test->timestamp = OSUtils::now(); + _node->circuitTestBegin(test,&(SqliteNetworkController::_circuitTestCallback)); + + return 200; } // else 404 } else { @@ -1819,4 +1865,8 @@ NetworkController::ResultCode SqliteNetworkController::_doNetworkConfigRequest(c return NetworkController::NETCONF_QUERY_OK; } +static void _circuitTestCallback(ZT_Node *node,ZT_CircuitTest *test,const ZT_CircuitTestReport *report) +{ +} + } // namespace ZeroTier diff --git a/controller/SqliteNetworkController.hpp b/controller/SqliteNetworkController.hpp index 68529e397..7a01487ce 100644 --- a/controller/SqliteNetworkController.hpp +++ b/controller/SqliteNetworkController.hpp @@ -43,6 +43,9 @@ // Number of in-memory last log entries to maintain per user #define ZT_SQLITENETWORKCONTROLLER_IN_MEMORY_LOG_SIZE 32 +// How long do circuit tests "live"? This is just to prevent buildup in memory. +#define ZT_SQLITENETWORKCONTROLLER_CIRCUIT_TEST_TIMEOUT 300000 + namespace ZeroTier { class Node; @@ -106,6 +109,8 @@ private: const Dictionary &metaData, Dictionary &netconf); + static void _circuitTestCallback(ZT_Node *node,ZT_CircuitTest *test,const ZT_CircuitTestReport *report); + Node *_node; std::string _dbPath; std::string _circuitTestPath; @@ -140,6 +145,9 @@ private: // Last log entries by address and network ID pair std::map< std::pair,_LLEntry > _lastLog; + // Circuit tests outstanding + std::map< uint64_t,ZT_CircuitTest * > _circuitTests; + sqlite3 *_db; sqlite3_stmt *_sGetNetworkById; diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 4dd308cdf..0aadc104f 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -175,10 +175,8 @@ bool IncomingPacket::_doERROR(const RuntimeEnvironment *RR,const SharedPtr } peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_ERROR,inRePacketId,inReVerb); - } catch (std::exception &ex) { - TRACE("dropped ERROR from %s(%s): unexpected exception: %s",peer->address().toString().c_str(),_remoteAddress.toString().c_str(),ex.what()); } catch ( ... ) { - TRACE("dropped ERROR from %s(%s): unexpected exception: (unknown)",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped ERROR from %s(%s): unexpected exception",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } @@ -291,8 +289,6 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) _remoteAddress.serialize(outp); outp.armor(peer->key(),true); RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); - } catch (std::exception &ex) { - TRACE("dropped HELLO from %s(%s): %s",source().toString().c_str(),_remoteAddress.toString().c_str(),ex.what()); } catch ( ... ) { TRACE("dropped HELLO from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } @@ -395,10 +391,8 @@ bool IncomingPacket::_doOK(const RuntimeEnvironment *RR,const SharedPtr &p } peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_OK,inRePacketId,inReVerb); - } catch (std::exception &ex) { - TRACE("dropped OK from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),ex.what()); } catch ( ... ) { - TRACE("dropped OK from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped OK from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } @@ -453,8 +447,6 @@ bool IncomingPacket::_doRENDEZVOUS(const RuntimeEnvironment *RR,const SharedPtr< } else { TRACE("ignored RENDEZVOUS from %s(%s) to meet unknown peer %s",peer->address().toString().c_str(),_remoteAddress.toString().c_str(),with.toString().c_str()); } - } catch (std::exception &ex) { - TRACE("dropped RENDEZVOUS from %s(%s): %s",peer->address().toString().c_str(),_remoteAddress.toString().c_str(),ex.what()); } catch ( ... ) { TRACE("dropped RENDEZVOUS from %s(%s): unexpected exception",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); } @@ -487,10 +479,8 @@ bool IncomingPacket::_doFRAME(const RuntimeEnvironment *RR,const SharedPtr } else { TRACE("dropped FRAME from %s(%s): we are not connected to network %.16llx",source().toString().c_str(),_remoteAddress.toString().c_str(),at(ZT_PROTO_VERB_FRAME_IDX_NETWORK_ID)); } - } catch (std::exception &ex) { - TRACE("dropped FRAME from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),ex.what()); } catch ( ... ) { - TRACE("dropped FRAME from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped FRAME from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } @@ -562,10 +552,8 @@ bool IncomingPacket::_doEXT_FRAME(const RuntimeEnvironment *RR,const SharedPtr

(ZT_PROTO_VERB_FRAME_IDX_NETWORK_ID)); } - } catch (std::exception &ex) { - TRACE("dropped EXT_FRAME from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),ex.what()); } catch ( ... ) { - TRACE("dropped EXT_FRAME from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped EXT_FRAME from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } @@ -580,7 +568,9 @@ bool IncomingPacket::_doECHO(const RuntimeEnvironment *RR,const SharedPtr outp.append(field(ZT_PACKET_IDX_PAYLOAD,size() - ZT_PACKET_IDX_PAYLOAD),size() - ZT_PACKET_IDX_PAYLOAD); RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); peer->received(RR,_localAddress,_remoteAddress,hops(),pid,Packet::VERB_ECHO,0,Packet::VERB_NOP); - } catch ( ... ) {} + } catch ( ... ) { + TRACE("dropped ECHO from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); + } return true; } @@ -594,10 +584,8 @@ bool IncomingPacket::_doMULTICAST_LIKE(const RuntimeEnvironment *RR,const Shared RR->mc->add(now,at(ptr),MulticastGroup(MAC(field(ptr + 8,6),6),at(ptr + 14)),peer->address()); peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_MULTICAST_LIKE,0,Packet::VERB_NOP); - } catch (std::exception &ex) { - TRACE("dropped MULTICAST_LIKE from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),ex.what()); } catch ( ... ) { - TRACE("dropped MULTICAST_LIKE from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped MULTICAST_LIKE from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } @@ -614,10 +602,8 @@ bool IncomingPacket::_doNETWORK_MEMBERSHIP_CERTIFICATE(const RuntimeEnvironment } peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_NETWORK_MEMBERSHIP_CERTIFICATE,0,Packet::VERB_NOP); - } catch (std::exception &ex) { - TRACE("dropped NETWORK_MEMBERSHIP_CERTIFICATE from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),ex.what()); } catch ( ... ) { - TRACE("dropped NETWORK_MEMBERSHIP_CERTIFICATE from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped NETWORK_MEMBERSHIP_CERTIFICATE from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } @@ -700,10 +686,8 @@ bool IncomingPacket::_doNETWORK_CONFIG_REQUEST(const RuntimeEnvironment *RR,cons outp.armor(peer->key(),true); RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); } - } catch (std::exception &exc) { - TRACE("dropped NETWORK_CONFIG_REQUEST from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),exc.what()); } catch ( ... ) { - TRACE("dropped NETWORK_CONFIG_REQUEST from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped NETWORK_CONFIG_REQUEST from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } @@ -720,10 +704,8 @@ bool IncomingPacket::_doNETWORK_CONFIG_REFRESH(const RuntimeEnvironment *RR,cons ptr += 8; } peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_NETWORK_CONFIG_REFRESH,0,Packet::VERB_NOP); - } catch (std::exception &exc) { - TRACE("dropped NETWORK_CONFIG_REFRESH from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),exc.what()); } catch ( ... ) { - TRACE("dropped NETWORK_CONFIG_REFRESH from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped NETWORK_CONFIG_REFRESH from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } @@ -751,10 +733,8 @@ bool IncomingPacket::_doMULTICAST_GATHER(const RuntimeEnvironment *RR,const Shar } peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_MULTICAST_GATHER,0,Packet::VERB_NOP); - } catch (std::exception &exc) { - TRACE("dropped MULTICAST_GATHER from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),exc.what()); } catch ( ... ) { - TRACE("dropped MULTICAST_GATHER from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped MULTICAST_GATHER from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } @@ -842,10 +822,8 @@ bool IncomingPacket::_doMULTICAST_FRAME(const RuntimeEnvironment *RR,const Share } // else ignore -- not a member of this network peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_MULTICAST_FRAME,0,Packet::VERB_NOP); - } catch (std::exception &exc) { - TRACE("dropped MULTICAST_FRAME from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),exc.what()); } catch ( ... ) { - TRACE("dropped MULTICAST_FRAME from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped MULTICAST_FRAME from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } @@ -885,10 +863,8 @@ bool IncomingPacket::_doPUSH_DIRECT_PATHS(const RuntimeEnvironment *RR,const Sha } peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_PUSH_DIRECT_PATHS,0,Packet::VERB_NOP); - } catch (std::exception &exc) { - TRACE("dropped PUSH_DIRECT_PATHS from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),exc.what()); } catch ( ... ) { - TRACE("dropped PUSH_DIRECT_PATHS from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped PUSH_DIRECT_PATHS from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } @@ -1051,16 +1027,52 @@ bool IncomingPacket::_doCIRCUIT_TEST(const RuntimeEnvironment *RR,const SharedPt } peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_CIRCUIT_TEST,0,Packet::VERB_NOP); - } catch (std::exception &exc) { - TRACE("dropped CIRCUIT_TEST from %s(%s): unexpected exception: %s",source().toString().c_str(),_remoteAddress.toString().c_str(),exc.what()); } catch ( ... ) { - TRACE("dropped CIRCUIT_TEST from %s(%s): unexpected exception: (unknown)",source().toString().c_str(),_remoteAddress.toString().c_str()); + TRACE("dropped CIRCUIT_TEST from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } return true; } bool IncomingPacket::_doCIRCUIT_TEST_REPORT(const RuntimeEnvironment *RR,const SharedPtr &peer) { + try { + ZT_CircuitTestReport report; + memset(&report,0,sizeof(report)); + + report.address = peer->address().toInt(); + report.testId = at(ZT_PACKET_IDX_PAYLOAD + 8); + report.timestamp = at(ZT_PACKET_IDX_PAYLOAD); + report.remoteTimestamp = at(ZT_PACKET_IDX_PAYLOAD + 16); + report.sourcePacketId = at(ZT_PACKET_IDX_PAYLOAD + 44); + report.flags = at(ZT_PACKET_IDX_PAYLOAD + 36); + report.sourcePacketHopCount = (*this)[ZT_PACKET_IDX_PAYLOAD + 52]; + report.errorCode = at(ZT_PACKET_IDX_PAYLOAD + 34); + report.vendor = (enum ZT_Vendor)((*this)[ZT_PACKET_IDX_PAYLOAD + 24]); + report.protocolVersion = (*this)[ZT_PACKET_IDX_PAYLOAD + 25]; + report.majorVersion = (*this)[ZT_PACKET_IDX_PAYLOAD + 26]; + report.minorVersion = (*this)[ZT_PACKET_IDX_PAYLOAD + 27]; + report.revision = at(ZT_PACKET_IDX_PAYLOAD + 28); + report.platform = (enum ZT_Platform)at(ZT_PACKET_IDX_PAYLOAD + 30); + report.architecture = (enum ZT_Architecture)at(ZT_PACKET_IDX_PAYLOAD + 32); + + const unsigned int receivedOnLocalAddressLen = reinterpret_cast(&(report.receivedOnLocalAddress))->deserialize(*this,ZT_PACKET_IDX_PAYLOAD + 53); + const unsigned int receivedFromRemoteAddressLen = reinterpret_cast(&(report.receivedFromRemoteAddress))->deserialize(*this,ZT_PACKET_IDX_PAYLOAD + 53 + receivedOnLocalAddressLen); + + unsigned int nhptr = ZT_PACKET_IDX_PAYLOAD + 53 + receivedOnLocalAddressLen + receivedFromRemoteAddressLen; + nhptr += at(nhptr) + 2; // add "additional field" length, which right now will be zero + + report.nextHopCount = (*this)[nhptr++]; + if (report.nextHopCount > ZT_CIRCUIT_TEST_MAX_HOP_BREADTH) // sanity check, shouldn't be possible + report.nextHopCount = ZT_CIRCUIT_TEST_MAX_HOP_BREADTH; + for(unsigned int h=0;h(nhptr); nhptr += 8; + nhptr += reinterpret_cast(&(report.nextHops[h].physicalAddress))->deserialize(*this,nhptr); + } + + RR->node->postCircuitTestReport(&report); + } catch ( ... ) { + TRACE("dropped CIRCUIT_TEST_REPORT from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); + } return true; } From 59da8b2a4b3e36605886944f3fa111870bbb8a2c Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Thu, 8 Oct 2015 15:44:06 -0700 Subject: [PATCH 042/314] Logging of circuit test results to disk. --- controller/SqliteNetworkController.cpp | 72 ++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 3 deletions(-) diff --git a/controller/SqliteNetworkController.cpp b/controller/SqliteNetworkController.cpp index 861cdbcf0..13a0cadd4 100644 --- a/controller/SqliteNetworkController.cpp +++ b/controller/SqliteNetworkController.cpp @@ -524,8 +524,8 @@ unsigned int SqliteNetworkController::handleControlPlaneHttpPOST( json_value *hop = j->u.object.values[k].value->u.array.values[kk]; if (hop->type == json_array) { for(unsigned int kkk=0;kkku.array.length;++kkk) { - if (hop->u.array.values[kkk].type == json_string) { - test->hops[test->hopCount].addresses[test->hops[test->hopCount].breadth++] = Utils::hexStrToU64(hop->u.array.values[kkk].u.string.ptr) & 0xffffffffffULL; + if (hop->u.array.values[kkk]->type == json_string) { + test->hops[test->hopCount].addresses[test->hops[test->hopCount].breadth++] = Utils::hexStrToU64(hop->u.array.values[kkk]->u.string.ptr) & 0xffffffffffULL; } } ++test->hopCount; @@ -548,6 +548,7 @@ unsigned int SqliteNetworkController::handleControlPlaneHttpPOST( } test->timestamp = OSUtils::now(); + _circuitTests[test->testId] = test; _node->circuitTestBegin(test,&(SqliteNetworkController::_circuitTestCallback)); return 200; @@ -1865,8 +1866,73 @@ NetworkController::ResultCode SqliteNetworkController::_doNetworkConfigRequest(c return NetworkController::NETCONF_QUERY_OK; } -static void _circuitTestCallback(ZT_Node *node,ZT_CircuitTest *test,const ZT_CircuitTestReport *report) +void SqliteNetworkController::_circuitTestCallback(ZT_Node *node,ZT_CircuitTest *test,const ZT_CircuitTestReport *report) { + static Mutex circuitTestWriteLock; + + const uint64_t now = OSUtils::now(); + + SqliteNetworkController *const c = reinterpret_cast(test->ptr); + char tmp[128]; + + std::string reportSavePath(c->_circuitTestPath); + OSUtils::mkdir(reportSavePath); + Utils::snprintf(tmp,sizeof(tmp),ZT_PATH_SEPARATOR_S"%.16llx",test->credentialNetworkId); + reportSavePath.append(tmp); + OSUtils::mkdir(reportSavePath); + Utils::snprintf(tmp,sizeof(tmp),ZT_PATH_SEPARATOR_S"%.16llx_%.16llx",test->timestamp,test->testId); + reportSavePath.append(tmp); + OSUtils::mkdir(reportSavePath); + Utils::snprintf(tmp,sizeof(tmp),ZT_PATH_SEPARATOR_S"%.10llx",report->address); + reportSavePath.append(tmp); + + { + Mutex::Lock _l(circuitTestWriteLock); + FILE *f = fopen(reportSavePath.c_str(),"a"); + if (!f) + return; + fseek(f,0,SEEK_END); + fprintf(f,"%s{\n" + "\t\"address\": \"%.10llx\","ZT_EOL_S + "\t\"testId\": \"%.16llx\","ZT_EOL_S + "\t\"timestamp\": %llu,"ZT_EOL_S + "\t\"receivedTimestamp\": %llu,"ZT_EOL_S + "\t\"remoteTimestamp\": %llu,"ZT_EOL_S + "\t\"sourcePacketId\": \"%.16llx\","ZT_EOL_S + "\t\"flags\": %llu,"ZT_EOL_S + "\t\"sourcePacketHopCount\": %u,"ZT_EOL_S + "\t\"errorCode\": %u,"ZT_EOL_S + "\t\"vendor\": %d,"ZT_EOL_S + "\t\"protocolVersion\": %u,"ZT_EOL_S + "\t\"majorVersion\": %u,"ZT_EOL_S + "\t\"minorVersion\": %u,"ZT_EOL_S + "\t\"revision\": %u,"ZT_EOL_S + "\t\"platform\": %d,"ZT_EOL_S + "\t\"architecture\": %d,"ZT_EOL_S + "\t\"receivedOnLocalAddress\": \"%s\","ZT_EOL_S + "\t\"receivedFromRemoteAddress\": \"%s\""ZT_EOL_S + "}", + ((ftell(f) > 0) ? ",\n" : ""), + report->address, + test->testId, + report->timestamp, + now, + report->remoteTimestamp, + report->sourcePacketId, + report->flags, + report->sourcePacketHopCount, + report->errorCode, + (int)report->vendor, + report->protocolVersion, + report->majorVersion, + report->minorVersion, + report->revision, + (int)report->platform, + (int)report->architecture, + reinterpret_cast(&(report->receivedOnLocalAddress))->toString().c_str(), + reinterpret_cast(&(report->receivedFromRemoteAddress))->toString().c_str()); + fclose(f); + } } } // namespace ZeroTier From 160278c489b8ec2f11235f839836f0f014990fda Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Thu, 8 Oct 2015 17:42:53 -0700 Subject: [PATCH 043/314] Little bit of reorg in Salsa20 which seems to speed things up very slightly. --- node/Salsa20.cpp | 75 +++++++++++++++++------------------------------- 1 file changed, 26 insertions(+), 49 deletions(-) diff --git a/node/Salsa20.cpp b/node/Salsa20.cpp index f8cf8591d..dec14faff 100644 --- a/node/Salsa20.cpp +++ b/node/Salsa20.cpp @@ -175,41 +175,34 @@ void Salsa20::encrypt(const void *in,void *out,unsigned int bytes) __m128i X1 = _mm_loadu_si128((const __m128i *)&(_state.v[1])); __m128i X2 = _mm_loadu_si128((const __m128i *)&(_state.v[2])); __m128i X3 = _mm_loadu_si128((const __m128i *)&(_state.v[3])); + __m128i T; __m128i X0s = X0; __m128i X1s = X1; __m128i X2s = X2; __m128i X3s = X3; for (i=0;i<_roundsDiv4;++i) { - __m128i T = _mm_add_epi32(X0, X3); - X1 = _mm_xor_si128(X1, _mm_slli_epi32(T, 7)); - X1 = _mm_xor_si128(X1, _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); T = _mm_add_epi32(X1, X0); - X2 = _mm_xor_si128(X2, _mm_slli_epi32(T, 9)); - X2 = _mm_xor_si128(X2, _mm_srli_epi32(T, 23)); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); T = _mm_add_epi32(X2, X1); - X3 = _mm_xor_si128(X3, _mm_slli_epi32(T, 13)); - X3 = _mm_xor_si128(X3, _mm_srli_epi32(T, 19)); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); T = _mm_add_epi32(X3, X2); - X0 = _mm_xor_si128(X0, _mm_slli_epi32(T, 18)); - X0 = _mm_xor_si128(X0, _mm_srli_epi32(T, 14)); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); X1 = _mm_shuffle_epi32(X1, 0x93); X2 = _mm_shuffle_epi32(X2, 0x4E); X3 = _mm_shuffle_epi32(X3, 0x39); T = _mm_add_epi32(X0, X1); - X3 = _mm_xor_si128(X3, _mm_slli_epi32(T, 7)); - X3 = _mm_xor_si128(X3, _mm_srli_epi32(T, 25)); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); T = _mm_add_epi32(X3, X0); - X2 = _mm_xor_si128(X2, _mm_slli_epi32(T, 9)); - X2 = _mm_xor_si128(X2, _mm_srli_epi32(T, 23)); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); T = _mm_add_epi32(X2, X3); - X1 = _mm_xor_si128(X1, _mm_slli_epi32(T, 13)); - X1 = _mm_xor_si128(X1, _mm_srli_epi32(T, 19)); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); T = _mm_add_epi32(X1, X2); - X0 = _mm_xor_si128(X0, _mm_slli_epi32(T, 18)); - X0 = _mm_xor_si128(X0, _mm_srli_epi32(T, 14)); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); X1 = _mm_shuffle_epi32(X1, 0x39); X2 = _mm_shuffle_epi32(X2, 0x4E); @@ -218,34 +211,26 @@ void Salsa20::encrypt(const void *in,void *out,unsigned int bytes) // -- T = _mm_add_epi32(X0, X3); - X1 = _mm_xor_si128(X1, _mm_slli_epi32(T, 7)); - X1 = _mm_xor_si128(X1, _mm_srli_epi32(T, 25)); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); T = _mm_add_epi32(X1, X0); - X2 = _mm_xor_si128(X2, _mm_slli_epi32(T, 9)); - X2 = _mm_xor_si128(X2, _mm_srli_epi32(T, 23)); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); T = _mm_add_epi32(X2, X1); - X3 = _mm_xor_si128(X3, _mm_slli_epi32(T, 13)); - X3 = _mm_xor_si128(X3, _mm_srli_epi32(T, 19)); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); T = _mm_add_epi32(X3, X2); - X0 = _mm_xor_si128(X0, _mm_slli_epi32(T, 18)); - X0 = _mm_xor_si128(X0, _mm_srli_epi32(T, 14)); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); X1 = _mm_shuffle_epi32(X1, 0x93); X2 = _mm_shuffle_epi32(X2, 0x4E); X3 = _mm_shuffle_epi32(X3, 0x39); T = _mm_add_epi32(X0, X1); - X3 = _mm_xor_si128(X3, _mm_slli_epi32(T, 7)); - X3 = _mm_xor_si128(X3, _mm_srli_epi32(T, 25)); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); T = _mm_add_epi32(X3, X0); - X2 = _mm_xor_si128(X2, _mm_slli_epi32(T, 9)); - X2 = _mm_xor_si128(X2, _mm_srli_epi32(T, 23)); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); T = _mm_add_epi32(X2, X3); - X1 = _mm_xor_si128(X1, _mm_slli_epi32(T, 13)); - X1 = _mm_xor_si128(X1, _mm_srli_epi32(T, 19)); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); T = _mm_add_epi32(X1, X2); - X0 = _mm_xor_si128(X0, _mm_slli_epi32(T, 18)); - X0 = _mm_xor_si128(X0, _mm_srli_epi32(T, 14)); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); X1 = _mm_shuffle_epi32(X1, 0x39); X2 = _mm_shuffle_epi32(X2, 0x4E); @@ -257,22 +242,14 @@ void Salsa20::encrypt(const void *in,void *out,unsigned int bytes) X2 = _mm_add_epi32(X2s,X2); X3 = _mm_add_epi32(X3s,X3); - { - __m128i k02 = _mm_or_si128(_mm_slli_epi64(X0, 32), _mm_srli_epi64(X3, 32)); - k02 = _mm_shuffle_epi32(k02, _MM_SHUFFLE(0, 1, 2, 3)); - __m128i k13 = _mm_or_si128(_mm_slli_epi64(X1, 32), _mm_srli_epi64(X0, 32)); - k13 = _mm_shuffle_epi32(k13, _MM_SHUFFLE(0, 1, 2, 3)); - __m128i k20 = _mm_or_si128(_mm_and_si128(X2, _S20SSECONSTANTS.maskLo32), _mm_and_si128(X1, _S20SSECONSTANTS.maskHi32)); - __m128i k31 = _mm_or_si128(_mm_and_si128(X3, _S20SSECONSTANTS.maskLo32), _mm_and_si128(X2, _S20SSECONSTANTS.maskHi32)); - - const float *const mv = (const float *)m; - float *const cv = (float *)c; - - _mm_storeu_ps(cv,_mm_castsi128_ps(_mm_xor_si128(_mm_unpackhi_epi64(k02,k20),_mm_castps_si128(_mm_loadu_ps(mv))))); - _mm_storeu_ps(cv + 4,_mm_castsi128_ps(_mm_xor_si128(_mm_unpackhi_epi64(k13,k31),_mm_castps_si128(_mm_loadu_ps(mv + 4))))); - _mm_storeu_ps(cv + 8,_mm_castsi128_ps(_mm_xor_si128(_mm_unpacklo_epi64(k20,k02),_mm_castps_si128(_mm_loadu_ps(mv + 8))))); - _mm_storeu_ps(cv + 12,_mm_castsi128_ps(_mm_xor_si128(_mm_unpacklo_epi64(k31,k13),_mm_castps_si128(_mm_loadu_ps(mv + 12))))); - } + __m128i k02 = _mm_shuffle_epi32(_mm_or_si128(_mm_slli_epi64(X0, 32), _mm_srli_epi64(X3, 32)), _MM_SHUFFLE(0, 1, 2, 3)); + __m128i k13 = _mm_shuffle_epi32(_mm_or_si128(_mm_slli_epi64(X1, 32), _mm_srli_epi64(X0, 32)), _MM_SHUFFLE(0, 1, 2, 3)); + __m128i k20 = _mm_or_si128(_mm_and_si128(X2, _S20SSECONSTANTS.maskLo32), _mm_and_si128(X1, _S20SSECONSTANTS.maskHi32)); + __m128i k31 = _mm_or_si128(_mm_and_si128(X3, _S20SSECONSTANTS.maskLo32), _mm_and_si128(X2, _S20SSECONSTANTS.maskHi32)); + _mm_storeu_ps(reinterpret_cast(c),_mm_castsi128_ps(_mm_xor_si128(_mm_unpackhi_epi64(k02,k20),_mm_castps_si128(_mm_loadu_ps(reinterpret_cast(m)))))); + _mm_storeu_ps(reinterpret_cast(c) + 4,_mm_castsi128_ps(_mm_xor_si128(_mm_unpackhi_epi64(k13,k31),_mm_castps_si128(_mm_loadu_ps(reinterpret_cast(m) + 4))))); + _mm_storeu_ps(reinterpret_cast(c) + 8,_mm_castsi128_ps(_mm_xor_si128(_mm_unpacklo_epi64(k20,k02),_mm_castps_si128(_mm_loadu_ps(reinterpret_cast(m) + 8))))); + _mm_storeu_ps(reinterpret_cast(c) + 12,_mm_castsi128_ps(_mm_xor_si128(_mm_unpacklo_epi64(k31,k13),_mm_castps_si128(_mm_loadu_ps(reinterpret_cast(m) + 12))))); if (!(++_state.i[8])) { ++_state.i[5]; // state reordered for SSE From 3fa6dd377f479774ae2726f24748f41458329272 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 9 Oct 2015 08:51:57 -0700 Subject: [PATCH 044/314] docs --- node/Packet.hpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/node/Packet.hpp b/node/Packet.hpp index 4dfa73f0c..5c7253bf0 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -669,7 +669,8 @@ public: * This generates OK with a copy of the transmitted payload. No ERROR * is generated. Response to ECHO requests is optional. * - * Note that fragmented ECHO packets may not work. + * Support for fragmented echo packets is optional and their use is not + * recommended. */ VERB_ECHO = 8, @@ -680,8 +681,18 @@ public: * <[4] multicast additional distinguishing information (ADI)> * [... additional tuples of network/address/adi ...] * - * LIKEs are sent to peers with whom you have a direct peer to peer - * connection, and always including root servers. + * LIKEs may be sent to any peer, though a good implementation should + * restrict them to peers on the same network they're for and to network + * controllers and root servers. In the current network, root servers + * will provide the service of final multicast cache. + * + * It is recommended that NETWORK_MEMBERSHIP_CERTIFICATE pushes be sent + * along with MULTICAST_LIKE when pushing LIKEs to peers that do not + * share a network membership (such as root servers), since this can be + * used to authenticate GATHER requests and limit responses to peers + * authorized to talk on a network. (Should be an optional field here, + * but saving one or two packets every five minutes is not worth an + * ugly hack or protocol rev.) * * OK/ERROR are not generated. */ From 0c498556d5b11c101d2b18cf85cff2d53aa97d58 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 9 Oct 2015 09:39:27 -0700 Subject: [PATCH 045/314] Unroll Salsa20 fully for a little more speed (non-SSE now almost as fast as SSE) --- node/Identity.cpp | 9 +- node/IncomingPacket.cpp | 8 +- node/Node.cpp | 6 +- node/Packet.cpp | 12 +- node/Salsa20.cpp | 1192 +++++++++++++++++++++++++++++++++++---- node/Salsa20.hpp | 40 +- selftest.cpp | 42 +- 7 files changed, 1131 insertions(+), 178 deletions(-) diff --git a/node/Identity.cpp b/node/Identity.cpp index 8765da514..e5aaf13db 100644 --- a/node/Identity.cpp +++ b/node/Identity.cpp @@ -41,7 +41,6 @@ #define ZT_IDENTITY_GEN_HASHCASH_FIRST_BYTE_LESS_THAN 17 #define ZT_IDENTITY_GEN_MEMORY 2097152 -#define ZT_IDENTITY_GEN_SALSA20_ROUNDS 20 namespace ZeroTier { @@ -55,8 +54,8 @@ static inline void _computeMemoryHardHash(const void *publicKey,unsigned int pub // ordinary Salsa20 is randomly seekable. This is good for a cipher // but is not what we want for sequential memory-harndess. memset(genmem,0,ZT_IDENTITY_GEN_MEMORY); - Salsa20 s20(digest,256,(char *)digest + 32,ZT_IDENTITY_GEN_SALSA20_ROUNDS); - s20.encrypt((char *)genmem,(char *)genmem,64); + Salsa20 s20(digest,256,(char *)digest + 32); + s20.encrypt20((char *)genmem,(char *)genmem,64); for(unsigned long i=64;i(candidate)); SHA512::hash(shabuf,candidate,16 + challengeLength); - s20.init(shabuf,256,&s20iv,12); + s20.init(shabuf,256,&s20iv); memset(salsabuf,0,sizeof(salsabuf)); - s20.encrypt(salsabuf,salsabuf,sizeof(salsabuf)); + s20.encrypt12(salsabuf,salsabuf,sizeof(salsabuf)); SHA512::hash(shabuf,salsabuf,sizeof(salsabuf)); d = difficulty; @@ -1186,9 +1186,9 @@ bool IncomingPacket::testSalsa2012Sha512ProofOfWorkResult(unsigned int difficult memcpy(candidate + 16,challenge,challengeLength); SHA512::hash(shabuf,candidate,16 + challengeLength); - s20.init(shabuf,256,&s20iv,12); + s20.init(shabuf,256,&s20iv); memset(salsabuf,0,sizeof(salsabuf)); - s20.encrypt(salsabuf,salsabuf,sizeof(salsabuf)); + s20.encrypt12(salsabuf,salsabuf,sizeof(salsabuf)); SHA512::hash(shabuf,salsabuf,sizeof(salsabuf)); d = difficulty; diff --git a/node/Node.cpp b/node/Node.cpp index 7f469b970..84452146c 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -88,9 +88,9 @@ Node::Node( { char foo[32]; Utils::getSecureRandom(foo,32); - _prng.init(foo,256,foo,8); + _prng.init(foo,256,foo); memset(_prngStream,0,sizeof(_prngStream)); - _prng.encrypt(_prngStream,_prngStream,sizeof(_prngStream)); + _prng.encrypt12(_prngStream,_prngStream,sizeof(_prngStream)); } std::string idtmp(dataStoreGet("identity.secret")); @@ -574,7 +574,7 @@ uint64_t Node::prng() { unsigned int p = (++_prngStreamPtr % (sizeof(_prngStream) / sizeof(uint64_t))); if (!p) - _prng.encrypt(_prngStream,_prngStream,sizeof(_prngStream)); + _prng.encrypt12(_prngStream,_prngStream,sizeof(_prngStream)); return _prngStream[p]; } diff --git a/node/Packet.cpp b/node/Packet.cpp index 2fb7d4888..f11ae1b82 100644 --- a/node/Packet.cpp +++ b/node/Packet.cpp @@ -92,14 +92,14 @@ void Packet::armor(const void *key,bool encryptPayload) setCipher(encryptPayload ? ZT_PROTO_CIPHER_SUITE__C25519_POLY1305_SALSA2012 : ZT_PROTO_CIPHER_SUITE__C25519_POLY1305_NONE); _salsa20MangleKey((const unsigned char *)key,mangledKey); - Salsa20 s20(mangledKey,256,field(ZT_PACKET_IDX_IV,8),ZT_PROTO_SALSA20_ROUNDS); + Salsa20 s20(mangledKey,256,field(ZT_PACKET_IDX_IV,8)/*,ZT_PROTO_SALSA20_ROUNDS*/); // MAC key is always the first 32 bytes of the Salsa20 key stream // This is the same construction DJB's NaCl library uses - s20.encrypt(ZERO_KEY,macKey,sizeof(macKey)); + s20.encrypt12(ZERO_KEY,macKey,sizeof(macKey)); if (encryptPayload) - s20.encrypt(payload,payload,payloadLen); + s20.encrypt12(payload,payload,payloadLen); Poly1305::compute(mac,payload,payloadLen,macKey); memcpy(field(ZT_PACKET_IDX_MAC,8),mac,8); @@ -116,15 +116,15 @@ bool Packet::dearmor(const void *key) if ((cs == ZT_PROTO_CIPHER_SUITE__C25519_POLY1305_NONE)||(cs == ZT_PROTO_CIPHER_SUITE__C25519_POLY1305_SALSA2012)) { _salsa20MangleKey((const unsigned char *)key,mangledKey); - Salsa20 s20(mangledKey,256,field(ZT_PACKET_IDX_IV,8),ZT_PROTO_SALSA20_ROUNDS); + Salsa20 s20(mangledKey,256,field(ZT_PACKET_IDX_IV,8)/*,ZT_PROTO_SALSA20_ROUNDS*/); - s20.encrypt(ZERO_KEY,macKey,sizeof(macKey)); + s20.encrypt12(ZERO_KEY,macKey,sizeof(macKey)); Poly1305::compute(mac,payload,payloadLen,macKey); if (!Utils::secureEq(mac,field(ZT_PACKET_IDX_MAC,8),8)) return false; if (cs == ZT_PROTO_CIPHER_SUITE__C25519_POLY1305_SALSA2012) - s20.decrypt(payload,payload,payloadLen); + s20.decrypt12(payload,payload,payloadLen); return true; } else return false; // unrecognized cipher suite diff --git a/node/Salsa20.cpp b/node/Salsa20.cpp index dec14faff..3aa19ac62 100644 --- a/node/Salsa20.cpp +++ b/node/Salsa20.cpp @@ -66,7 +66,7 @@ static const _s20sseconsts _S20SSECONSTANTS; namespace ZeroTier { -void Salsa20::init(const void *key,unsigned int kbits,const void *iv,unsigned int rounds) +void Salsa20::init(const void *key,unsigned int kbits,const void *iv) throw() { #ifdef ZT_SALSA20_SSE @@ -121,11 +121,9 @@ void Salsa20::init(const void *key,unsigned int kbits,const void *iv,unsigned in _state.i[15] = U8TO32_LITTLE(constants + 12); _state.i[0] = U8TO32_LITTLE(constants + 0); #endif - - _roundsDiv4 = rounds / 4; } -void Salsa20::encrypt(const void *in,void *out,unsigned int bytes) +void Salsa20::encrypt12(const void *in,void *out,unsigned int bytes) throw() { uint8_t tmp[64]; @@ -181,61 +179,149 @@ void Salsa20::encrypt(const void *in,void *out,unsigned int bytes) __m128i X2s = X2; __m128i X3s = X3; - for (i=0;i<_roundsDiv4;++i) { - T = _mm_add_epi32(X0, X3); - X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); - T = _mm_add_epi32(X1, X0); - X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); - T = _mm_add_epi32(X2, X1); - X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); - T = _mm_add_epi32(X3, X2); - X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); - X1 = _mm_shuffle_epi32(X1, 0x93); - X2 = _mm_shuffle_epi32(X2, 0x4E); - X3 = _mm_shuffle_epi32(X3, 0x39); + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); - T = _mm_add_epi32(X0, X1); - X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); - T = _mm_add_epi32(X3, X0); - X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); - T = _mm_add_epi32(X2, X3); - X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); - T = _mm_add_epi32(X1, X2); - X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); - X1 = _mm_shuffle_epi32(X1, 0x39); - X2 = _mm_shuffle_epi32(X2, 0x4E); - X3 = _mm_shuffle_epi32(X3, 0x93); + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); - // -- + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); - T = _mm_add_epi32(X0, X3); - X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); - T = _mm_add_epi32(X1, X0); - X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); - T = _mm_add_epi32(X2, X1); - X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); - T = _mm_add_epi32(X3, X2); - X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); - - X1 = _mm_shuffle_epi32(X1, 0x93); - X2 = _mm_shuffle_epi32(X2, 0x4E); - X3 = _mm_shuffle_epi32(X3, 0x39); - - T = _mm_add_epi32(X0, X1); - X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); - T = _mm_add_epi32(X3, X0); - X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); - T = _mm_add_epi32(X2, X3); - X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); - T = _mm_add_epi32(X1, X2); - X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); - - X1 = _mm_shuffle_epi32(X1, 0x39); - X2 = _mm_shuffle_epi32(X2, 0x4E); - X3 = _mm_shuffle_epi32(X3, 0x93); - } + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); X0 = _mm_add_epi32(X0s,X0); X1 = _mm_add_epi32(X1s,X1); @@ -273,75 +359,941 @@ void Salsa20::encrypt(const void *in,void *out,unsigned int bytes) x14 = j14; x15 = j15; - for(i=0;i<_roundsDiv4;++i) { - x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); - x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); - x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); - x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); - x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); - x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); - x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); - x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); - x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); - x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); - x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); - x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); - x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); - x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); - x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); - x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); - x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); - x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); - x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); - x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); - x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); - x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); - x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); - x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); - x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); - x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); - x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); - x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); - x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); - x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); - x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); - x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); - // -- + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); - x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); - x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); - x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); - x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); - x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); - x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); - x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); - x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); - x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); - x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); - x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); - x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); - x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); - x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); - x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); - x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); - x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); - x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); - x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); - x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); - x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); - x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); - x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); - x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); - x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); - x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); - x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); - x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); - x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); - x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); - x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); - x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + x0 = PLUS(x0,j0); + x1 = PLUS(x1,j1); + x2 = PLUS(x2,j2); + x3 = PLUS(x3,j3); + x4 = PLUS(x4,j4); + x5 = PLUS(x5,j5); + x6 = PLUS(x6,j6); + x7 = PLUS(x7,j7); + x8 = PLUS(x8,j8); + x9 = PLUS(x9,j9); + x10 = PLUS(x10,j10); + x11 = PLUS(x11,j11); + x12 = PLUS(x12,j12); + x13 = PLUS(x13,j13); + x14 = PLUS(x14,j14); + x15 = PLUS(x15,j15); + + U32TO8_LITTLE(c + 0,XOR(x0,U8TO32_LITTLE(m + 0))); + U32TO8_LITTLE(c + 4,XOR(x1,U8TO32_LITTLE(m + 4))); + U32TO8_LITTLE(c + 8,XOR(x2,U8TO32_LITTLE(m + 8))); + U32TO8_LITTLE(c + 12,XOR(x3,U8TO32_LITTLE(m + 12))); + U32TO8_LITTLE(c + 16,XOR(x4,U8TO32_LITTLE(m + 16))); + U32TO8_LITTLE(c + 20,XOR(x5,U8TO32_LITTLE(m + 20))); + U32TO8_LITTLE(c + 24,XOR(x6,U8TO32_LITTLE(m + 24))); + U32TO8_LITTLE(c + 28,XOR(x7,U8TO32_LITTLE(m + 28))); + U32TO8_LITTLE(c + 32,XOR(x8,U8TO32_LITTLE(m + 32))); + U32TO8_LITTLE(c + 36,XOR(x9,U8TO32_LITTLE(m + 36))); + U32TO8_LITTLE(c + 40,XOR(x10,U8TO32_LITTLE(m + 40))); + U32TO8_LITTLE(c + 44,XOR(x11,U8TO32_LITTLE(m + 44))); + U32TO8_LITTLE(c + 48,XOR(x12,U8TO32_LITTLE(m + 48))); + U32TO8_LITTLE(c + 52,XOR(x13,U8TO32_LITTLE(m + 52))); + U32TO8_LITTLE(c + 56,XOR(x14,U8TO32_LITTLE(m + 56))); + U32TO8_LITTLE(c + 60,XOR(x15,U8TO32_LITTLE(m + 60))); + + if (!(++j8)) { + ++j9; + /* stopping at 2^70 bytes per nonce is user's responsibility */ } +#endif + + if (bytes <= 64) { + if (bytes < 64) { + for (i = 0;i < bytes;++i) + ctarget[i] = c[i]; + } + +#ifndef ZT_SALSA20_SSE + _state.i[8] = j8; + _state.i[9] = j9; +#endif + + return; + } + + bytes -= 64; + c += 64; + m += 64; + } +} + +void Salsa20::encrypt20(const void *in,void *out,unsigned int bytes) + throw() +{ + uint8_t tmp[64]; + const uint8_t *m = (const uint8_t *)in; + uint8_t *c = (uint8_t *)out; + uint8_t *ctarget = c; + unsigned int i; + +#ifndef ZT_SALSA20_SSE + uint32_t x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15; + uint32_t j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, j15; +#endif + + if (!bytes) + return; + +#ifndef ZT_SALSA20_SSE + j0 = _state.i[0]; + j1 = _state.i[1]; + j2 = _state.i[2]; + j3 = _state.i[3]; + j4 = _state.i[4]; + j5 = _state.i[5]; + j6 = _state.i[6]; + j7 = _state.i[7]; + j8 = _state.i[8]; + j9 = _state.i[9]; + j10 = _state.i[10]; + j11 = _state.i[11]; + j12 = _state.i[12]; + j13 = _state.i[13]; + j14 = _state.i[14]; + j15 = _state.i[15]; +#endif + + for (;;) { + if (bytes < 64) { + for (i = 0;i < bytes;++i) + tmp[i] = m[i]; + m = tmp; + ctarget = c; + c = tmp; + } + +#ifdef ZT_SALSA20_SSE + __m128i X0 = _mm_loadu_si128((const __m128i *)&(_state.v[0])); + __m128i X1 = _mm_loadu_si128((const __m128i *)&(_state.v[1])); + __m128i X2 = _mm_loadu_si128((const __m128i *)&(_state.v[2])); + __m128i X3 = _mm_loadu_si128((const __m128i *)&(_state.v[3])); + __m128i T; + __m128i X0s = X0; + __m128i X1s = X1; + __m128i X2s = X2; + __m128i X3s = X3; + + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); + + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); + + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); + + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); + + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); + + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); + + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); + + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); + + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); + + // 2X round ------------------------------------------------------------- + T = _mm_add_epi32(X0, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X1, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X3, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x93); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x39); + T = _mm_add_epi32(X0, X1); + X3 = _mm_xor_si128(_mm_xor_si128(X3, _mm_slli_epi32(T, 7)), _mm_srli_epi32(T, 25)); + T = _mm_add_epi32(X3, X0); + X2 = _mm_xor_si128(_mm_xor_si128(X2, _mm_slli_epi32(T, 9)), _mm_srli_epi32(T, 23)); + T = _mm_add_epi32(X2, X3); + X1 = _mm_xor_si128(_mm_xor_si128(X1, _mm_slli_epi32(T, 13)), _mm_srli_epi32(T, 19)); + T = _mm_add_epi32(X1, X2); + X0 = _mm_xor_si128(_mm_xor_si128(X0, _mm_slli_epi32(T, 18)), _mm_srli_epi32(T, 14)); + X1 = _mm_shuffle_epi32(X1, 0x39); + X2 = _mm_shuffle_epi32(X2, 0x4E); + X3 = _mm_shuffle_epi32(X3, 0x93); + + X0 = _mm_add_epi32(X0s,X0); + X1 = _mm_add_epi32(X1s,X1); + X2 = _mm_add_epi32(X2s,X2); + X3 = _mm_add_epi32(X3s,X3); + + __m128i k02 = _mm_shuffle_epi32(_mm_or_si128(_mm_slli_epi64(X0, 32), _mm_srli_epi64(X3, 32)), _MM_SHUFFLE(0, 1, 2, 3)); + __m128i k13 = _mm_shuffle_epi32(_mm_or_si128(_mm_slli_epi64(X1, 32), _mm_srli_epi64(X0, 32)), _MM_SHUFFLE(0, 1, 2, 3)); + __m128i k20 = _mm_or_si128(_mm_and_si128(X2, _S20SSECONSTANTS.maskLo32), _mm_and_si128(X1, _S20SSECONSTANTS.maskHi32)); + __m128i k31 = _mm_or_si128(_mm_and_si128(X3, _S20SSECONSTANTS.maskLo32), _mm_and_si128(X2, _S20SSECONSTANTS.maskHi32)); + _mm_storeu_ps(reinterpret_cast(c),_mm_castsi128_ps(_mm_xor_si128(_mm_unpackhi_epi64(k02,k20),_mm_castps_si128(_mm_loadu_ps(reinterpret_cast(m)))))); + _mm_storeu_ps(reinterpret_cast(c) + 4,_mm_castsi128_ps(_mm_xor_si128(_mm_unpackhi_epi64(k13,k31),_mm_castps_si128(_mm_loadu_ps(reinterpret_cast(m) + 4))))); + _mm_storeu_ps(reinterpret_cast(c) + 8,_mm_castsi128_ps(_mm_xor_si128(_mm_unpacklo_epi64(k20,k02),_mm_castps_si128(_mm_loadu_ps(reinterpret_cast(m) + 8))))); + _mm_storeu_ps(reinterpret_cast(c) + 12,_mm_castsi128_ps(_mm_xor_si128(_mm_unpacklo_epi64(k31,k13),_mm_castps_si128(_mm_loadu_ps(reinterpret_cast(m) + 12))))); + + if (!(++_state.i[8])) { + ++_state.i[5]; // state reordered for SSE + /* stopping at 2^70 bytes per nonce is user's responsibility */ + } +#else + x0 = j0; + x1 = j1; + x2 = j2; + x3 = j3; + x4 = j4; + x5 = j5; + x6 = j6; + x7 = j7; + x8 = j8; + x9 = j9; + x10 = j10; + x11 = j11; + x12 = j12; + x13 = j13; + x14 = j14; + x15 = j15; + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); + + // 2X round ------------------------------------------------------------- + x4 = XOR( x4,ROTATE(PLUS( x0,x12), 7)); + x8 = XOR( x8,ROTATE(PLUS( x4, x0), 9)); + x12 = XOR(x12,ROTATE(PLUS( x8, x4),13)); + x0 = XOR( x0,ROTATE(PLUS(x12, x8),18)); + x9 = XOR( x9,ROTATE(PLUS( x5, x1), 7)); + x13 = XOR(x13,ROTATE(PLUS( x9, x5), 9)); + x1 = XOR( x1,ROTATE(PLUS(x13, x9),13)); + x5 = XOR( x5,ROTATE(PLUS( x1,x13),18)); + x14 = XOR(x14,ROTATE(PLUS(x10, x6), 7)); + x2 = XOR( x2,ROTATE(PLUS(x14,x10), 9)); + x6 = XOR( x6,ROTATE(PLUS( x2,x14),13)); + x10 = XOR(x10,ROTATE(PLUS( x6, x2),18)); + x3 = XOR( x3,ROTATE(PLUS(x15,x11), 7)); + x7 = XOR( x7,ROTATE(PLUS( x3,x15), 9)); + x11 = XOR(x11,ROTATE(PLUS( x7, x3),13)); + x15 = XOR(x15,ROTATE(PLUS(x11, x7),18)); + x1 = XOR( x1,ROTATE(PLUS( x0, x3), 7)); + x2 = XOR( x2,ROTATE(PLUS( x1, x0), 9)); + x3 = XOR( x3,ROTATE(PLUS( x2, x1),13)); + x0 = XOR( x0,ROTATE(PLUS( x3, x2),18)); + x6 = XOR( x6,ROTATE(PLUS( x5, x4), 7)); + x7 = XOR( x7,ROTATE(PLUS( x6, x5), 9)); + x4 = XOR( x4,ROTATE(PLUS( x7, x6),13)); + x5 = XOR( x5,ROTATE(PLUS( x4, x7),18)); + x11 = XOR(x11,ROTATE(PLUS(x10, x9), 7)); + x8 = XOR( x8,ROTATE(PLUS(x11,x10), 9)); + x9 = XOR( x9,ROTATE(PLUS( x8,x11),13)); + x10 = XOR(x10,ROTATE(PLUS( x9, x8),18)); + x12 = XOR(x12,ROTATE(PLUS(x15,x14), 7)); + x13 = XOR(x13,ROTATE(PLUS(x12,x15), 9)); + x14 = XOR(x14,ROTATE(PLUS(x13,x12),13)); + x15 = XOR(x15,ROTATE(PLUS(x14,x13),18)); x0 = PLUS(x0,j0); x1 = PLUS(x1,j1); diff --git a/node/Salsa20.hpp b/node/Salsa20.hpp index 84baf3da7..a2082bead 100644 --- a/node/Salsa20.hpp +++ b/node/Salsa20.hpp @@ -35,12 +35,11 @@ public: * @param key Key bits * @param kbits Number of key bits: 128 or 256 (recommended) * @param iv 64-bit initialization vector - * @param rounds Number of rounds: 8, 12, or 20 */ - Salsa20(const void *key,unsigned int kbits,const void *iv,unsigned int rounds) + Salsa20(const void *key,unsigned int kbits,const void *iv) throw() { - init(key,kbits,iv,rounds); + init(key,kbits,iv); } /** @@ -49,19 +48,28 @@ public: * @param key Key bits * @param kbits Number of key bits: 128 or 256 (recommended) * @param iv 64-bit initialization vector - * @param rounds Number of rounds: 8, 12, or 20 */ - void init(const void *key,unsigned int kbits,const void *iv,unsigned int rounds) + void init(const void *key,unsigned int kbits,const void *iv) throw(); /** - * Encrypt data + * Encrypt data using Salsa20/12 * * @param in Input data * @param out Output buffer * @param bytes Length of data */ - void encrypt(const void *in,void *out,unsigned int bytes) + void encrypt12(const void *in,void *out,unsigned int bytes) + throw(); + + /** + * Encrypt data using Salsa20/20 + * + * @param in Input data + * @param out Output buffer + * @param bytes Length of data + */ + void encrypt20(const void *in,void *out,unsigned int bytes) throw(); /** @@ -71,10 +79,23 @@ public: * @param out Output buffer * @param bytes Length of data */ - inline void decrypt(const void *in,void *out,unsigned int bytes) + inline void decrypt12(const void *in,void *out,unsigned int bytes) throw() { - encrypt(in,out,bytes); + encrypt12(in,out,bytes); + } + + /** + * Decrypt data + * + * @param in Input data + * @param out Output buffer + * @param bytes Length of data + */ + inline void decrypt20(const void *in,void *out,unsigned int bytes) + throw() + { + encrypt20(in,out,bytes); } private: @@ -84,7 +105,6 @@ private: #endif // ZT_SALSA20_SSE uint32_t i[16]; } _state; - unsigned int _roundsDiv4; }; } // namespace ZeroTier diff --git a/selftest.cpp b/selftest.cpp index 090839eed..4ba76c0b7 100644 --- a/selftest.cpp +++ b/selftest.cpp @@ -162,27 +162,27 @@ static int testCrypto() memset(buf2,0,sizeof(buf2)); memset(buf3,0,sizeof(buf3)); Salsa20 s20; - s20.init("12345678123456781234567812345678",256,"12345678",20); - s20.encrypt(buf1,buf2,sizeof(buf1)); - s20.init("12345678123456781234567812345678",256,"12345678",20); - s20.decrypt(buf2,buf3,sizeof(buf2)); + s20.init("12345678123456781234567812345678",256,"12345678"); + s20.encrypt20(buf1,buf2,sizeof(buf1)); + s20.init("12345678123456781234567812345678",256,"12345678"); + s20.decrypt20(buf2,buf3,sizeof(buf2)); if (memcmp(buf1,buf3,sizeof(buf1))) { std::cout << "FAIL (encrypt/decrypt test)" << std::endl; return -1; } } - Salsa20 s20(s20TV0Key,256,s20TV0Iv,20); + Salsa20 s20(s20TV0Key,256,s20TV0Iv); memset(buf1,0,sizeof(buf1)); memset(buf2,0,sizeof(buf2)); - s20.encrypt(buf1,buf2,64); + s20.encrypt20(buf1,buf2,64); if (memcmp(buf2,s20TV0Ks,64)) { std::cout << "FAIL (test vector 0)" << std::endl; return -1; } - s20.init(s2012TV0Key,256,s2012TV0Iv,12); + s20.init(s2012TV0Key,256,s2012TV0Iv); memset(buf1,0,sizeof(buf1)); memset(buf2,0,sizeof(buf2)); - s20.encrypt(buf1,buf2,64); + s20.encrypt12(buf1,buf2,64); if (memcmp(buf2,s2012TV0Ks,64)) { std::cout << "FAIL (test vector 1)" << std::endl; return -1; @@ -195,34 +195,16 @@ static int testCrypto() std::cout << "[crypto] Salsa20 SSE: DISABLED" << std::endl; #endif - std::cout << "[crypto] Benchmarking Salsa20/8... "; std::cout.flush(); - { - unsigned char *bb = (unsigned char *)::malloc(1234567); - for(unsigned int i=0;i<1234567;++i) - bb[i] = (unsigned char)i; - Salsa20 s20(s20TV0Key,256,s20TV0Iv,8); - double bytes = 0.0; - uint64_t start = OSUtils::now(); - for(unsigned int i=0;i<200;++i) { - s20.encrypt(bb,bb,1234567); - bytes += 1234567.0; - } - uint64_t end = OSUtils::now(); - SHA512::hash(buf1,bb,1234567); - std::cout << ((bytes / 1048576.0) / ((double)(end - start) / 1000.0)) << " MiB/second (" << Utils::hex(buf1,16) << ')' << std::endl; - ::free((void *)bb); - } - std::cout << "[crypto] Benchmarking Salsa20/12... "; std::cout.flush(); { unsigned char *bb = (unsigned char *)::malloc(1234567); for(unsigned int i=0;i<1234567;++i) bb[i] = (unsigned char)i; - Salsa20 s20(s20TV0Key,256,s20TV0Iv,12); + Salsa20 s20(s20TV0Key,256,s20TV0Iv); double bytes = 0.0; uint64_t start = OSUtils::now(); for(unsigned int i=0;i<200;++i) { - s20.encrypt(bb,bb,1234567); + s20.encrypt12(bb,bb,1234567); bytes += 1234567.0; } uint64_t end = OSUtils::now(); @@ -236,11 +218,11 @@ static int testCrypto() unsigned char *bb = (unsigned char *)::malloc(1234567); for(unsigned int i=0;i<1234567;++i) bb[i] = (unsigned char)i; - Salsa20 s20(s20TV0Key,256,s20TV0Iv,20); + Salsa20 s20(s20TV0Key,256,s20TV0Iv); double bytes = 0.0; uint64_t start = OSUtils::now(); for(unsigned int i=0;i<200;++i) { - s20.encrypt(bb,bb,1234567); + s20.encrypt20(bb,bb,1234567); bytes += 1234567.0; } uint64_t end = OSUtils::now(); From c2bbec2f050da996f660f2ae28b365330ebff633 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 9 Oct 2015 10:14:20 -0700 Subject: [PATCH 046/314] Docker example (and useful for testing) --- .gitignore | 2 ++ examples/docker/Dockerfile | 19 +++++++++++++++++++ examples/docker/README.md | 8 ++++++++ examples/docker/main.sh | 25 +++++++++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 examples/docker/Dockerfile create mode 100644 examples/docker/README.md create mode 100644 examples/docker/main.sh diff --git a/.gitignore b/.gitignore index 498119e3c..b5d71690f 100755 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,8 @@ Thumbs.db # *nix/Mac build droppings /build-* /ZeroTierOneInstaller-* +/examples/docker/zerotier-one +/examples/docker/test-*.env # Miscellaneous file types that we don't want to check in *.log diff --git a/examples/docker/Dockerfile b/examples/docker/Dockerfile new file mode 100644 index 000000000..a42749240 --- /dev/null +++ b/examples/docker/Dockerfile @@ -0,0 +1,19 @@ +FROM centos:7 + +MAINTAINER https://www.zerotier.com/ + +RUN yum -y update && yum clean all + +EXPOSE 9993/udp + +RUN mkdir -p /var/lib/zerotier-one +RUN mkdir -p /var/lib/zerotier-one/networks.d +RUN ln -sf /var/lib/zerotier-one/zerotier-one /usr/local/bin/zerotier-cli +RUN ln -sf /var/lib/zerotier-one/zerotier-one /usr/local/bin/zerotier-idtool + +ADD zerotier-one /var/lib/zerotier-one/ + +ADD main.sh / +RUN chmod a+x /main.sh + +CMD ["./main.sh"] diff --git a/examples/docker/README.md b/examples/docker/README.md new file mode 100644 index 000000000..4dae52f35 --- /dev/null +++ b/examples/docker/README.md @@ -0,0 +1,8 @@ +Simple Dockerfile Example +====== + +This is a simple Docker example using ZeroTier One in normal tun/tap mode. It uses a Dockerfile to build an image containing ZeroTier One and a main.sh that launches it with an identity supplied via the Docker environment via the ZEROTIER\_IDENTITY\_SECRET and ZEROTIER\_NETWORK variables. The Dockerfile assumes that the zerotier-one binary is in the build folder. + +This is not a very secure way to load an identity secret, but it's useful for testing since it allows you to repeatedly launch Docker containers with the same identity. For production we'd recommend using something like Hashicorp Vault, or modifying main.sh to leave identities unspecified and allow the container to generate a new identity at runtime. Then you could script approval of containers using the controller API, approving them as they launch, etc. (We are working on better ways of doing mass provisioning.) + +To use in normal tun/tap mode with Docker, containers must be run with the options "--device=/dev/net/tun --cap-add=NET_ADMIN". The main.sh script supplied here will complain and exit if these options are not present (no /dev/net/tun device). diff --git a/examples/docker/main.sh b/examples/docker/main.sh new file mode 100644 index 000000000..e9febb139 --- /dev/null +++ b/examples/docker/main.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin + +if [ ! -c "/dev/net/tun" ]; then + echo 'FATAL: must be docker run with: --device=/dev/net/tun --cap-add=NET_ADMIN' + exit 1 +fi + +if [ -z "$ZEROTIER_IDENTITY_SECRET" ]; then + echo 'FATAL: ZEROTIER_IDENTITY_SECRET not set -- aborting!' + exit 1 +fi + +if [ -z "$ZEROTIER_NETWORK" ]; then + echo 'Warning: ZEROTIER_NETWORK not set, you will need to docker exec zerotier-cli to join a network.' +else + # The existence of a .conf will cause the service to "remember" this network + touch /var/lib/zerotier-one/networks.d/$ZEROTIER_NETWORK.conf +fi + +rm -f /var/lib/zerotier-one/identity.* +echo "$ZEROTIER_IDENTITY_SECRET" >identity.secret + +/var/lib/zerotier-one/zerotier-one From 9a2565115119f4c56bada376974ed77c6b2661c7 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 9 Oct 2015 10:14:45 -0700 Subject: [PATCH 047/314] . --- examples/docker/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/docker/README.md b/examples/docker/README.md index 4dae52f35..fbc93481c 100644 --- a/examples/docker/README.md +++ b/examples/docker/README.md @@ -5,4 +5,4 @@ This is a simple Docker example using ZeroTier One in normal tun/tap mode. It us This is not a very secure way to load an identity secret, but it's useful for testing since it allows you to repeatedly launch Docker containers with the same identity. For production we'd recommend using something like Hashicorp Vault, or modifying main.sh to leave identities unspecified and allow the container to generate a new identity at runtime. Then you could script approval of containers using the controller API, approving them as they launch, etc. (We are working on better ways of doing mass provisioning.) -To use in normal tun/tap mode with Docker, containers must be run with the options "--device=/dev/net/tun --cap-add=NET_ADMIN". The main.sh script supplied here will complain and exit if these options are not present (no /dev/net/tun device). +To use in normal tun/tap mode with Docker, containers must be run with the options "--device=/dev/net/tun --privileged". The main.sh script supplied here will complain and exit if these options are not present (no /dev/net/tun device). From e33adad8f5b1bb64cc4c5b318a8fb95077407419 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 9 Oct 2015 12:15:42 -0700 Subject: [PATCH 048/314] Script to quickly generate test docker env files. --- examples/docker/maketestenv.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100755 examples/docker/maketestenv.sh diff --git a/examples/docker/maketestenv.sh b/examples/docker/maketestenv.sh new file mode 100755 index 000000000..275692e15 --- /dev/null +++ b/examples/docker/maketestenv.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +if [ -z "$1" -o -z "$2" ]; then + echo 'Usage: maketestenv.sh ' + exit 1 +fi + +newid=`../../zerotier-idtool generate` + +echo "ZEROTIER_IDENTITY_SECRET=$newid" >$1 +echo "ZEROTIER_NETWORK=$2" >>$1 From 6b5bb0b27874b3005964deaca347289e583899f8 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 9 Oct 2015 12:22:13 -0700 Subject: [PATCH 049/314] Eliminate format string warnings. --- controller/SqliteNetworkController.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/controller/SqliteNetworkController.cpp b/controller/SqliteNetworkController.cpp index 13a0cadd4..40fafd794 100644 --- a/controller/SqliteNetworkController.cpp +++ b/controller/SqliteNetworkController.cpp @@ -1913,13 +1913,13 @@ void SqliteNetworkController::_circuitTestCallback(ZT_Node *node,ZT_CircuitTest "\t\"receivedFromRemoteAddress\": \"%s\""ZT_EOL_S "}", ((ftell(f) > 0) ? ",\n" : ""), - report->address, - test->testId, - report->timestamp, - now, - report->remoteTimestamp, - report->sourcePacketId, - report->flags, + (unsigned long long)report->address, + (unsigned long long)test->testId, + (unsigned long long)report->timestamp, + (unsigned long long)now, + (unsigned long long)report->remoteTimestamp, + (unsigned long long)report->sourcePacketId, + (unsigned long long)report->flags, report->sourcePacketHopCount, report->errorCode, (int)report->vendor, From 97dee9de36a69ed0aba4baf0cce03b9c4f11b30d Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 9 Oct 2015 12:50:52 -0700 Subject: [PATCH 050/314] Add more helpful example stuff. --- examples/api/README.md | 20 ++++++++++++++++++++ examples/api/public.json | 27 +++++++++++++++++++++++++++ examples/docker/Dockerfile | 2 +- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 examples/api/README.md create mode 100644 examples/api/public.json diff --git a/examples/api/README.md b/examples/api/README.md new file mode 100644 index 000000000..8b6d9633b --- /dev/null +++ b/examples/api/README.md @@ -0,0 +1,20 @@ +API Examples +====== + +This folder contains examples that can be posted with curl or another http query utility to a local instance. + +To test querying with curl: + + curl -H 'X-ZT1-Auth:AUTHTOKEN' http://127.0.0.1:9993/status + +To create a public network on a local controller (service must be built with "make ZT\_ENABLE\_NETWORK\_CONTROLLER=1"): + + curl -H 'X-ZT1-Auth:AUTHTOKEN' -X POST -d @public.json http://127.0.0.1:9993/controller/network/################ + +Replace AUTHTOKEN with the contents of this instance's authtoken.secret file and ################ with a valid network ID. Its first 10 hex digits must be the ZeroTier address of the controller itself, while the last 6 hex digits can be anything. Also be sure to change the port if you have this instance listening somewhere other than 9993. + +After POSTing you can double check the network config with: + + curl -H 'X-ZT1-Auth:AUTHTOKEN' http://127.0.0.1:9993/controller/network/################ + +Once this network is created (and if your controller is online, etc.) you can then join this network from any device anywhere in the world and it will receive a valid network configuration. diff --git a/examples/api/public.json b/examples/api/public.json new file mode 100644 index 000000000..4317bd3e2 --- /dev/null +++ b/examples/api/public.json @@ -0,0 +1,27 @@ +{ + "name": "public_test_network", + "private": false, + "enableBroadcast": true, + "allowPassiveBridging": false, + "v4AssignMode": "zt", + "v6AssignMode": "rfc4193", + "multicastLimit": 32, + "relays": [], + "gateways": [], + "ipLocalRoutes": ["10.66.0.0/16"], + "ipAssignmentPools": [{"ipRangeStart":"10.66.0.1","ipRangeEnd":"10.66.255.254"}], + "rules": [ + { + "ruleNo": 10, + "etherType": 2048, + "action": "accept" + },{ + "ruleNo": 20, + "etherType": 2054, + "action": "accept" + },{ + "ruleNo": 30, + "etherType": 34525, + "action": "accept" + }] +} diff --git a/examples/docker/Dockerfile b/examples/docker/Dockerfile index a42749240..f1ce6bb50 100644 --- a/examples/docker/Dockerfile +++ b/examples/docker/Dockerfile @@ -2,7 +2,7 @@ FROM centos:7 MAINTAINER https://www.zerotier.com/ -RUN yum -y update && yum clean all +RUN yum -y update && yum install -y sqlite net-tools && yum clean all EXPOSE 9993/udp From a95fa379cca0ddbce98d476b143c3606f3ae7bce Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 9 Oct 2015 14:51:38 -0700 Subject: [PATCH 051/314] Circuit tests basically work but need some tweaks, and fix some issues found with valgrind. --- controller/SqliteNetworkController.cpp | 2 - controller/SqliteNetworkController.hpp | 2 - examples/api/circuit-test-pingpong.json | 13 +++++ examples/docker/main.sh | 2 +- node/InetAddress.hpp | 72 +++++++++++++++---------- node/Node.cpp | 2 +- 6 files changed, 59 insertions(+), 34 deletions(-) create mode 100644 examples/api/circuit-test-pingpong.json diff --git a/controller/SqliteNetworkController.cpp b/controller/SqliteNetworkController.cpp index 40fafd794..d87e56240 100644 --- a/controller/SqliteNetworkController.cpp +++ b/controller/SqliteNetworkController.cpp @@ -258,8 +258,6 @@ SqliteNetworkController::~SqliteNetworkController() sqlite3_finalize(_sCreateMember); sqlite3_finalize(_sGetNodeIdentity); sqlite3_finalize(_sCreateOrReplaceNode); - sqlite3_finalize(_sUpdateNode); - sqlite3_finalize(_sUpdateNode2); sqlite3_finalize(_sGetEtherTypesFromRuleTable); sqlite3_finalize(_sGetActiveBridges); sqlite3_finalize(_sGetIpAssignmentsForNode); diff --git a/controller/SqliteNetworkController.hpp b/controller/SqliteNetworkController.hpp index 7a01487ce..a3d5dfc7b 100644 --- a/controller/SqliteNetworkController.hpp +++ b/controller/SqliteNetworkController.hpp @@ -155,8 +155,6 @@ private: sqlite3_stmt *_sCreateMember; sqlite3_stmt *_sGetNodeIdentity; sqlite3_stmt *_sCreateOrReplaceNode; - sqlite3_stmt *_sUpdateNode; - sqlite3_stmt *_sUpdateNode2; sqlite3_stmt *_sGetEtherTypesFromRuleTable; sqlite3_stmt *_sGetActiveBridges; sqlite3_stmt *_sGetIpAssignmentsForNode; diff --git a/examples/api/circuit-test-pingpong.json b/examples/api/circuit-test-pingpong.json new file mode 100644 index 000000000..8fcc5d944 --- /dev/null +++ b/examples/api/circuit-test-pingpong.json @@ -0,0 +1,13 @@ +{ + "hops": [ + [ "4cbc810d4c" ], + [ "868cd1664f" ], + [ "4cbc810d4c" ], + [ "868cd1664f" ], + [ "4cbc810d4c" ], + [ "868cd1664f" ], + [ "4cbc810d4c" ], + [ "868cd1664f" ] + ], + "reportAtEveryHop": true +} diff --git a/examples/docker/main.sh b/examples/docker/main.sh index e9febb139..53fb65408 100644 --- a/examples/docker/main.sh +++ b/examples/docker/main.sh @@ -20,6 +20,6 @@ else fi rm -f /var/lib/zerotier-one/identity.* -echo "$ZEROTIER_IDENTITY_SECRET" >identity.secret +echo "$ZEROTIER_IDENTITY_SECRET" >/var/lib/zerotier-one/identity.secret /var/lib/zerotier-one/zerotier-one diff --git a/node/InetAddress.hpp b/node/InetAddress.hpp index 6970e92d2..50db272ac 100644 --- a/node/InetAddress.hpp +++ b/node/InetAddress.hpp @@ -100,74 +100,88 @@ struct InetAddress : public sockaddr_storage inline InetAddress &operator=(const InetAddress &a) throw() { - memcpy(this,&a,sizeof(InetAddress)); + if (&a != this) + memcpy(this,&a,sizeof(InetAddress)); return *this; } inline InetAddress &operator=(const InetAddress *a) throw() { - memcpy(this,a,sizeof(InetAddress)); + if (a != this) + memcpy(this,a,sizeof(InetAddress)); return *this; } inline InetAddress &operator=(const struct sockaddr_storage &ss) throw() { - memcpy(this,&ss,sizeof(InetAddress)); + if (reinterpret_cast(&ss) != this) + memcpy(this,&ss,sizeof(InetAddress)); return *this; } inline InetAddress &operator=(const struct sockaddr_storage *ss) throw() { - memcpy(this,ss,sizeof(InetAddress)); + if (reinterpret_cast(ss) != this) + memcpy(this,ss,sizeof(InetAddress)); return *this; } inline InetAddress &operator=(const struct sockaddr_in &sa) throw() { - memset(this,0,sizeof(InetAddress)); - memcpy(this,&sa,sizeof(struct sockaddr_in)); + if (reinterpret_cast(&sa) != this) { + memset(this,0,sizeof(InetAddress)); + memcpy(this,&sa,sizeof(struct sockaddr_in)); + } return *this; } inline InetAddress &operator=(const struct sockaddr_in *sa) throw() { - memset(this,0,sizeof(InetAddress)); - memcpy(this,sa,sizeof(struct sockaddr_in)); + if (reinterpret_cast(sa) != this) { + memset(this,0,sizeof(InetAddress)); + memcpy(this,sa,sizeof(struct sockaddr_in)); + } return *this; } inline InetAddress &operator=(const struct sockaddr_in6 &sa) throw() { - memset(this,0,sizeof(InetAddress)); - memcpy(this,&sa,sizeof(struct sockaddr_in6)); + if (reinterpret_cast(&sa) != this) { + memset(this,0,sizeof(InetAddress)); + memcpy(this,&sa,sizeof(struct sockaddr_in6)); + } return *this; } inline InetAddress &operator=(const struct sockaddr_in6 *sa) throw() { - memset(this,0,sizeof(InetAddress)); - memcpy(this,sa,sizeof(struct sockaddr_in6)); + if (reinterpret_cast(sa) != this) { + memset(this,0,sizeof(InetAddress)); + memcpy(this,sa,sizeof(struct sockaddr_in6)); + } return *this; } inline InetAddress &operator=(const struct sockaddr &sa) throw() { - memset(this,0,sizeof(InetAddress)); - switch(sa.sa_family) { - case AF_INET: - memcpy(this,&sa,sizeof(struct sockaddr_in)); - break; - case AF_INET6: - memcpy(this,&sa,sizeof(struct sockaddr_in6)); - break; + if (reinterpret_cast(&sa) != this) { + memset(this,0,sizeof(InetAddress)); + switch(sa.sa_family) { + case AF_INET: + memcpy(this,&sa,sizeof(struct sockaddr_in)); + break; + case AF_INET6: + memcpy(this,&sa,sizeof(struct sockaddr_in6)); + break; + } } return *this; } @@ -175,14 +189,16 @@ struct InetAddress : public sockaddr_storage inline InetAddress &operator=(const struct sockaddr *sa) throw() { - memset(this,0,sizeof(InetAddress)); - switch(sa->sa_family) { - case AF_INET: - memcpy(this,sa,sizeof(struct sockaddr_in)); - break; - case AF_INET6: - memcpy(this,sa,sizeof(struct sockaddr_in6)); - break; + if (reinterpret_cast(sa) != this) { + memset(this,0,sizeof(InetAddress)); + switch(sa->sa_family) { + case AF_INET: + memcpy(this,sa,sizeof(struct sockaddr_in)); + break; + case AF_INET6: + memcpy(this,sa,sizeof(struct sockaddr_in6)); + break; + } } return *this; } diff --git a/node/Node.cpp b/node/Node.cpp index 84452146c..1eb219145 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -491,7 +491,7 @@ ZT_ResultCode Node::circuitTestBegin(ZT_CircuitTest *test,void (*reportCallback) for(unsigned int a=0;ahops[0].breadth;++a) { outp.newInitializationVector(); outp.setDestination(Address(test->hops[0].addresses[a])); - RR->sw->send(outp,true,test->credentialNetworkId); + RR->sw->send(outp,true,0); } } catch ( ... ) { return ZT_RESULT_FATAL_ERROR_INTERNAL; // probably indicates FIFO too big for packet From aec13b50fdbb210e25c9bcfcb8f902da842ac65f Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 9 Oct 2015 15:05:26 -0700 Subject: [PATCH 052/314] Be a bit more verbose in circuit test reports to more clearly track current and upstream hop in graph traversal history. --- controller/SqliteNetworkController.cpp | 8 +++++--- include/ZeroTierOne.h | 9 +++++++-- node/IncomingPacket.cpp | 12 +++++++----- node/Packet.hpp | 1 + 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/controller/SqliteNetworkController.cpp b/controller/SqliteNetworkController.cpp index d87e56240..08bd3a152 100644 --- a/controller/SqliteNetworkController.cpp +++ b/controller/SqliteNetworkController.cpp @@ -1881,7 +1881,7 @@ void SqliteNetworkController::_circuitTestCallback(ZT_Node *node,ZT_CircuitTest Utils::snprintf(tmp,sizeof(tmp),ZT_PATH_SEPARATOR_S"%.16llx_%.16llx",test->timestamp,test->testId); reportSavePath.append(tmp); OSUtils::mkdir(reportSavePath); - Utils::snprintf(tmp,sizeof(tmp),ZT_PATH_SEPARATOR_S"%.10llx",report->address); + Utils::snprintf(tmp,sizeof(tmp),ZT_PATH_SEPARATOR_S"%.10llx_%.10llx",report->upstream,report->current); reportSavePath.append(tmp); { @@ -1891,7 +1891,8 @@ void SqliteNetworkController::_circuitTestCallback(ZT_Node *node,ZT_CircuitTest return; fseek(f,0,SEEK_END); fprintf(f,"%s{\n" - "\t\"address\": \"%.10llx\","ZT_EOL_S + "\t\"current\": \"%.10llx\","ZT_EOL_S + "\t\"upstream\": \"%.10llx\","ZT_EOL_S "\t\"testId\": \"%.16llx\","ZT_EOL_S "\t\"timestamp\": %llu,"ZT_EOL_S "\t\"receivedTimestamp\": %llu,"ZT_EOL_S @@ -1911,7 +1912,8 @@ void SqliteNetworkController::_circuitTestCallback(ZT_Node *node,ZT_CircuitTest "\t\"receivedFromRemoteAddress\": \"%s\""ZT_EOL_S "}", ((ftell(f) > 0) ? ",\n" : ""), - (unsigned long long)report->address, + (unsigned long long)report->current, + (unsigned long long)report->upstream, (unsigned long long)test->testId, (unsigned long long)report->timestamp, (unsigned long long)now, diff --git a/include/ZeroTierOne.h b/include/ZeroTierOne.h index 175cedc50..80091f623 100644 --- a/include/ZeroTierOne.h +++ b/include/ZeroTierOne.h @@ -733,9 +733,14 @@ typedef struct { */ typedef struct { /** - * Sender of report + * Sender of report (current hop) */ - uint64_t address; + uint64_t current; + + /** + * Previous hop + */ + uint64_t upstream; /** * 64-bit test ID diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 5d31a5d47..443ffeeb9 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -993,6 +993,7 @@ bool IncomingPacket::_doCIRCUIT_TEST(const RuntimeEnvironment *RR,const SharedPt outp.append((uint16_t)0); // error code, currently unused outp.append((uint64_t)0); // flags, currently unused outp.append((uint64_t)packetId()); + peer->address().appendTo(outp); outp.append((uint8_t)hops()); _localAddress.serialize(outp); _remoteAddress.serialize(outp); @@ -1039,13 +1040,14 @@ bool IncomingPacket::_doCIRCUIT_TEST_REPORT(const RuntimeEnvironment *RR,const S ZT_CircuitTestReport report; memset(&report,0,sizeof(report)); - report.address = peer->address().toInt(); + report.current = peer->address().toInt(); + report.upstream = Address(field(ZT_PACKET_IDX_PAYLOAD + 52,ZT_ADDRESS_LENGTH),ZT_ADDRESS_LENGTH).toInt(); report.testId = at(ZT_PACKET_IDX_PAYLOAD + 8); report.timestamp = at(ZT_PACKET_IDX_PAYLOAD); report.remoteTimestamp = at(ZT_PACKET_IDX_PAYLOAD + 16); report.sourcePacketId = at(ZT_PACKET_IDX_PAYLOAD + 44); report.flags = at(ZT_PACKET_IDX_PAYLOAD + 36); - report.sourcePacketHopCount = (*this)[ZT_PACKET_IDX_PAYLOAD + 52]; + report.sourcePacketHopCount = (*this)[ZT_PACKET_IDX_PAYLOAD + 57]; // end of fixed length headers: 58 report.errorCode = at(ZT_PACKET_IDX_PAYLOAD + 34); report.vendor = (enum ZT_Vendor)((*this)[ZT_PACKET_IDX_PAYLOAD + 24]); report.protocolVersion = (*this)[ZT_PACKET_IDX_PAYLOAD + 25]; @@ -1055,10 +1057,10 @@ bool IncomingPacket::_doCIRCUIT_TEST_REPORT(const RuntimeEnvironment *RR,const S report.platform = (enum ZT_Platform)at(ZT_PACKET_IDX_PAYLOAD + 30); report.architecture = (enum ZT_Architecture)at(ZT_PACKET_IDX_PAYLOAD + 32); - const unsigned int receivedOnLocalAddressLen = reinterpret_cast(&(report.receivedOnLocalAddress))->deserialize(*this,ZT_PACKET_IDX_PAYLOAD + 53); - const unsigned int receivedFromRemoteAddressLen = reinterpret_cast(&(report.receivedFromRemoteAddress))->deserialize(*this,ZT_PACKET_IDX_PAYLOAD + 53 + receivedOnLocalAddressLen); + const unsigned int receivedOnLocalAddressLen = reinterpret_cast(&(report.receivedOnLocalAddress))->deserialize(*this,ZT_PACKET_IDX_PAYLOAD + 58); + const unsigned int receivedFromRemoteAddressLen = reinterpret_cast(&(report.receivedFromRemoteAddress))->deserialize(*this,ZT_PACKET_IDX_PAYLOAD + 58 + receivedOnLocalAddressLen); - unsigned int nhptr = ZT_PACKET_IDX_PAYLOAD + 53 + receivedOnLocalAddressLen + receivedFromRemoteAddressLen; + unsigned int nhptr = ZT_PACKET_IDX_PAYLOAD + 58 + receivedOnLocalAddressLen + receivedFromRemoteAddressLen; nhptr += at(nhptr) + 2; // add "additional field" length, which right now will be zero report.nextHopCount = (*this)[nhptr++]; diff --git a/node/Packet.hpp b/node/Packet.hpp index 5c7253bf0..6c178e666 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -1031,6 +1031,7 @@ public: * <[2] 16-bit error code (set to 0, currently unused)> * <[8] 64-bit report flags (set to 0, currently unused)> * <[8] 64-bit source packet ID> + * <[5] upstream ZeroTier address from which test was received> * <[1] 8-bit source packet hop count (ZeroTier hop count)> * <[...] local wire address on which packet was received> * <[...] remote wire address from which packet was received> From c9295a588389d5f8e017f2784a55166c46a641f4 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 9 Oct 2015 15:12:05 -0700 Subject: [PATCH 053/314] . --- examples/api/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/examples/api/README.md b/examples/api/README.md index 8b6d9633b..50b1b65e5 100644 --- a/examples/api/README.md +++ b/examples/api/README.md @@ -18,3 +18,9 @@ After POSTing you can double check the network config with: curl -H 'X-ZT1-Auth:AUTHTOKEN' http://127.0.0.1:9993/controller/network/################ Once this network is created (and if your controller is online, etc.) you can then join this network from any device anywhere in the world and it will receive a valid network configuration. + +--- + +**public.json**: A valid configuration for a public network that allows IPv4 and IPv6 traffic. + +**circuit-test-pingpong.json**: An example circuit test that can be posted to /controller/network/################/test to order a test -- you will have to edit this to insert the hops you want since the two hard coded device IDs are from our own test instances. From 7d01fab1326e3156b1327ead708457e5fefe8cdc Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 9 Oct 2015 15:18:01 -0700 Subject: [PATCH 054/314] Reorg fields to be in same order as FS scheme. --- controller/SqliteNetworkController.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/controller/SqliteNetworkController.cpp b/controller/SqliteNetworkController.cpp index 08bd3a152..be6145cf6 100644 --- a/controller/SqliteNetworkController.cpp +++ b/controller/SqliteNetworkController.cpp @@ -1891,10 +1891,10 @@ void SqliteNetworkController::_circuitTestCallback(ZT_Node *node,ZT_CircuitTest return; fseek(f,0,SEEK_END); fprintf(f,"%s{\n" - "\t\"current\": \"%.10llx\","ZT_EOL_S - "\t\"upstream\": \"%.10llx\","ZT_EOL_S - "\t\"testId\": \"%.16llx\","ZT_EOL_S "\t\"timestamp\": %llu,"ZT_EOL_S + "\t\"testId\": \"%.16llx\","ZT_EOL_S + "\t\"upstream\": \"%.10llx\","ZT_EOL_S + "\t\"current\": \"%.10llx\","ZT_EOL_S "\t\"receivedTimestamp\": %llu,"ZT_EOL_S "\t\"remoteTimestamp\": %llu,"ZT_EOL_S "\t\"sourcePacketId\": \"%.16llx\","ZT_EOL_S @@ -1912,10 +1912,10 @@ void SqliteNetworkController::_circuitTestCallback(ZT_Node *node,ZT_CircuitTest "\t\"receivedFromRemoteAddress\": \"%s\""ZT_EOL_S "}", ((ftell(f) > 0) ? ",\n" : ""), - (unsigned long long)report->current, - (unsigned long long)report->upstream, - (unsigned long long)test->testId, (unsigned long long)report->timestamp, + (unsigned long long)test->testId, + (unsigned long long)report->upstream, + (unsigned long long)report->current, (unsigned long long)now, (unsigned long long)report->remoteTimestamp, (unsigned long long)report->sourcePacketId, From eff1fe3c61aee8029337971545da5251f470ac53 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 9 Oct 2015 16:22:34 -0700 Subject: [PATCH 055/314] Create files for each hop (more convenient) and fix a packet parse bug. --- controller/SqliteNetworkController.cpp | 2 +- node/IncomingPacket.cpp | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/controller/SqliteNetworkController.cpp b/controller/SqliteNetworkController.cpp index be6145cf6..52b47665f 100644 --- a/controller/SqliteNetworkController.cpp +++ b/controller/SqliteNetworkController.cpp @@ -1881,7 +1881,7 @@ void SqliteNetworkController::_circuitTestCallback(ZT_Node *node,ZT_CircuitTest Utils::snprintf(tmp,sizeof(tmp),ZT_PATH_SEPARATOR_S"%.16llx_%.16llx",test->timestamp,test->testId); reportSavePath.append(tmp); OSUtils::mkdir(reportSavePath); - Utils::snprintf(tmp,sizeof(tmp),ZT_PATH_SEPARATOR_S"%.10llx_%.10llx",report->upstream,report->current); + Utils::snprintf(tmp,sizeof(tmp),ZT_PATH_SEPARATOR_S"%.16llx_%.10llx_%.10llx",now,report->upstream,report->current); reportSavePath.append(tmp); { diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 443ffeeb9..9f53a1c58 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -1021,9 +1021,11 @@ bool IncomingPacket::_doCIRCUIT_TEST(const RuntimeEnvironment *RR,const SharedPt outp.append(field(remainingHopsPtr,size() - remainingHopsPtr),size() - remainingHopsPtr); for(unsigned int h=0;hsw->send(outp,true,originatorCredentialNetworkId); + if (RR->identity.address() != nextHop[h]) { // next hops that loop back to the current hop are not valid + outp.newInitializationVector(); + outp.setDestination(nextHop[h]); + RR->sw->send(outp,true,originatorCredentialNetworkId); + } } } @@ -1067,7 +1069,7 @@ bool IncomingPacket::_doCIRCUIT_TEST_REPORT(const RuntimeEnvironment *RR,const S if (report.nextHopCount > ZT_CIRCUIT_TEST_MAX_HOP_BREADTH) // sanity check, shouldn't be possible report.nextHopCount = ZT_CIRCUIT_TEST_MAX_HOP_BREADTH; for(unsigned int h=0;h(nhptr); nhptr += 8; + report.nextHops[h].address = Address(field(nhptr,ZT_ADDRESS_LENGTH),ZT_ADDRESS_LENGTH).toInt(); nhptr += ZT_ADDRESS_LENGTH; nhptr += reinterpret_cast(&(report.nextHops[h].physicalAddress))->deserialize(*this,nhptr); } From 70fe7dd1fdfd9834e2127bd7fc4af4f53adaff36 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 12 Oct 2015 16:40:57 -0700 Subject: [PATCH 056/314] cleanup --- node/Identity.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/node/Identity.hpp b/node/Identity.hpp index 18e67eb60..19bb2e1fe 100644 --- a/node/Identity.hpp +++ b/node/Identity.hpp @@ -39,8 +39,6 @@ #include "C25519.hpp" #include "Buffer.hpp" -#define ZT_IDENTITY_MAX_BINARY_SERIALIZED_LENGTH (ZT_ADDRESS_LENGTH + 1 + ZT_C25519_PUBLIC_KEY_LEN + 1 + ZT_C25519_PRIVATE_KEY_LEN) - namespace ZeroTier { /** From 1b1945c63ee1ba9567b8fc5d5ed2b8946fec5f12 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 12 Oct 2015 18:25:29 -0700 Subject: [PATCH 057/314] Work in progress on refactoring root-topology into World and adding in-band updates. --- node/Defaults.cpp | 82 ------- node/Defaults.hpp | 74 ------ node/IncomingPacket.cpp | 6 +- node/Packet.hpp | 35 ++- node/Topology.cpp | 110 +++------ node/Topology.hpp | 55 ++--- node/World.hpp | 221 ++++++++++++++++++ objects.mk | 1 - root-topology/Makefile | 17 -- root-topology/README.md | 18 -- root-topology/ZT_DEFAULT_ROOT_TOPOLOGY.c | 90 ------- root-topology/ZT_DEFAULT_ROOT_TOPOLOGY.dict | 4 - root-topology/bin2c.c | 57 ----- root-topology/mktopology.cpp | 68 ------ root-topology/rootservers/7e19876aba | 4 - root-topology/rootservers/8841408a2e | 4 - root-topology/rootservers/8acf059fe3 | 4 - root-topology/rootservers/9d219039f3 | 4 - root-topology/test/README.md | 6 - .../test/create-test-root-topology.sh | 31 --- selftest.cpp | 1 - 21 files changed, 317 insertions(+), 575 deletions(-) delete mode 100644 node/Defaults.cpp delete mode 100644 node/Defaults.hpp create mode 100644 node/World.hpp delete mode 100644 root-topology/Makefile delete mode 100644 root-topology/README.md delete mode 100644 root-topology/ZT_DEFAULT_ROOT_TOPOLOGY.c delete mode 100644 root-topology/ZT_DEFAULT_ROOT_TOPOLOGY.dict delete mode 100644 root-topology/bin2c.c delete mode 100644 root-topology/mktopology.cpp delete mode 100644 root-topology/rootservers/7e19876aba delete mode 100644 root-topology/rootservers/8841408a2e delete mode 100644 root-topology/rootservers/8acf059fe3 delete mode 100644 root-topology/rootservers/9d219039f3 delete mode 100644 root-topology/test/README.md delete mode 100755 root-topology/test/create-test-root-topology.sh diff --git a/node/Defaults.cpp b/node/Defaults.cpp deleted file mode 100644 index b311fb6aa..000000000 --- a/node/Defaults.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* - * ZeroTier One - Network Virtualization Everywhere - * Copyright (C) 2011-2015 ZeroTier, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * -- - * - * ZeroTier may be used and distributed under the terms of the GPLv3, which - * are available at: http://www.gnu.org/licenses/gpl-3.0.html - * - * If you would like to embed ZeroTier into a commercial application or - * redistribute it in a modified binary form, please contact ZeroTier Networks - * LLC. Start here: http://www.zerotier.com/ - */ - -#include -#include -#include - -#include "../include/ZeroTierOne.h" - -#include "Constants.hpp" -#include "Defaults.hpp" -#include "Utils.hpp" - -// bin2c'd signed default root topology dictionary -#include "../root-topology/ZT_DEFAULT_ROOT_TOPOLOGY.c" - -#ifdef __WINDOWS__ -#include -#include -#include -#endif - -namespace ZeroTier { - -const Defaults ZT_DEFAULTS; - -static inline std::map< Address,Identity > _mkRootTopologyAuth() -{ - std::map< Address,Identity > ua; - - { // 0001 - Identity id("77792b1c02:0:b5c361e8e9c2154e82c3e902fdfc337468b092a7c4d8dc685c37eb10ee4f3c17cc0bb1d024167e8cb0824d12263428373582da3d0a9a14b36e4546c317e811e6"); - ua[id.address()] = id; - } - { // 0002 - Identity id("86921e6de1:0:9ba04f9f12ed54ef567f548cb69d31e404537d7b0ee000c63f3d7c8d490a1a47a5a5b2af0cbe12d23f9194270593f298d936d7c872612ea509ef1c67ce2c7fc1"); - ua[id.address()] = id; - } - { // 0003 - Identity id("90302b7025:0:358154a57af1b7afa07d0d91b69b92eaad2f11ade7f02343861f0c1b757d15626e8cb7f08fc52993d2202a39cbf5128c5647ee8c63d27d92db5a1d0fbe1eba19"); - ua[id.address()] = id; - } - { // 0004 - Identity id("e5174078ee:0:c3f90daa834a74ee47105f5726ae2e29fc8ae0e939c9326788b52b16d847354de8de3b13a81896bbb509b91e1da21763073a30bbfb2b8e994550798d30a2d709"); - ua[id.address()] = id; - } - - return ua; -} - -Defaults::Defaults() : - defaultRootTopology((const char *)ZT_DEFAULT_ROOT_TOPOLOGY,ZT_DEFAULT_ROOT_TOPOLOGY_LEN), - rootTopologyAuthorities(_mkRootTopologyAuth()), - v4Broadcast(((uint32_t)0xffffffff),ZT_DEFAULT_PORT) -{ -} - -} // namespace ZeroTier diff --git a/node/Defaults.hpp b/node/Defaults.hpp deleted file mode 100644 index c1df919bf..000000000 --- a/node/Defaults.hpp +++ /dev/null @@ -1,74 +0,0 @@ -/* - * ZeroTier One - Network Virtualization Everywhere - * Copyright (C) 2011-2015 ZeroTier, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * -- - * - * ZeroTier may be used and distributed under the terms of the GPLv3, which - * are available at: http://www.gnu.org/licenses/gpl-3.0.html - * - * If you would like to embed ZeroTier into a commercial application or - * redistribute it in a modified binary form, please contact ZeroTier Networks - * LLC. Start here: http://www.zerotier.com/ - */ - -#ifndef ZT_DEFAULTS_HPP -#define ZT_DEFAULTS_HPP - -#include -#include -#include -#include - -#include "Constants.hpp" -#include "Identity.hpp" -#include "InetAddress.hpp" - -namespace ZeroTier { - -/** - * Static configuration defaults - * - * These are the default values that ship baked into the ZeroTier binary. They - * define the basic parameters required for it to connect to the rest of the - * network and obtain software updates. - */ -class Defaults -{ -public: - Defaults(); - - /** - * Default root topology dictionary - */ - const std::string defaultRootTopology; - - /** - * Identities permitted to sign root topology dictionaries - */ - const std::map< Address,Identity > rootTopologyAuthorities; - - /** - * Address for IPv4 LAN auto-location broadcasts: 255.255.255.255:9993 - */ - const InetAddress v4Broadcast; -}; - -extern const Defaults ZT_DEFAULTS; - -} // namespace ZeroTier - -#endif diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 9f53a1c58..9fcc2e494 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -835,7 +835,7 @@ bool IncomingPacket::_doPUSH_DIRECT_PATHS(const RuntimeEnvironment *RR,const Sha unsigned int ptr = ZT_PACKET_IDX_PAYLOAD + 2; while (count--) { // if ptr overflows Buffer will throw - // TODO: properly handle blacklisting, support other features... see Packet.hpp. + // TODO: some flags are not yet implemented unsigned int flags = (*this)[ptr++]; unsigned int extLen = at(ptr); ptr += 2; @@ -846,14 +846,14 @@ bool IncomingPacket::_doPUSH_DIRECT_PATHS(const RuntimeEnvironment *RR,const Sha switch(addrType) { case 4: { InetAddress a(field(ptr,4),4,at(ptr + 4)); - if ( ((flags & (0x01 | 0x02)) == 0) && (Path::isAddressValidForPath(a)) ) { + if ( ((flags & 0x01) == 0) && (Path::isAddressValidForPath(a)) ) { TRACE("attempting to contact %s at pushed direct path %s",peer->address().toString().c_str(),a.toString().c_str()); peer->attemptToContactAt(RR,_localAddress,a,RR->node->now()); } } break; case 6: { InetAddress a(field(ptr,16),16,at(ptr + 16)); - if ( ((flags & (0x01 | 0x02)) == 0) && (Path::isAddressValidForPath(a)) ) { + if ( ((flags & 0x01) == 0) && (Path::isAddressValidForPath(a)) ) { TRACE("attempting to contact %s at pushed direct path %s",peer->address().toString().c_str(),a.toString().c_str()); peer->attemptToContactAt(RR,_localAddress,a,RR->node->now()); } diff --git a/node/Packet.hpp b/node/Packet.hpp index 6c178e666..958d0f3e7 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -564,6 +564,8 @@ public: * <[2] software revision (of responder)> * <[1] destination address type (for this OK, not copied from HELLO)> * [<[...] destination address>] + * <[8] 64-bit world ID of current world> + * <[8] 64-bit timestamp of current world> * * ERROR has no payload. */ @@ -911,7 +913,7 @@ public: * * Path record flags: * 0x01 - Forget this path if it is currently known - * 0x02 - Blacklist this path, do not use + * 0x02 - (Unused) * 0x04 - Disable encryption (trust: privacy) * 0x08 - Disable encryption and authentication (trust: ultimate) * @@ -1094,7 +1096,36 @@ public: * * ERROR has no payload. */ - VERB_REQUEST_PROOF_OF_WORK = 19 + VERB_REQUEST_PROOF_OF_WORK = 19, + + /** + * Generic binary object access: + * <[8] 64-bit request ID> + * <[4] 32-bit index in blob to retrieve> + * <[2] 16-bit max length of block to retrieve> + * <[2] 16-bit length of blob identifier> + * <[...] blob identifier> + * + * This is used as a generic remote object retrieval mechanism. It returns + * OK if the object is accessible, INVALID_REQUEST if the index is beyond + * the size of the blob or another element is invalid, and OBJ_NOT_FOUND + * if no blob with the given identifier is available. + * + * Blob identifiers follow a de facto path-like schema, with the following + * names reserved: + * world - Current world definition (see World.hpp) + * updates.d/ - Software updates (not used yet, but reserved) + * + * OK payload: + * <[8] 64-bit request ID> + * <[4] 32-bit total length of blob> + * <[4] 32-bit index of this data in blob> + * <[...] data> + * + * ERROR payload: + * <[8] 64-bit request ID> + */ + VERB_GET_OBJECT = 20 }; /** diff --git a/node/Topology.cpp b/node/Topology.cpp index 908acbc82..5aedae868 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -28,17 +28,37 @@ #include "Constants.hpp" #include "Topology.hpp" #include "RuntimeEnvironment.hpp" -#include "Defaults.hpp" #include "Dictionary.hpp" #include "Node.hpp" #include "Buffer.hpp" namespace ZeroTier { +// Default World +#define ZT_DEFAULT_WORLD_LENGTH 1 +static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = { 0 }; + Topology::Topology(const RuntimeEnvironment *renv) : RR(renv), _amRoot(false) { + try { + std::string dsWorld(RR->node->dataStoreGet("world")); + Buffer dswtmp(dsWorld.data(),dsWorld.length()); + _world.deserialize(dswtmp,0); + } catch ( ... ) { + _world = World(); // set to null if cached world is invalid + } + { + World defaultWorld; + Buffer wtmp(ZT_DEFAULT_WORLD,ZT_DEFAULT_WORLD_LENGTH); + defaultWorld.deserialize(wtmp,0); // throws on error, which would indicate a bad static variable up top + if (_world.verifyUpdate(defaultWorld)) { + _world = defaultWorld; + RR->node->dataStorePut("world",ZT_DEFAULT_WORLD,ZT_DEFAULT_WORLD_LENGTH,false); + } + } + std::string alls(RR->node->dataStoreGet("peers.save")); const uint8_t *all = reinterpret_cast(alls.data()); RR->node->dataStoreDelete("peers.save"); @@ -76,6 +96,20 @@ Topology::Topology(const RuntimeEnvironment *renv) : } clean(RR->node->now()); + + for(std::vector::const_iterator r(_world.roots().begin());r!=_world.roots().end();++r) { + if (r->identity == RR->identity) + _amRoot = true; + _rootAddresses.push_back(r->identity.address()); + SharedPtr *rp = _peers.get(r->identity.address()); + if (rp) { + _rootPeers.push_back(*rp); + } else if (r->identity.address() != RR->identity.address()) { + SharedPtr newrp(new Peer(RR->identity,r->identity)); + _peers.set(r->identity.address(),newrp); + _rootPeers.push_back(newrp); + } + } } Topology::~Topology() @@ -103,55 +137,6 @@ Topology::~Topology() RR->node->dataStorePut("peers.save",all,true); } -void Topology::setRootServers(const std::map< Identity,std::vector > &sn) -{ - Mutex::Lock _l(_lock); - - if (_roots == sn) - return; // no change - - _roots = sn; - _rootAddresses.clear(); - _rootPeers.clear(); - const uint64_t now = RR->node->now(); - - for(std::map< Identity,std::vector >::const_iterator i(sn.begin());i!=sn.end();++i) { - if (i->first != RR->identity) { // do not add self as a peer - SharedPtr &p = _peers[i->first.address()]; - if (!p) - p = SharedPtr(new Peer(RR->identity,i->first)); - for(std::vector::const_iterator j(i->second.begin());j!=i->second.end();++j) - p->addPath(RemotePath(InetAddress(),*j,true),now); - p->use(now); - _rootPeers.push_back(p); - } - _rootAddresses.push_back(i->first.address()); - } - - std::sort(_rootAddresses.begin(),_rootAddresses.end()); - - _amRoot = (_roots.find(RR->identity) != _roots.end()); -} - -void Topology::setRootServers(const Dictionary &sn) -{ - std::map< Identity,std::vector > m; - for(Dictionary::const_iterator d(sn.begin());d!=sn.end();++d) { - if ((d->first.length() == ZT_ADDRESS_LENGTH_HEX)&&(d->second.length() > 0)) { - try { - Dictionary snspec(d->second); - std::vector &a = m[Identity(snspec.get("id",""))]; - std::string udp(snspec.get("udp",std::string())); - if (udp.length() > 0) - a.push_back(InetAddress(udp)); - } catch ( ... ) { - TRACE("root server list contained invalid entry for: %s",d->first.c_str()); - } - } - } - this->setRootServers(m); -} - SharedPtr Topology::addPeer(const SharedPtr &peer) { if (peer->address() == RR->identity.address()) { @@ -298,13 +283,6 @@ keep_searching_for_roots: return bestRoot; } -bool Topology::isRoot(const Identity &id) const - throw() -{ - Mutex::Lock _l(_lock); - return (_roots.count(id) != 0); -} - void Topology::clean(uint64_t now) { Mutex::Lock _l(_lock); @@ -320,24 +298,6 @@ void Topology::clean(uint64_t now) } } -bool Topology::authenticateRootTopology(const Dictionary &rt) -{ - try { - std::string signer(rt.signingIdentity()); - if (!signer.length()) - return false; - Identity signerId(signer); - std::map< Address,Identity >::const_iterator authority(ZT_DEFAULTS.rootTopologyAuthorities.find(signerId.address())); - if (authority == ZT_DEFAULTS.rootTopologyAuthorities.end()) - return false; - if (signerId != authority->second) - return false; - return rt.verify(authority->second); - } catch ( ... ) { - return false; - } -} - Identity Topology::_getIdentity(const Address &zta) { char p[128]; diff --git a/node/Topology.hpp b/node/Topology.hpp index 4df545e1f..ed8f3d865 100644 --- a/node/Topology.hpp +++ b/node/Topology.hpp @@ -43,8 +43,8 @@ #include "Peer.hpp" #include "Mutex.hpp" #include "InetAddress.hpp" -#include "Dictionary.hpp" #include "Hashtable.hpp" +#include "World.hpp" namespace ZeroTier { @@ -59,21 +59,6 @@ public: Topology(const RuntimeEnvironment *renv); ~Topology(); - /** - * @param sn Root server identities and addresses - */ - void setRootServers(const std::map< Identity,std::vector > &sn); - - /** - * Set up root servers for this network - * - * This performs no signature verification of any kind. The caller must - * check the signature of the root topology dictionary first. - * - * @param sn 'rootservers' key from root-topology Dictionary (deserialized as Dictionary) - */ - void setRootServers(const Dictionary &sn); - /** * Add a peer to database * @@ -128,10 +113,20 @@ public: /** * @param id Identity to check - * @return True if this is a designated root server + * @return True if this is a designated root server in this world */ - bool isRoot(const Identity &id) const - throw(); + inline bool isRoot(const Identity &id) const + { + Mutex::Lock _l(_lock); + if (std::find(_rootAddresses.begin(),_rootAddresses.end(),id.address()) != _rootAddresses.end()) { + // Double check full identity for security reasons + for(std::vector::const_iterator r(_world.roots().begin());r!=_world.roots().end();++r) { + if (id == r->identity) + return true; + } + } + return false; + } /** * @return Vector of root server addresses @@ -142,6 +137,15 @@ public: return _rootAddresses; } + /** + * @return Current World (copy) + */ + inline World world() const + { + Mutex::Lock _l(_lock); + return _world; + } + /** * Clean and flush database */ @@ -180,28 +184,19 @@ public: return _peers.entries(); } - /** - * Validate a root topology dictionary against the identities specified in Defaults - * - * @param rt Root topology dictionary - * @return True if dictionary signature is valid - */ - static bool authenticateRootTopology(const Dictionary &rt); - private: Identity _getIdentity(const Address &zta); void _saveIdentity(const Identity &id); const RuntimeEnvironment *RR; + World _world; Hashtable< Address,SharedPtr > _peers; - std::map< Identity,std::vector > _roots; std::vector< Address > _rootAddresses; std::vector< SharedPtr > _rootPeers; + bool _amRoot; Mutex _lock; - - bool _amRoot; }; } // namespace ZeroTier diff --git a/node/World.hpp b/node/World.hpp new file mode 100644 index 000000000..0d26021f2 --- /dev/null +++ b/node/World.hpp @@ -0,0 +1,221 @@ +/* + * ZeroTier One - Network Virtualization Everywhere + * Copyright (C) 2011-2015 ZeroTier, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * -- + * + * ZeroTier may be used and distributed under the terms of the GPLv3, which + * are available at: http://www.gnu.org/licenses/gpl-3.0.html + * + * If you would like to embed ZeroTier into a commercial application or + * redistribute it in a modified binary form, please contact ZeroTier Networks + * LLC. Start here: http://www.zerotier.com/ + */ + +#ifndef ZT_WORLD_HPP +#define ZT_WORLD_HPP + +#include +#include + +#include "Constants.hpp" +#include "InetAddress.hpp" +#include "Identity.hpp" +#include "Buffer.hpp" +#include "C25519.hpp" + +/** + * Maximum number of roots (sanity limit, okay to increase) + * + * A given root can (through multi-homing) be distributed across any number of + * physical endpoints, but having more than one is good to permit total failure + * of one root or its withdrawal due to compromise without taking the whole net + * down. + */ +#define ZT_WORLD_MAX_ROOTS 4 + +/** + * Maximum number of stable endpoints per root (sanity limit, okay to increase) + */ +#define ZT_WORLD_MAX_STABLE_ENDPOINTS_PER_ROOT 32 + +/** + * The (more than) maximum length of a serialized World + */ +#define ZT_WORLD_MAX_SERIALIZED_LENGTH (((1024 + (32 * ZT_WORLD_MAX_STABLE_ENDPOINTS_PER_ROOT)) * ZT_WORLD_MAX_ROOTS) + ZT_C25519_PUBLIC_KEY_LEN + ZT_C25519_SIGNATURE_LEN + 64) + +/** + * World ID indicating null / empty World object + */ +#define ZT_WORLD_ID_NULL 0 + +/** + * World ID for a test network with ephemeral or temporary roots + */ +#define ZT_WORLD_ID_TESTNET 1 + +/** + * World ID for Earth -- its approximate distance from the sun in kilometers + * + * This is the ID for the ZeroTier World used on planet Earth. It is unrelated + * to the public network 8056c2e21c000001 of the same name. + * + * It's advisable to create a new World for network regions spaced more than + * 2-3 light seconds, since RTT times in excess of 5s are problematic for some + * protocols. Earth could therefore include its low and high orbits, the Moon, + * and nearby Lagrange points. + */ +#define ZT_WORLD_ID_EARTH 149604618 + +/** + * World ID for Mars -- for future use by SpaceX or others + */ +#define ZT_WORLD_ID_MARS 227883110 + +namespace ZeroTier { + +/** + * A world definition (formerly known as a root topology) + * + * A world consists of a set of root servers and a signature scheme enabling + * it to be updated going forward. It defines a single ZeroTier VL1 network + * area within which any device can reach any other. + */ +class World +{ +public: + struct Root + { + Identity identity; + std::vector stableEndpoints; + + inline bool operator==(const Root &r) const throw() { return ((identity == r.identity)&&(stableEndpoints == r.stableEndpoints)); } + inline bool operator!=(const Root &r) const throw() { return (!(*this == r)); } + inline bool operator<(const Root &r) const throw() { return (identity < r.identity); } // for sorting + }; + + /** + * Construct an empty / null World + */ + World() : + _id(ZT_WORLD_ID_NULL), + _ts(0) {} + + /** + * @return Root servers for this world and their stable endpoints + */ + inline const std::vector &roots() const throw() { return _roots; } + + /** + * @return World unique identifier + */ + inline uint64_t id() const throw() { return _id; } + + /** + * @return World definition timestamp + */ + inline uint64_t timestamp() const throw() { return _ts; } + + /** + * Verify a world update + * + * A new world update is valid if it is for the same world ID, is newer, + * and is signed by the current world's signing key. If this world object + * is null, it can always be updated. + * + * @param update Candidate update + * @return True if update is newer than current and is properly signed + */ + inline bool verifyUpdate(const World &update) + { + if (_id == ZT_WORLD_ID_NULL) + return true; + if ((update._id != _id)||(update._ts <= _ts)) + return false; + Buffer tmp; + update.serialize(tmp); + return C25519::verify(_updateSigningKey,tmp.data(),tmp.size(),update._signature); + } + + /** + * @return True if this World is non-empty + */ + inline operator bool() const throw() { return (_id != ZT_WORLD_ID_NULL); } + + template + inline void serialize(Buffer &b) const + { + b.append((uint8_t)0x01); // version -- only one valid value for now + b.append((uint64_t)_id); + b.append((uint64_t)_ts); + b.append(_updateSigningKey.data,ZT_C25519_PUBLIC_KEY_LEN); + b.append(_signature.data,ZT_C25519_SIGNATURE_LEN); + b.append((uint8_t)_roots.size()); + for(std::vector::const_iterator r(_roots.begin());r!=_roots.end();++r) { + r->identity.serialize(b); + b.append((uint8_t)r->stableEndpoints.size()); + for(std::vector::const_iterator ep(r->stableEndpoints.begin());ep!=r->stableEndpoints.end();++ep) + ep->serialize(b); + } + } + + template + inline unsigned int deserialize(const Buffer &b,unsigned int startAt = 0) + { + unsigned int p = startAt; + + _roots.clear(); + + if (b[p++] != 0x01) + throw std::invalid_argument("invalid World serialized version"); + + _id = b.template at(p); p += 8; + _ts = b.template at(p); p += 8; + memcpy(_updateSigningKey.data,b.field(p,ZT_C25519_PUBLIC_KEY_LEN),ZT_C25519_PUBLIC_KEY_LEN); p += ZT_C25519_PUBLIC_KEY_LEN; + memcpy(_signature.data,b.field(p,ZT_C25519_SIGNATURE_LEN),ZT_C25519_SIGNATURE_LEN); p += ZT_C25519_SIGNATURE_LEN; + unsigned int numRoots = b[p++]; + if (numRoots > ZT_WORLD_MAX_ROOTS) + throw std::invalid_argument("too many roots in World"); + for(unsigned int k=0;k ZT_WORLD_MAX_STABLE_ENDPOINTS_PER_ROOT) + throw std::invalid_argument("too many stable endpoints in World/Root"); + for(unsigned int kk=0;kk _roots; +}; + +} // namespace ZeroTier + +#endif diff --git a/objects.mk b/objects.mk index 0986ef0dc..64e5cfa76 100644 --- a/objects.mk +++ b/objects.mk @@ -4,7 +4,6 @@ OBJS=\ ext/http-parser/http_parser.o \ node/C25519.o \ node/CertificateOfMembership.o \ - node/Defaults.o \ node/Dictionary.o \ node/Identity.o \ node/IncomingPacket.o \ diff --git a/root-topology/Makefile b/root-topology/Makefile deleted file mode 100644 index 3ddd916f0..000000000 --- a/root-topology/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -all: FORCE - g++ -o mktopology mktopology.cpp ../osdep/OSUtils.cpp ../node/Utils.cpp ../node/InetAddress.cpp ../node/Identity.cpp ../node/C25519.cpp ../node/Salsa20.cpp ../node/Dictionary.cpp ../node/SHA512.cpp - gcc -o bin2c bin2c.c - -official: FORCE - rm -f ZT_DEFAULT_ROOT_TOPOLOGY.dict - ./mktopology >ZT_DEFAULT_ROOT_TOPOLOGY.dict - ./bin2c ZT_DEFAULT_ROOT_TOPOLOGY < ZT_DEFAULT_ROOT_TOPOLOGY.dict > ZT_DEFAULT_ROOT_TOPOLOGY.c - ls -l ZT_DEFAULT_ROOT_TOPOLOGY.c - -clean: - rm -f *.o mktopology bin2c - -realclean: clean - rm -f ZT_DEFAULT_ROOT_TOPOLOGY.c ZT_DEFAULT_ROOT_TOPOLOGY.dict - -FORCE: diff --git a/root-topology/README.md b/root-topology/README.md deleted file mode 100644 index c9c3a9083..000000000 --- a/root-topology/README.md +++ /dev/null @@ -1,18 +0,0 @@ -This folder contains the source files to compile the signed network root topology dictionary. Users outside ZeroTier won't find this useful except for testing, since the root topology must be signed by the root topology authority (public identity in root-topology-authority.public) to be considered valid. - -Keys in the root topology dictionary are: - - * **rootservers**: contains another Dictionary mapping rootserver address to rootserver definition - * **##########**: rootserver address, contains rootserver definition - * **id**: rootserver identity (public) in string-serialized format - * **udp**: comma-delimited list of ip/port UDP addresses of node - * **tcp**: *DEPRECATED* comma-delimited list of ip/port TCP addresses of node - * **desc**: human-readable description (optional) - * **dns**: DNS name (optional, not currently used for anything) - * **noupdate**: if the value of this is '1', do not auto-update from ZeroTier's servers - -ZT_DEFAULT_ROOT_TOPOLOGY.c contains the current default value, and this URL is periodically checked for updates: - -http://download.zerotier.com/net/topology/ROOT - -Obviously nothing prevents OSS users from replacing this topology with their own, changing the hard coded topology signing identity and update URL in Defaults, and signing their own dictionary. But doing so would yield a network that would have a tough(ish) time talking to the main one. Since the main network is a free service, why bother? (Except for building testnets, which ZeroTier already does for internal testing.) diff --git a/root-topology/ZT_DEFAULT_ROOT_TOPOLOGY.c b/root-topology/ZT_DEFAULT_ROOT_TOPOLOGY.c deleted file mode 100644 index 96835e058..000000000 --- a/root-topology/ZT_DEFAULT_ROOT_TOPOLOGY.c +++ /dev/null @@ -1,90 +0,0 @@ -static unsigned char ZT_DEFAULT_ROOT_TOPOLOGY[] = { - 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x3d, 0x37, 0x65, 0x31, 0x39, - 0x38, 0x37, 0x36, 0x61, 0x62, 0x61, 0x5c, 0x3d, 0x69, 0x64, 0x5c, 0x5c, 0x5c, 0x3d, 0x37, 0x65, - 0x31, 0x39, 0x38, 0x37, 0x36, 0x61, 0x62, 0x61, 0x3a, 0x30, 0x3a, 0x32, 0x61, 0x36, 0x65, 0x32, - 0x62, 0x32, 0x33, 0x31, 0x38, 0x39, 0x33, 0x30, 0x66, 0x36, 0x30, 0x65, 0x62, 0x30, 0x39, 0x37, - 0x66, 0x37, 0x30, 0x64, 0x30, 0x66, 0x34, 0x62, 0x30, 0x32, 0x38, 0x62, 0x32, 0x63, 0x64, 0x36, - 0x64, 0x33, 0x64, 0x30, 0x63, 0x36, 0x33, 0x63, 0x30, 0x31, 0x34, 0x62, 0x39, 0x30, 0x33, 0x39, - 0x66, 0x66, 0x33, 0x35, 0x33, 0x39, 0x30, 0x65, 0x34, 0x31, 0x31, 0x38, 0x31, 0x66, 0x32, 0x31, - 0x36, 0x66, 0x62, 0x32, 0x65, 0x36, 0x66, 0x61, 0x38, 0x64, 0x39, 0x35, 0x63, 0x31, 0x65, 0x65, - 0x39, 0x36, 0x36, 0x37, 0x31, 0x35, 0x36, 0x34, 0x31, 0x31, 0x39, 0x30, 0x35, 0x63, 0x33, 0x64, - 0x63, 0x63, 0x66, 0x65, 0x61, 0x37, 0x38, 0x64, 0x38, 0x63, 0x36, 0x64, 0x66, 0x61, 0x66, 0x62, - 0x61, 0x36, 0x38, 0x38, 0x31, 0x37, 0x30, 0x62, 0x33, 0x66, 0x61, 0x5c, 0x5c, 0x6e, 0x75, 0x64, - 0x70, 0x5c, 0x5c, 0x5c, 0x3d, 0x31, 0x39, 0x38, 0x2e, 0x31, 0x39, 0x39, 0x2e, 0x39, 0x37, 0x2e, - 0x32, 0x32, 0x30, 0x2f, 0x39, 0x39, 0x39, 0x33, 0x5c, 0x5c, 0x6e, 0x74, 0x63, 0x70, 0x5c, 0x5c, - 0x5c, 0x3d, 0x31, 0x39, 0x38, 0x2e, 0x31, 0x39, 0x39, 0x2e, 0x39, 0x37, 0x2e, 0x32, 0x32, 0x30, - 0x2f, 0x34, 0x34, 0x33, 0x5c, 0x5c, 0x6e, 0x64, 0x65, 0x73, 0x63, 0x5c, 0x5c, 0x5c, 0x3d, 0x53, - 0x61, 0x6e, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x69, 0x73, 0x63, 0x6f, 0x2c, 0x20, 0x43, 0x61, - 0x6c, 0x69, 0x66, 0x6f, 0x72, 0x6e, 0x69, 0x61, 0x2c, 0x20, 0x55, 0x53, 0x41, 0x5c, 0x5c, 0x6e, - 0x5c, 0x6e, 0x38, 0x38, 0x34, 0x31, 0x34, 0x30, 0x38, 0x61, 0x32, 0x65, 0x5c, 0x3d, 0x69, 0x64, - 0x5c, 0x5c, 0x5c, 0x3d, 0x38, 0x38, 0x34, 0x31, 0x34, 0x30, 0x38, 0x61, 0x32, 0x65, 0x3a, 0x30, - 0x3a, 0x62, 0x62, 0x31, 0x64, 0x33, 0x31, 0x66, 0x32, 0x63, 0x33, 0x32, 0x33, 0x65, 0x32, 0x36, - 0x34, 0x65, 0x39, 0x65, 0x36, 0x34, 0x31, 0x37, 0x32, 0x63, 0x31, 0x61, 0x37, 0x34, 0x66, 0x37, - 0x37, 0x38, 0x39, 0x39, 0x35, 0x35, 0x35, 0x65, 0x64, 0x31, 0x30, 0x37, 0x35, 0x31, 0x63, 0x64, - 0x35, 0x36, 0x65, 0x38, 0x36, 0x34, 0x30, 0x35, 0x63, 0x64, 0x65, 0x31, 0x31, 0x38, 0x64, 0x30, - 0x32, 0x64, 0x66, 0x66, 0x65, 0x35, 0x35, 0x35, 0x64, 0x34, 0x36, 0x32, 0x63, 0x63, 0x66, 0x36, - 0x61, 0x38, 0x35, 0x62, 0x35, 0x36, 0x33, 0x31, 0x63, 0x31, 0x32, 0x33, 0x35, 0x30, 0x63, 0x38, - 0x64, 0x35, 0x64, 0x63, 0x34, 0x30, 0x39, 0x62, 0x61, 0x31, 0x30, 0x62, 0x39, 0x30, 0x32, 0x35, - 0x64, 0x30, 0x66, 0x34, 0x34, 0x35, 0x63, 0x66, 0x34, 0x34, 0x39, 0x64, 0x39, 0x32, 0x62, 0x31, - 0x63, 0x5c, 0x5c, 0x6e, 0x75, 0x64, 0x70, 0x5c, 0x5c, 0x5c, 0x3d, 0x31, 0x30, 0x37, 0x2e, 0x31, - 0x39, 0x31, 0x2e, 0x34, 0x36, 0x2e, 0x32, 0x31, 0x30, 0x2f, 0x39, 0x39, 0x39, 0x33, 0x5c, 0x5c, - 0x6e, 0x74, 0x63, 0x70, 0x5c, 0x5c, 0x5c, 0x3d, 0x31, 0x30, 0x37, 0x2e, 0x31, 0x39, 0x31, 0x2e, - 0x34, 0x36, 0x2e, 0x32, 0x31, 0x30, 0x2f, 0x34, 0x34, 0x33, 0x5c, 0x5c, 0x6e, 0x64, 0x65, 0x73, - 0x63, 0x5c, 0x5c, 0x5c, 0x3d, 0x50, 0x61, 0x72, 0x69, 0x73, 0x2c, 0x20, 0x46, 0x72, 0x61, 0x6e, - 0x63, 0x65, 0x5c, 0x5c, 0x6e, 0x5c, 0x6e, 0x38, 0x61, 0x63, 0x66, 0x30, 0x35, 0x39, 0x66, 0x65, - 0x33, 0x5c, 0x3d, 0x69, 0x64, 0x5c, 0x5c, 0x5c, 0x3d, 0x38, 0x61, 0x63, 0x66, 0x30, 0x35, 0x39, - 0x66, 0x65, 0x33, 0x3a, 0x30, 0x3a, 0x34, 0x38, 0x32, 0x66, 0x36, 0x65, 0x65, 0x35, 0x64, 0x66, - 0x65, 0x39, 0x30, 0x32, 0x33, 0x31, 0x39, 0x62, 0x34, 0x31, 0x39, 0x64, 0x65, 0x35, 0x62, 0x64, - 0x63, 0x37, 0x36, 0x35, 0x32, 0x30, 0x39, 0x63, 0x30, 0x65, 0x63, 0x64, 0x61, 0x33, 0x38, 0x63, - 0x34, 0x64, 0x36, 0x65, 0x34, 0x66, 0x63, 0x66, 0x30, 0x64, 0x33, 0x33, 0x36, 0x35, 0x38, 0x33, - 0x39, 0x38, 0x62, 0x34, 0x35, 0x32, 0x37, 0x64, 0x63, 0x64, 0x32, 0x32, 0x66, 0x39, 0x33, 0x31, - 0x31, 0x32, 0x66, 0x62, 0x39, 0x62, 0x65, 0x66, 0x64, 0x30, 0x32, 0x66, 0x64, 0x37, 0x38, 0x62, - 0x66, 0x37, 0x32, 0x36, 0x31, 0x62, 0x33, 0x33, 0x33, 0x66, 0x63, 0x31, 0x30, 0x35, 0x64, 0x31, - 0x39, 0x32, 0x61, 0x36, 0x32, 0x33, 0x63, 0x61, 0x39, 0x65, 0x35, 0x30, 0x66, 0x63, 0x36, 0x30, - 0x62, 0x33, 0x37, 0x34, 0x61, 0x35, 0x5c, 0x5c, 0x6e, 0x75, 0x64, 0x70, 0x5c, 0x5c, 0x5c, 0x3d, - 0x31, 0x36, 0x32, 0x2e, 0x32, 0x34, 0x33, 0x2e, 0x37, 0x37, 0x2e, 0x31, 0x31, 0x31, 0x2f, 0x39, - 0x39, 0x39, 0x33, 0x5c, 0x5c, 0x6e, 0x74, 0x63, 0x70, 0x5c, 0x5c, 0x5c, 0x3d, 0x31, 0x36, 0x32, - 0x2e, 0x32, 0x34, 0x33, 0x2e, 0x37, 0x37, 0x2e, 0x31, 0x31, 0x31, 0x2f, 0x34, 0x34, 0x33, 0x5c, - 0x5c, 0x6e, 0x64, 0x65, 0x73, 0x63, 0x5c, 0x5c, 0x5c, 0x3d, 0x4e, 0x65, 0x77, 0x20, 0x59, 0x6f, - 0x72, 0x6b, 0x2c, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x59, 0x6f, 0x72, 0x6b, 0x2c, 0x20, 0x55, 0x53, - 0x41, 0x5c, 0x5c, 0x6e, 0x5c, 0x6e, 0x39, 0x64, 0x32, 0x31, 0x39, 0x30, 0x33, 0x39, 0x66, 0x33, - 0x5c, 0x3d, 0x69, 0x64, 0x5c, 0x5c, 0x5c, 0x3d, 0x39, 0x64, 0x32, 0x31, 0x39, 0x30, 0x33, 0x39, - 0x66, 0x33, 0x3a, 0x30, 0x3a, 0x30, 0x31, 0x66, 0x30, 0x39, 0x32, 0x32, 0x61, 0x39, 0x38, 0x65, - 0x33, 0x62, 0x33, 0x34, 0x65, 0x62, 0x63, 0x62, 0x66, 0x66, 0x33, 0x33, 0x33, 0x32, 0x36, 0x39, - 0x64, 0x63, 0x32, 0x36, 0x35, 0x64, 0x37, 0x61, 0x30, 0x32, 0x30, 0x61, 0x61, 0x62, 0x36, 0x39, - 0x64, 0x37, 0x32, 0x62, 0x65, 0x34, 0x64, 0x34, 0x61, 0x63, 0x63, 0x39, 0x63, 0x38, 0x63, 0x39, - 0x32, 0x39, 0x34, 0x37, 0x38, 0x35, 0x37, 0x37, 0x31, 0x32, 0x35, 0x36, 0x63, 0x64, 0x31, 0x64, - 0x39, 0x34, 0x32, 0x61, 0x39, 0x30, 0x64, 0x31, 0x62, 0x64, 0x31, 0x64, 0x32, 0x64, 0x63, 0x61, - 0x33, 0x65, 0x61, 0x38, 0x34, 0x65, 0x66, 0x37, 0x64, 0x38, 0x35, 0x61, 0x66, 0x65, 0x36, 0x36, - 0x31, 0x31, 0x66, 0x62, 0x34, 0x33, 0x66, 0x66, 0x30, 0x62, 0x37, 0x34, 0x31, 0x32, 0x36, 0x64, - 0x39, 0x30, 0x61, 0x36, 0x65, 0x5c, 0x5c, 0x6e, 0x75, 0x64, 0x70, 0x5c, 0x5c, 0x5c, 0x3d, 0x31, - 0x32, 0x38, 0x2e, 0x31, 0x39, 0x39, 0x2e, 0x31, 0x39, 0x37, 0x2e, 0x32, 0x31, 0x37, 0x2f, 0x39, - 0x39, 0x39, 0x33, 0x5c, 0x5c, 0x6e, 0x74, 0x63, 0x70, 0x5c, 0x5c, 0x5c, 0x3d, 0x31, 0x32, 0x38, - 0x2e, 0x31, 0x39, 0x39, 0x2e, 0x31, 0x39, 0x37, 0x2e, 0x32, 0x31, 0x37, 0x2f, 0x34, 0x34, 0x33, - 0x5c, 0x5c, 0x6e, 0x64, 0x65, 0x73, 0x63, 0x5c, 0x5c, 0x5c, 0x3d, 0x53, 0x69, 0x6e, 0x67, 0x61, - 0x70, 0x6f, 0x72, 0x65, 0x5c, 0x5c, 0x6e, 0x5c, 0x6e, 0x0a, 0x7e, 0x21, 0x65, 0x64, 0x32, 0x35, - 0x35, 0x31, 0x39, 0x3d, 0x38, 0x33, 0x32, 0x62, 0x33, 0x35, 0x64, 0x61, 0x64, 0x64, 0x37, 0x66, - 0x35, 0x36, 0x66, 0x66, 0x33, 0x38, 0x31, 0x66, 0x61, 0x37, 0x32, 0x31, 0x64, 0x65, 0x37, 0x64, - 0x35, 0x62, 0x65, 0x34, 0x63, 0x65, 0x62, 0x66, 0x63, 0x63, 0x63, 0x32, 0x30, 0x30, 0x32, 0x30, - 0x38, 0x33, 0x38, 0x30, 0x64, 0x33, 0x30, 0x38, 0x34, 0x66, 0x36, 0x34, 0x38, 0x65, 0x32, 0x63, - 0x31, 0x61, 0x35, 0x63, 0x66, 0x34, 0x33, 0x65, 0x35, 0x39, 0x66, 0x39, 0x32, 0x61, 0x36, 0x36, - 0x35, 0x64, 0x66, 0x34, 0x64, 0x62, 0x63, 0x62, 0x38, 0x33, 0x37, 0x38, 0x38, 0x66, 0x36, 0x62, - 0x64, 0x36, 0x37, 0x37, 0x66, 0x30, 0x32, 0x62, 0x32, 0x31, 0x30, 0x65, 0x35, 0x30, 0x63, 0x61, - 0x66, 0x65, 0x66, 0x64, 0x32, 0x65, 0x66, 0x31, 0x38, 0x39, 0x62, 0x62, 0x66, 0x34, 0x38, 0x31, - 0x62, 0x64, 0x30, 0x32, 0x63, 0x64, 0x63, 0x39, 0x38, 0x34, 0x35, 0x33, 0x38, 0x37, 0x64, 0x38, - 0x34, 0x39, 0x62, 0x63, 0x35, 0x36, 0x66, 0x39, 0x63, 0x37, 0x32, 0x35, 0x31, 0x65, 0x35, 0x64, - 0x30, 0x65, 0x61, 0x34, 0x34, 0x34, 0x66, 0x66, 0x63, 0x66, 0x38, 0x66, 0x37, 0x32, 0x32, 0x63, - 0x32, 0x66, 0x65, 0x62, 0x38, 0x39, 0x36, 0x30, 0x33, 0x61, 0x30, 0x65, 0x35, 0x62, 0x61, 0x32, - 0x39, 0x35, 0x66, 0x63, 0x0a, 0x7e, 0x21, 0x73, 0x69, 0x67, 0x69, 0x64, 0x3d, 0x37, 0x37, 0x37, - 0x39, 0x32, 0x62, 0x31, 0x63, 0x30, 0x32, 0x3a, 0x30, 0x3a, 0x62, 0x35, 0x63, 0x33, 0x36, 0x31, - 0x65, 0x38, 0x65, 0x39, 0x63, 0x32, 0x31, 0x35, 0x34, 0x65, 0x38, 0x32, 0x63, 0x33, 0x65, 0x39, - 0x30, 0x32, 0x66, 0x64, 0x66, 0x63, 0x33, 0x33, 0x37, 0x34, 0x36, 0x38, 0x62, 0x30, 0x39, 0x32, - 0x61, 0x37, 0x63, 0x34, 0x64, 0x38, 0x64, 0x63, 0x36, 0x38, 0x35, 0x63, 0x33, 0x37, 0x65, 0x62, - 0x31, 0x30, 0x65, 0x65, 0x34, 0x66, 0x33, 0x63, 0x31, 0x37, 0x63, 0x63, 0x30, 0x62, 0x62, 0x31, - 0x64, 0x30, 0x32, 0x34, 0x31, 0x36, 0x37, 0x65, 0x38, 0x63, 0x62, 0x30, 0x38, 0x32, 0x34, 0x64, - 0x31, 0x32, 0x32, 0x36, 0x33, 0x34, 0x32, 0x38, 0x33, 0x37, 0x33, 0x35, 0x38, 0x32, 0x64, 0x61, - 0x33, 0x64, 0x30, 0x61, 0x39, 0x61, 0x31, 0x34, 0x62, 0x33, 0x36, 0x65, 0x34, 0x35, 0x34, 0x36, - 0x63, 0x33, 0x31, 0x37, 0x65, 0x38, 0x31, 0x31, 0x65, 0x36, 0x0a, 0x7e, 0x21, 0x73, 0x69, 0x67, - 0x74, 0x73, 0x3d, 0x31, 0x34, 0x65, 0x30, 0x63, 0x62, 0x62, 0x39, 0x38, 0x64, 0x36, 0x0a -}; -#define ZT_DEFAULT_ROOT_TOPOLOGY_LEN 1391 diff --git a/root-topology/ZT_DEFAULT_ROOT_TOPOLOGY.dict b/root-topology/ZT_DEFAULT_ROOT_TOPOLOGY.dict deleted file mode 100644 index 58144758e..000000000 --- a/root-topology/ZT_DEFAULT_ROOT_TOPOLOGY.dict +++ /dev/null @@ -1,4 +0,0 @@ -rootservers=7e19876aba\=id\\\=7e19876aba:0:2a6e2b2318930f60eb097f70d0f4b028b2cd6d3d0c63c014b9039ff35390e41181f216fb2e6fa8d95c1ee9667156411905c3dccfea78d8c6dfafba688170b3fa\\nudp\\\=198.199.97.220/9993\\ntcp\\\=198.199.97.220/443\\ndesc\\\=San Francisco, California, USA\\n\n8841408a2e\=id\\\=8841408a2e:0:bb1d31f2c323e264e9e64172c1a74f77899555ed10751cd56e86405cde118d02dffe555d462ccf6a85b5631c12350c8d5dc409ba10b9025d0f445cf449d92b1c\\nudp\\\=107.191.46.210/9993\\ntcp\\\=107.191.46.210/443\\ndesc\\\=Paris, France\\n\n8acf059fe3\=id\\\=8acf059fe3:0:482f6ee5dfe902319b419de5bdc765209c0ecda38c4d6e4fcf0d33658398b4527dcd22f93112fb9befd02fd78bf7261b333fc105d192a623ca9e50fc60b374a5\\nudp\\\=162.243.77.111/9993\\ntcp\\\=162.243.77.111/443\\ndesc\\\=New York, New York, USA\\n\n9d219039f3\=id\\\=9d219039f3:0:01f0922a98e3b34ebcbff333269dc265d7a020aab69d72be4d4acc9c8c9294785771256cd1d942a90d1bd1d2dca3ea84ef7d85afe6611fb43ff0b74126d90a6e\\nudp\\\=128.199.197.217/9993\\ntcp\\\=128.199.197.217/443\\ndesc\\\=Singapore\\n\n -~!ed25519=832b35dadd7f56ff381fa721de7d5be4cebfccc200208380d3084f648e2c1a5cf43e59f92a665df4dbcb83788f6bd677f02b210e50cafefd2ef189bbf481bd02cdc9845387d849bc56f9c7251e5d0ea444ffcf8f722c2feb89603a0e5ba295fc -~!sigid=77792b1c02:0:b5c361e8e9c2154e82c3e902fdfc337468b092a7c4d8dc685c37eb10ee4f3c17cc0bb1d024167e8cb0824d12263428373582da3d0a9a14b36e4546c317e811e6 -~!sigts=14e0cbb98d6 diff --git a/root-topology/bin2c.c b/root-topology/bin2c.c deleted file mode 100644 index a30deee50..000000000 --- a/root-topology/bin2c.c +++ /dev/null @@ -1,57 +0,0 @@ -/** - Converts input from stdin into an array of binary data for use in C. - - License: Public Domain - - Usage: app VariableName < input > output.c -*/ - -#include /* uintXX_t */ -#include /* PRIuXX macros */ -#include - -static char const * appName = 0; - -static void usage() -{ - printf("Usage: %s OBJECT_NAME < input > output.c\n\n", appName ); -} - -int main( int argc, char const ** argv ) -{ - appName = argv[0]; - if( (argc != 2) || (argv[1][0] == '-') ) - { - usage(); - return 1; - } - char const * varname = argv[1]; - enum { bufSize = 1024 * 8 }; - unsigned char buf[bufSize]; - size_t rd = 0; - size_t i = 0; - size_t flip = 0; - - printf( "static unsigned char %s[] = {\n\t", varname); - uint32_t size = 0; - while( 0 != (rd = fread( buf, 1, bufSize, stdin ) ) ) - { - size += rd; - for(i = 0; i < rd; ++i ) - { - printf( "0x%02x", buf[i] ); - if( !( (rd < bufSize) && (i == rd-1)) ) putchar(','); - if( 16 == ++flip ) - { - flip = 0; - printf("\n\t"); - } - else putchar(' '); - } - } - printf("\n};\n"); - printf("#define %s_LEN %llu\n",varname,(unsigned long long)size); - //printf( "enum { %s_length = %"PRIu32"%s }; ", varname, size,"UL"); - //printf("enum { %s_length = sizeof(%s) };\n", varname, varname ); - return 0; -} diff --git a/root-topology/mktopology.cpp b/root-topology/mktopology.cpp deleted file mode 100644 index f0ad5b556..000000000 --- a/root-topology/mktopology.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include -#include -#include - -#include -#include -#include - -#include "../osdep/OSUtils.hpp" -#include "../node/Identity.hpp" -#include "../node/Dictionary.hpp" - -using namespace ZeroTier; - -int main(int argc,char **argv) -{ - std::string buf; - - // Read root-topology-authority.secret signing authority, must be symlinked and online - Identity topologyAuthority; - if (OSUtils::readFile("root-topology-authority.secret",buf)) - topologyAuthority.fromString(buf); - else std::cerr << "Warning: root-topology-authority.secret not found, creating unsigned topology." << std::endl; - - Dictionary topology; - - // Read template.dict to populate default fields in root topology - // if this file exists. Otherwise we just start empty. - buf.clear(); - if (OSUtils::readFile("template.dict",buf)) - topology.fromString(buf); - - // Read all entries in rootservers/ that correspond to rootserver entry dictionaries - // and add them to topology under rootservers/ subkey. - Dictionary rootservers; - std::vector rootserverDictionaries(OSUtils::listDirectory("rootservers")); - for(std::vector::const_iterator sn(rootserverDictionaries.begin());sn!=rootserverDictionaries.end();++sn) { - if (sn->length() == 10) { - buf.clear(); - if (!OSUtils::readFile((std::string("rootservers/")+(*sn)).c_str(),buf)) { - std::cerr << "Cannot read rootservers/" << *sn << std::endl; - return 1; - } - rootservers[*sn] = buf; - } - } - topology["rootservers"] = rootservers.toString(); - - if ((topologyAuthority)&&(topologyAuthority.hasPrivate())) { - // Sign topology with root-topology-authority.secret - if (!topology.sign(topologyAuthority,OSUtils::now())) { - std::cerr << "Unable to sign!" << std::endl; - return 1; - } - - // Test signature to make sure signing worked - Dictionary test(topology.toString()); - if (!test.verify(topologyAuthority)) { - std::cerr << "Test verification of signed dictionary failed!" << std::endl; - return 1; - } - } - - // Output to stdout - std::cout << topology.toString(); - - return 0; -} diff --git a/root-topology/rootservers/7e19876aba b/root-topology/rootservers/7e19876aba deleted file mode 100644 index 6bd8dc429..000000000 --- a/root-topology/rootservers/7e19876aba +++ /dev/null @@ -1,4 +0,0 @@ -id=7e19876aba:0:2a6e2b2318930f60eb097f70d0f4b028b2cd6d3d0c63c014b9039ff35390e41181f216fb2e6fa8d95c1ee9667156411905c3dccfea78d8c6dfafba688170b3fa -udp=198.199.97.220/9993 -tcp=198.199.97.220/443 -desc=San Francisco, California, USA diff --git a/root-topology/rootservers/8841408a2e b/root-topology/rootservers/8841408a2e deleted file mode 100644 index 3be3333e4..000000000 --- a/root-topology/rootservers/8841408a2e +++ /dev/null @@ -1,4 +0,0 @@ -id=8841408a2e:0:bb1d31f2c323e264e9e64172c1a74f77899555ed10751cd56e86405cde118d02dffe555d462ccf6a85b5631c12350c8d5dc409ba10b9025d0f445cf449d92b1c -udp=107.191.46.210/9993 -tcp=107.191.46.210/443 -desc=Paris, France diff --git a/root-topology/rootservers/8acf059fe3 b/root-topology/rootservers/8acf059fe3 deleted file mode 100644 index 4a569d95b..000000000 --- a/root-topology/rootservers/8acf059fe3 +++ /dev/null @@ -1,4 +0,0 @@ -id=8acf059fe3:0:482f6ee5dfe902319b419de5bdc765209c0ecda38c4d6e4fcf0d33658398b4527dcd22f93112fb9befd02fd78bf7261b333fc105d192a623ca9e50fc60b374a5 -udp=162.243.77.111/9993 -tcp=162.243.77.111/443 -desc=New York, New York, USA diff --git a/root-topology/rootservers/9d219039f3 b/root-topology/rootservers/9d219039f3 deleted file mode 100644 index ec9224336..000000000 --- a/root-topology/rootservers/9d219039f3 +++ /dev/null @@ -1,4 +0,0 @@ -id=9d219039f3:0:01f0922a98e3b34ebcbff333269dc265d7a020aab69d72be4d4acc9c8c9294785771256cd1d942a90d1bd1d2dca3ea84ef7d85afe6611fb43ff0b74126d90a6e -udp=128.199.197.217/9993 -tcp=128.199.197.217/443 -desc=Singapore diff --git a/root-topology/test/README.md b/root-topology/test/README.md deleted file mode 100644 index ae7022437..000000000 --- a/root-topology/test/README.md +++ /dev/null @@ -1,6 +0,0 @@ -Test Root Topology Script -====== - -This builds a test-root-topology from any number of running test-rootserver-# Docker containers. This can then be used with the (undocumented) -T (override root topology) option to run test networks under Docker. - -Once you have a local Docker test network running you can use iptables rules to simulate a variety of network pathologies, or you can just use it to test any new changes to the protocol or node behavior at some limited scale. diff --git a/root-topology/test/create-test-root-topology.sh b/root-topology/test/create-test-root-topology.sh deleted file mode 100755 index cb6287295..000000000 --- a/root-topology/test/create-test-root-topology.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -if [ ! -e ../mktopology ]; then - echo 'Build ../mktopology first!' - exit 1 -fi - -echo 'Populating rootservers/* with all Docker test-rootserver-* container IPs and identities...' - -rm -rf rootservers -mkdir rootservers - -for cid in `docker ps -f 'name=test-rootserver-*' -q`; do - id=`docker exec $cid cat /var/lib/zerotier-one/identity.secret | cut -d : -f 1-3` - ztaddr=`echo $id | cut -d : -f 1` - ip=`docker exec $cid ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'` - echo $cid $ztaddr $id $ip - echo "id=$id" >rootservers/$ztaddr - echo "udp=$ip/9993" >>rootservers/$ztaddr -done - -echo 'Creating test-root-topology...' - -rm -f test-root-topology -../mktopology >test-root-topology - -echo 'Done!' -echo -cat test-root-topology - -exit 0 diff --git a/selftest.cpp b/selftest.cpp index 4ba76c0b7..9c357dc4c 100644 --- a/selftest.cpp +++ b/selftest.cpp @@ -50,7 +50,6 @@ #include "node/C25519.hpp" #include "node/Poly1305.hpp" #include "node/CertificateOfMembership.hpp" -#include "node/Defaults.hpp" #include "node/Node.hpp" #include "node/IncomingPacket.hpp" From cae58f43f1b18017b90499811772d107ea2f65b9 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 13 Oct 2015 08:49:36 -0700 Subject: [PATCH 058/314] More World stuff, and mkworld. --- include/ZeroTierOne.h | 4 +- make-mac.mk | 6 +- mkworld.cpp | 153 ++++++++++++++++++++++++++++++++++++++++ node/IncomingPacket.cpp | 1 - node/Node.cpp | 24 +------ node/Node.hpp | 3 +- node/Packet.hpp | 6 +- node/Topology.cpp | 78 ++++++++++++-------- node/Topology.hpp | 22 +++++- node/World.hpp | 60 ++++++++++------ one.cpp | 16 +---- service/OneService.cpp | 9 +-- service/OneService.hpp | 4 +- 13 files changed, 281 insertions(+), 105 deletions(-) create mode 100644 mkworld.cpp diff --git a/include/ZeroTierOne.h b/include/ZeroTierOne.h index 80091f623..f69ab54cd 100644 --- a/include/ZeroTierOne.h +++ b/include/ZeroTierOne.h @@ -1023,7 +1023,6 @@ typedef int (*ZT_WirePacketSendFunction)( * @param dataStorePutFunction Function called to put objects in persistent storage * @param virtualNetworkConfigFunction Function to be called when virtual LANs are created, deleted, or their config parameters change * @param eventCallback Function to receive status updates and non-fatal error notices - * @param overrideRootTopology Alternative root server topology or NULL for default (mostly for test/debug use) * @return OK (0) or error code if a fatal error condition has occurred */ enum ZT_ResultCode ZT_Node_new( @@ -1035,8 +1034,7 @@ enum ZT_ResultCode ZT_Node_new( ZT_WirePacketSendFunction wirePacketSendFunction, ZT_VirtualNetworkFrameFunction virtualNetworkFrameFunction, ZT_VirtualNetworkConfigFunction virtualNetworkConfigFunction, - ZT_EventCallback eventCallback, - const char *overrideRootTopology); + ZT_EventCallback eventCallback); /** * Delete a node and free all resources it consumes diff --git a/make-mac.mk b/make-mac.mk index 6daa6aa0b..9fb613d88 100644 --- a/make-mac.mk +++ b/make-mac.mk @@ -79,6 +79,10 @@ selftest: $(OBJS) selftest.o $(CXX) $(CXXFLAGS) -o zerotier-selftest selftest.o $(OBJS) $(LIBS) $(STRIP) zerotier-selftest +mkworld: $(OBJS) + rm -f mkworld + $(CXX) $(CXXFLAGS) -o mkworld mkworld.cpp $(OBJS) $(LIBS) + # Requires Packages: http://s.sudre.free.fr/Software/Packages/about.html mac-dist-pkg: FORCE packagesbuild "ext/installfiles/mac/ZeroTier One.pkgproj" @@ -93,7 +97,7 @@ official: FORCE make ZT_OFFICIAL_RELEASE=1 mac-dist-pkg clean: - rm -rf *.dSYM build-* *.pkg *.dmg *.o node/*.o controller/*.o service/*.o osdep/*.o ext/http-parser/*.o ext/lz4/*.o ext/json-parser/*.o zerotier-one zerotier-idtool zerotier-selftest zerotier-cli ZeroTierOneInstaller-* + rm -rf *.dSYM build-* *.pkg *.dmg *.o node/*.o controller/*.o service/*.o osdep/*.o ext/http-parser/*.o ext/lz4/*.o ext/json-parser/*.o zerotier-one zerotier-idtool zerotier-selftest zerotier-cli ZeroTierOneInstaller-* mkworld # For those building from source -- installs signed binary tap driver in system ZT home install-mac-tap: FORCE diff --git a/mkworld.cpp b/mkworld.cpp new file mode 100644 index 000000000..2b41d735f --- /dev/null +++ b/mkworld.cpp @@ -0,0 +1,153 @@ +/* + * ZeroTier One - Network Virtualization Everywhere + * Copyright (C) 2011-2015 ZeroTier, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * -- + * + * ZeroTier may be used and distributed under the terms of the GPLv3, which + * are available at: http://www.gnu.org/licenses/gpl-3.0.html + * + * If you would like to embed ZeroTier into a commercial application or + * redistribute it in a modified binary form, please contact ZeroTier Networks + * LLC. Start here: http://www.zerotier.com/ + */ + +/* + * This utility makes the World from the configuration specified below. + * It probably won't be much use to anyone outside ZeroTier, Inc. except + * for testing and experimentation purposes. + * + * If you want to make your own World you must edit this file. + * + * When run, it expects two files in the current directory: + * + * previous.c25519 - key pair to sign this world (key from previous world) + * current.c25519 - key pair whose public key should be embedded in this world + * + * If these files do not exist, they are both created with the same key pair + * and a self-signed initial World is born. + */ + +#include +#include +#include +#include + +#include +#include +#include + +#include "node/Constants.hpp" +#include "node/World.hpp" +#include "node/C25519.hpp" +#include "node/Identity.hpp" +#include "node/InetAddress.hpp" +#include "osdep/OSUtils.hpp" + +using namespace ZeroTier; + +class WorldMaker : public World +{ +public: + static inline World make(uint64_t id,uint64_t ts,const C25519::Public &sk,const std::vector &roots,const C25519::Pair &signWith) + { + WorldMaker w; + w._id = id; + w._ts = ts; + w._updateSigningKey = sk; + w._roots = roots; + + Buffer tmp; + w.serialize(tmp,true); + w._signature = C25519::sign(signWith,tmp.data(),tmp.size()); + + return w; + } +}; + +int main(int argc,char **argv) +{ + std::string previous,current; + if ((!OSUtils::readFile("previous.c25519",previous))||(!OSUtils::readFile("current.c25519",current))) { + C25519::Pair np(C25519::generate()); + previous = std::string(); + previous.append((const char *)np.pub.data,ZT_C25519_PUBLIC_KEY_LEN); + previous.append((const char *)np.priv.data,ZT_C25519_PRIVATE_KEY_LEN); + current = previous; + OSUtils::writeFile("previous.c25519",previous); + OSUtils::writeFile("current.c25519",current); + fprintf(stderr,"INFO: created initial world keys: previous.c25519, current.c25519"ZT_EOL_S); + } + + if ((previous.length() != (ZT_C25519_PUBLIC_KEY_LEN + ZT_C25519_PRIVATE_KEY_LEN))||(current.length() != (ZT_C25519_PUBLIC_KEY_LEN + ZT_C25519_PRIVATE_KEY_LEN))) { + fprintf(stderr,"FATAL: previous.c25519 or current.c25519 empty or invalid"ZT_EOL_S); + return 1; + } + C25519::Pair previousKP; + memcpy(previousKP.pub.data,previous.data(),ZT_C25519_PUBLIC_KEY_LEN); + memcpy(previousKP.priv.data,previous.data() + ZT_C25519_PUBLIC_KEY_LEN,ZT_C25519_PRIVATE_KEY_LEN); + C25519::Pair currentKP; + memcpy(currentKP.pub.data,current.data(),ZT_C25519_PUBLIC_KEY_LEN); + memcpy(currentKP.priv.data,current.data() + ZT_C25519_PUBLIC_KEY_LEN,ZT_C25519_PRIVATE_KEY_LEN); + + // EDIT BELOW HERE --------------------------------------------------------- + + std::vector roots; + + // old US-SFO + roots.push_back(World::Root()); + roots.back().identity = Identity("7e19876aba:0:2a6e2b2318930f60eb097f70d0f4b028b2cd6d3d0c63c014b9039ff35390e41181f216fb2e6fa8d95c1ee9667156411905c3dccfea78d8c6dfafba688170b3fa"); + roots.back().stableEndpoints.push_back(InetAddress("198.199.97.220/9993")); + std::sort(roots.back().stableEndpoints.begin(),roots.back().stableEndpoints.end()); + + // old EU-PARIS + roots.push_back(World::Root()); + roots.back().identity = Identity("8841408a2e:0:bb1d31f2c323e264e9e64172c1a74f77899555ed10751cd56e86405cde118d02dffe555d462ccf6a85b5631c12350c8d5dc409ba10b9025d0f445cf449d92b1c"); + roots.back().stableEndpoints.push_back(InetAddress("107.191.46.210/9993")); + std::sort(roots.back().stableEndpoints.begin(),roots.back().stableEndpoints.end()); + + // old US-NYC + roots.push_back(World::Root()); + roots.back().identity = Identity("8acf059fe3:0:482f6ee5dfe902319b419de5bdc765209c0ecda38c4d6e4fcf0d33658398b4527dcd22f93112fb9befd02fd78bf7261b333fc105d192a623ca9e50fc60b374a5"); + roots.back().stableEndpoints.push_back(InetAddress("162.243.77.111/9993")); + std::sort(roots.back().stableEndpoints.begin(),roots.back().stableEndpoints.end()); + + // old AP-SNG + roots.push_back(World::Root()); + roots.back().identity = Identity("9d219039f3:0:01f0922a98e3b34ebcbff333269dc265d7a020aab69d72be4d4acc9c8c9294785771256cd1d942a90d1bd1d2dca3ea84ef7d85afe6611fb43ff0b74126d90a6e"); + roots.back().stableEndpoints.push_back(InetAddress("128.199.197.217/9993")); + std::sort(roots.back().stableEndpoints.begin(),roots.back().stableEndpoints.end()); + + std::sort(roots.begin(),roots.end()); + + const uint64_t id = ZT_WORLD_ID_EARTH; + const uint64_t ts = OSUtils::now(); + + // END WORLD SETUP --------------------------------------------------------- + + fprintf(stderr,"INFO: generating and signing id==%llu ts==%llu"ZT_EOL_S,(unsigned long long)id,(unsigned long long)ts); + + World nw = WorldMaker::make(id,ts,currentKP.pub,roots,previousKP); + + Buffer outtmp; + nw.serialize(outtmp,false); + fwrite(outtmp.data(),outtmp.size(),1,stdout); + fflush(stdout); + + fprintf(stderr,"INFO: wrote %u bytes to stdout"ZT_EOL_S,outtmp.size()); + + return 0; +} diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 9fcc2e494..39abe720b 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -33,7 +33,6 @@ #include "../include/ZeroTierOne.h" #include "Constants.hpp" -#include "Defaults.hpp" #include "RuntimeEnvironment.hpp" #include "IncomingPacket.hpp" #include "Topology.hpp" diff --git a/node/Node.cpp b/node/Node.cpp index 1eb219145..7496b045b 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -46,7 +46,6 @@ #include "Address.hpp" #include "Identity.hpp" #include "SelfAwareness.hpp" -#include "Defaults.hpp" const struct sockaddr_storage ZT_SOCKADDR_NULL = {0}; @@ -64,8 +63,7 @@ Node::Node( ZT_WirePacketSendFunction wirePacketSendFunction, ZT_VirtualNetworkFrameFunction virtualNetworkFrameFunction, ZT_VirtualNetworkConfigFunction virtualNetworkConfigFunction, - ZT_EventCallback eventCallback, - const char *overrideRootTopology) : + ZT_EventCallback eventCallback) : _RR(this), RR(&_RR), _uPtr(uptr), @@ -125,21 +123,6 @@ Node::Node( throw; } - Dictionary rt; - if (overrideRootTopology) { - rt.fromString(std::string(overrideRootTopology)); - } else { - std::string rttmp(dataStoreGet("root-topology")); - if (rttmp.length() > 0) { - rt.fromString(rttmp); - if (!Topology::authenticateRootTopology(rt)) - rt.clear(); - } - if ((!rt.size())||(!rt.contains("rootservers"))) - rt.fromString(ZT_DEFAULTS.defaultRootTopology); - } - RR->topology->setRootServers(Dictionary(rt.get("rootservers",""))); - postEvent(ZT_EVENT_UP); } @@ -609,12 +592,11 @@ enum ZT_ResultCode ZT_Node_new( ZT_WirePacketSendFunction wirePacketSendFunction, ZT_VirtualNetworkFrameFunction virtualNetworkFrameFunction, ZT_VirtualNetworkConfigFunction virtualNetworkConfigFunction, - ZT_EventCallback eventCallback, - const char *overrideRootTopology) + ZT_EventCallback eventCallback) { *node = (ZT_Node *)0; try { - *node = reinterpret_cast(new ZeroTier::Node(now,uptr,dataStoreGetFunction,dataStorePutFunction,wirePacketSendFunction,virtualNetworkFrameFunction,virtualNetworkConfigFunction,eventCallback,overrideRootTopology)); + *node = reinterpret_cast(new ZeroTier::Node(now,uptr,dataStoreGetFunction,dataStorePutFunction,wirePacketSendFunction,virtualNetworkFrameFunction,virtualNetworkConfigFunction,eventCallback)); return ZT_RESULT_OK; } catch (std::bad_alloc &exc) { return ZT_RESULT_FATAL_ERROR_OUT_OF_MEMORY; diff --git a/node/Node.hpp b/node/Node.hpp index 0ae176c0d..c7038ed40 100644 --- a/node/Node.hpp +++ b/node/Node.hpp @@ -71,8 +71,7 @@ public: ZT_WirePacketSendFunction wirePacketSendFunction, ZT_VirtualNetworkFrameFunction virtualNetworkFrameFunction, ZT_VirtualNetworkConfigFunction virtualNetworkConfigFunction, - ZT_EventCallback eventCallback, - const char *overrideRootTopology); + ZT_EventCallback eventCallback); ~Node(); diff --git a/node/Packet.hpp b/node/Packet.hpp index 958d0f3e7..939d84a51 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -540,6 +540,8 @@ public: * <[...] binary serialized identity (see Identity)> * <[1] destination address type> * [<[...] destination address>] + * <[8] 64-bit world ID of current world> + * <[8] 64-bit timestamp of current world> * * This is the only message that ever must be sent in the clear, since it * is used to push an identity to a new peer. @@ -564,8 +566,8 @@ public: * <[2] software revision (of responder)> * <[1] destination address type (for this OK, not copied from HELLO)> * [<[...] destination address>] - * <[8] 64-bit world ID of current world> - * <[8] 64-bit timestamp of current world> + * <[8] 64-bit world ID of current world (of responder)> + * <[8] 64-bit timestamp of current world (of responder)> * * ERROR has no payload. */ diff --git a/node/Topology.cpp b/node/Topology.cpp index 5aedae868..0cf4cfe84 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -42,23 +42,6 @@ Topology::Topology(const RuntimeEnvironment *renv) : RR(renv), _amRoot(false) { - try { - std::string dsWorld(RR->node->dataStoreGet("world")); - Buffer dswtmp(dsWorld.data(),dsWorld.length()); - _world.deserialize(dswtmp,0); - } catch ( ... ) { - _world = World(); // set to null if cached world is invalid - } - { - World defaultWorld; - Buffer wtmp(ZT_DEFAULT_WORLD,ZT_DEFAULT_WORLD_LENGTH); - defaultWorld.deserialize(wtmp,0); // throws on error, which would indicate a bad static variable up top - if (_world.verifyUpdate(defaultWorld)) { - _world = defaultWorld; - RR->node->dataStorePut("world",ZT_DEFAULT_WORLD,ZT_DEFAULT_WORLD_LENGTH,false); - } - } - std::string alls(RR->node->dataStoreGet("peers.save")); const uint8_t *all = reinterpret_cast(alls.data()); RR->node->dataStoreDelete("peers.save"); @@ -97,19 +80,24 @@ Topology::Topology(const RuntimeEnvironment *renv) : clean(RR->node->now()); - for(std::vector::const_iterator r(_world.roots().begin());r!=_world.roots().end();++r) { - if (r->identity == RR->identity) - _amRoot = true; - _rootAddresses.push_back(r->identity.address()); - SharedPtr *rp = _peers.get(r->identity.address()); - if (rp) { - _rootPeers.push_back(*rp); - } else if (r->identity.address() != RR->identity.address()) { - SharedPtr newrp(new Peer(RR->identity,r->identity)); - _peers.set(r->identity.address(),newrp); - _rootPeers.push_back(newrp); - } + std::string dsWorld(RR->node->dataStoreGet("world")); + World cachedWorld; + try { + Buffer dswtmp(dsWorld.data(),dsWorld.length()); + cachedWorld.deserialize(dswtmp,0); + } catch ( ... ) { + cachedWorld = World(); // clear if cached world is invalid } + World defaultWorld; + { + Buffer wtmp(ZT_DEFAULT_WORLD,ZT_DEFAULT_WORLD_LENGTH); + defaultWorld.deserialize(wtmp,0); // throws on error, which would indicate a bad static variable up top + } + if (cachedWorld.shouldBeReplacedBy(defaultWorld,false)) { + _setWorld(defaultWorld); + if (dsWorld.length() > 0) + RR->node->dataStoreDelete("world"); + } else _setWorld(cachedWorld); } Topology::~Topology() @@ -283,6 +271,16 @@ keep_searching_for_roots: return bestRoot; } +bool Topology::worldUpdateIfValid(const World &newWorld) +{ + Mutex::Lock _l(_lock); + if (_world.shouldBeReplacedBy(newWorld,true)) { + _setWorld(newWorld); + return true; + } + return false; +} + void Topology::clean(uint64_t now) { Mutex::Lock _l(_lock); @@ -320,4 +318,26 @@ void Topology::_saveIdentity(const Identity &id) } } +void Topology::_setWorld(const World &newWorld) +{ + // assumed _lock is locked (or in constructor) + _world = newWorld; + _amRoot = false; + _rootAddresses.clear(); + _rootPeers.clear(); + for(std::vector::const_iterator r(_world.roots().begin());r!=_world.roots().end();++r) { + if (r->identity == RR->identity) + _amRoot = true; + _rootAddresses.push_back(r->identity.address()); + SharedPtr *rp = _peers.get(r->identity.address()); + if (rp) { + _rootPeers.push_back(*rp); + } else if (r->identity.address() != RR->identity.address()) { + SharedPtr newrp(new Peer(RR->identity,r->identity)); + _peers.set(r->identity.address(),newrp); + _rootPeers.push_back(newrp); + } + } +} + } // namespace ZeroTier diff --git a/node/Topology.hpp b/node/Topology.hpp index ed8f3d865..3abc27e4a 100644 --- a/node/Topology.hpp +++ b/node/Topology.hpp @@ -31,10 +31,10 @@ #include #include -#include #include #include #include +#include #include "Constants.hpp" @@ -146,6 +146,23 @@ public: return _world; } + /** + * @return Pair containing world ID and world timestamp (faster than world().id() etc.) + */ + inline std::pair worldIdentification() const + { + Mutex::Lock _l(_lock); + return std::pair(_world.id(),_world.timestamp()); + } + + /** + * Validate new world and update if newer and signature is okay + * + * @param newWorld Potential new world definition revision + * @return True if an update actually occurred + */ + bool worldUpdateIfValid(const World &newWorld); + /** * Clean and flush database */ @@ -176,7 +193,7 @@ public: } /** - * @return All currently active peers by address + * @return All currently active peers by address (unsorted) */ inline std::vector< std::pair< Address,SharedPtr > > allPeers() const { @@ -187,6 +204,7 @@ public: private: Identity _getIdentity(const Address &zta); void _saveIdentity(const Identity &id); + void _setWorld(const World &newWorld); const RuntimeEnvironment *RR; diff --git a/node/World.hpp b/node/World.hpp index 0d26021f2..7ccd2c536 100644 --- a/node/World.hpp +++ b/node/World.hpp @@ -55,7 +55,7 @@ /** * The (more than) maximum length of a serialized World */ -#define ZT_WORLD_MAX_SERIALIZED_LENGTH (((1024 + (32 * ZT_WORLD_MAX_STABLE_ENDPOINTS_PER_ROOT)) * ZT_WORLD_MAX_ROOTS) + ZT_C25519_PUBLIC_KEY_LEN + ZT_C25519_SIGNATURE_LEN + 64) +#define ZT_WORLD_MAX_SERIALIZED_LENGTH (((1024 + (32 * ZT_WORLD_MAX_STABLE_ENDPOINTS_PER_ROOT)) * ZT_WORLD_MAX_ROOTS) + ZT_C25519_PUBLIC_KEY_LEN + ZT_C25519_SIGNATURE_LEN + 128) /** * World ID indicating null / empty World object @@ -68,15 +68,11 @@ #define ZT_WORLD_ID_TESTNET 1 /** - * World ID for Earth -- its approximate distance from the sun in kilometers + * World ID for Earth * * This is the ID for the ZeroTier World used on planet Earth. It is unrelated - * to the public network 8056c2e21c000001 of the same name. - * - * It's advisable to create a new World for network regions spaced more than - * 2-3 light seconds, since RTT times in excess of 5s are problematic for some - * protocols. Earth could therefore include its low and high orbits, the Moon, - * and nearby Lagrange points. + * to the public network 8056c2e21c000001 of the same name. It was chosen + * from Earth's approximate distance from the sun in kilometers. */ #define ZT_WORLD_ID_EARTH 149604618 @@ -90,9 +86,24 @@ namespace ZeroTier { /** * A world definition (formerly known as a root topology) * - * A world consists of a set of root servers and a signature scheme enabling - * it to be updated going forward. It defines a single ZeroTier VL1 network - * area within which any device can reach any other. + * Think of a World as a single data center. Within this data center a set + * of distributed fault tolerant root servers provide stable anchor points + * for a peer to peer network that provides VLAN service. Updates to a world + * definition can be published by signing them with the previous revision's + * signing key, and should be very infrequent. + * + * The maximum data center size is approximately 2.5 cubic light seconds, + * since many protocols have issues with >5s RTT latencies. + * + * ZeroTier operates a World for Earth capable of encompassing the planet, its + * orbits, the Moon (about 1.3 light seconds), and nearby Lagrange points. A + * world ID for Mars and nearby space is defined but not yet used, and a test + * world ID is provided for testing purposes. + * + * If you absolutely must run your own "unofficial" ZeroTier network, please + * define your world IDs above 0xffffffff (4294967295). Code to make a World + * is in mkworld.cpp in the parent directory and must be edited to change + * settings. */ class World { @@ -130,24 +141,28 @@ public: inline uint64_t timestamp() const throw() { return _ts; } /** - * Verify a world update + * Check whether a world update should replace this one * * A new world update is valid if it is for the same world ID, is newer, * and is signed by the current world's signing key. If this world object * is null, it can always be updated. * * @param update Candidate update + * @param fullSignatureCheck Perform full cryptographic signature check (true == yes, false == skip) * @return True if update is newer than current and is properly signed */ - inline bool verifyUpdate(const World &update) + inline bool shouldBeReplacedBy(const World &update,bool fullSignatureCheck) { if (_id == ZT_WORLD_ID_NULL) return true; - if ((update._id != _id)||(update._ts <= _ts)) - return false; - Buffer tmp; - update.serialize(tmp); - return C25519::verify(_updateSigningKey,tmp.data(),tmp.size(),update._signature); + if ((_id == update._id)&&(_ts < update._ts)) { + if (fullSignatureCheck) { + Buffer tmp; + update.serialize(tmp,true); + return C25519::verify(_updateSigningKey,tmp.data(),tmp.size(),update._signature); + } else return true; + } + return false; } /** @@ -156,13 +171,16 @@ public: inline operator bool() const throw() { return (_id != ZT_WORLD_ID_NULL); } template - inline void serialize(Buffer &b) const + inline void serialize(Buffer &b,bool forSign = false) const { + if (forSign) + b.append((uint64_t)0x7f7f7f7f7f7f7f7fULL); b.append((uint8_t)0x01); // version -- only one valid value for now b.append((uint64_t)_id); b.append((uint64_t)_ts); b.append(_updateSigningKey.data,ZT_C25519_PUBLIC_KEY_LEN); - b.append(_signature.data,ZT_C25519_SIGNATURE_LEN); + if (!forSign) + b.append(_signature.data,ZT_C25519_SIGNATURE_LEN); b.append((uint8_t)_roots.size()); for(std::vector::const_iterator r(_roots.begin());r!=_roots.end();++r) { r->identity.serialize(b); @@ -170,6 +188,8 @@ public: for(std::vector::const_iterator ep(r->stableEndpoints.begin());ep!=r->stableEndpoints.end();++ep) ep->serialize(b); } + if (forSign) + b.append((uint64_t)0xf7f7f7f7f7f7f7f7ULL); } template diff --git a/one.cpp b/one.cpp index a4d5190c9..c8661fda4 100644 --- a/one.cpp +++ b/one.cpp @@ -911,7 +911,6 @@ static void printHelp(const char *cn,FILE *out) fprintf(out," -v - Show version"ZT_EOL_S); fprintf(out," -U - Run as unprivileged user (skip privilege check)"ZT_EOL_S); fprintf(out," -p - Port for UDP and TCP/HTTP (default: 9993, 0 for random)"ZT_EOL_S); - //fprintf(out," -T - Override root topology, do not authenticate or update"ZT_EOL_S); #ifdef __UNIX_LIKE__ fprintf(out," -d - Fork and run as daemon (Unix-ish OSes)"ZT_EOL_S); @@ -974,7 +973,6 @@ int main(int argc,char **argv) if ((strstr(argv[0],"zerotier-cli"))||(strstr(argv[0],"ZEROTIER-CLI"))) return cli(argc,argv); - std::string overrideRootTopology; std::string homeDir; unsigned int port = ZT_DEFAULT_PORT; bool skipRootCheck = false; @@ -1001,18 +999,6 @@ int main(int argc,char **argv) skipRootCheck = true; break; - case 'T': // Override root topology - if (argv[i][2]) { - if (!OSUtils::readFile(argv[i] + 2,overrideRootTopology)) { - fprintf(stderr,"%s: cannot read root topology from %s"ZT_EOL_S,argv[0],argv[i] + 2); - return 1; - } - } else { - printHelp(argv[0],stdout); - return 1; - } - break; - case 'v': // Display version printf("%d.%d.%d"ZT_EOL_S,ZEROTIER_ONE_VERSION_MAJOR,ZEROTIER_ONE_VERSION_MINOR,ZEROTIER_ONE_VERSION_REVISION); return 0; @@ -1169,7 +1155,7 @@ int main(int argc,char **argv) try { for(;;) { - zt1Service = OneService::newInstance(homeDir.c_str(),port,(overrideRootTopology.length() > 0) ? overrideRootTopology.c_str() : (const char *)0); + zt1Service = OneService::newInstance(homeDir.c_str(),port); switch(zt1Service->run()) { case OneService::ONE_STILL_RUNNING: // shouldn't happen, run() won't return until done case OneService::ONE_NORMAL_TERMINATION: diff --git a/service/OneService.cpp b/service/OneService.cpp index 071a2cbce..6b28c41e6 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -418,14 +418,13 @@ struct TcpConnection class OneServiceImpl : public OneService { public: - OneServiceImpl(const char *hp,unsigned int port,const char *overrideRootTopology) : + OneServiceImpl(const char *hp,unsigned int port) : _homePath((hp) ? hp : "."), _tcpFallbackResolver(ZT_TCP_FALLBACK_RELAY), #ifdef ZT_ENABLE_NETWORK_CONTROLLER _controller((SqliteNetworkController *)0), #endif _phy(this,false,true), - _overrideRootTopology((overrideRootTopology) ? overrideRootTopology : ""), _node((Node *)0), _controlPlane((ControlPlane *)0), _lastDirectReceiveFromGlobal(0), @@ -550,8 +549,7 @@ public: SnodeWirePacketSendFunction, SnodeVirtualNetworkFrameFunction, SnodeVirtualNetworkConfigFunction, - SnodeEventCallback, - ((_overrideRootTopology.length() > 0) ? _overrideRootTopology.c_str() : (const char *)0)); + SnodeEventCallback); #ifdef ZT_ENABLE_NETWORK_CONTROLLER _controller = new SqliteNetworkController(_node,(_homePath + ZT_PATH_SEPARATOR_S + ZT_CONTROLLER_DB_PATH).c_str(),(_homePath + ZT_PATH_SEPARATOR_S + "circuitTestResults.d").c_str()); @@ -1329,7 +1327,6 @@ private: SqliteNetworkController *_controller; #endif Phy _phy; - std::string _overrideRootTopology; Node *_node; InetAddress _v4LocalAddress,_v6LocalAddress; PhySocket *_v4UdpSocket; @@ -1526,7 +1523,7 @@ std::string OneService::autoUpdateUrl() return std::string(); } -OneService *OneService::newInstance(const char *hp,unsigned int port,const char *overrideRootTopology) { return new OneServiceImpl(hp,port,overrideRootTopology); } +OneService *OneService::newInstance(const char *hp,unsigned int port) { return new OneServiceImpl(hp,port); } OneService::~OneService() {} } // namespace ZeroTier diff --git a/service/OneService.hpp b/service/OneService.hpp index 70d024bc1..2f76ebaa2 100644 --- a/service/OneService.hpp +++ b/service/OneService.hpp @@ -95,12 +95,10 @@ public: * * @param hp Home path * @param port TCP and UDP port for packets and HTTP control (if 0, pick random port) - * @param overrideRootTopology String-serialized root topology (for testing, default: NULL) */ static OneService *newInstance( const char *hp, - unsigned int port, - const char *overrideRootTopology = (const char *)0); + unsigned int port); virtual ~OneService(); From 05677f57e2e6bed58467198f4e65b68a236b00c2 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 13 Oct 2015 08:55:21 -0700 Subject: [PATCH 059/314] Add C output to mkworld. --- .gitignore | 1 + mkworld.cpp | 17 +++++++++++++++++ node/World.hpp | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b5d71690f..1cb16da59 100755 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ Thumbs.db /ZeroTierOneInstaller-* /examples/docker/zerotier-one /examples/docker/test-*.env +/mkworld # Miscellaneous file types that we don't want to check in *.log diff --git a/mkworld.cpp b/mkworld.cpp index 2b41d735f..baf693fcb 100644 --- a/mkworld.cpp +++ b/mkworld.cpp @@ -144,10 +144,27 @@ int main(int argc,char **argv) Buffer outtmp; nw.serialize(outtmp,false); + World testw; + testw.deserialize(outtmp,0); + if (testw != nw) { + fprintf(stderr,"FATAL: serialization test failed!"ZT_EOL_S); + return 1; + } fwrite(outtmp.data(),outtmp.size(),1,stdout); fflush(stdout); fprintf(stderr,"INFO: wrote %u bytes to stdout"ZT_EOL_S,outtmp.size()); + fprintf(stderr,ZT_EOL_S); + fprintf(stderr,"#define ZT_DEFAULT_WORLD_LENGTH %u"ZT_EOL_S,outtmp.size()); + fprintf(stderr,"static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {"); + for(unsigned int i=0;i 0) + fprintf(stderr,","); + fprintf(stderr,"0x%.2x",(unsigned int)d[i]); + } + fprintf(stderr,"};"ZT_EOL_S); + return 0; } diff --git a/node/World.hpp b/node/World.hpp index 7ccd2c536..c6d20d842 100644 --- a/node/World.hpp +++ b/node/World.hpp @@ -225,7 +225,7 @@ public: return (p - startAt); } - inline bool operator==(const World &w) const throw() { return ((_id == w._id)&&(_ts == w._ts)&&(_roots == w._roots)); } + inline bool operator==(const World &w) const throw() { return ((_id == w._id)&&(_ts == w._ts)&&(_updateSigningKey == w._updateSigningKey)&&(_signature == w._signature)&&(_roots == w._roots)); } inline bool operator!=(const World &w) const throw() { return (!(*this == w)); } protected: From 5d2f523e81a56a33405d2b98ccef9d384e269f34 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 13 Oct 2015 12:10:44 -0700 Subject: [PATCH 060/314] World stuff... --- .gitignore | 3 +- include/ZeroTierOne.h | 5 --- make-mac.mk | 4 -- node/IncomingPacket.cpp | 34 ++++++++++++--- node/Node.cpp | 39 ++++++++++------- node/Packet.hpp | 35 ++------------- node/Peer.cpp | 71 ++++--------------------------- node/Peer.hpp | 25 ++--------- node/RemotePath.hpp | 26 ++--------- node/Topology.cpp | 11 ++++- node/Topology.hpp | 15 +++++-- service/ControlPlane.cpp | 2 - world/2015-10-13.bin | Bin 0 -> 494 bytes world/2015-10-13.out | 6 +++ mkworld.cpp => world/mkworld.cpp | 0 15 files changed, 101 insertions(+), 175 deletions(-) create mode 100644 world/2015-10-13.bin create mode 100644 world/2015-10-13.out rename mkworld.cpp => world/mkworld.cpp (100%) diff --git a/.gitignore b/.gitignore index 1cb16da59..2dbec1e5a 100755 --- a/.gitignore +++ b/.gitignore @@ -31,7 +31,8 @@ Thumbs.db /ZeroTierOneInstaller-* /examples/docker/zerotier-one /examples/docker/test-*.env -/mkworld +/world/mkworld +/world/*.c25519 # Miscellaneous file types that we don't want to check in *.log diff --git a/include/ZeroTierOne.h b/include/ZeroTierOne.h index f69ab54cd..38db32224 100644 --- a/include/ZeroTierOne.h +++ b/include/ZeroTierOne.h @@ -582,11 +582,6 @@ typedef struct */ uint64_t lastReceive; - /** - * Is path fixed? (i.e. not learned, static) - */ - int fixed; - /** * Is path active? */ diff --git a/make-mac.mk b/make-mac.mk index 9fb613d88..174216fb1 100644 --- a/make-mac.mk +++ b/make-mac.mk @@ -79,10 +79,6 @@ selftest: $(OBJS) selftest.o $(CXX) $(CXXFLAGS) -o zerotier-selftest selftest.o $(OBJS) $(LIBS) $(STRIP) zerotier-selftest -mkworld: $(OBJS) - rm -f mkworld - $(CXX) $(CXXFLAGS) -o mkworld mkworld.cpp $(OBJS) $(LIBS) - # Requires Packages: http://s.sudre.free.fr/Software/Packages/about.html mac-dist-pkg: FORCE packagesbuild "ext/installfiles/mac/ZeroTier One.pkgproj" diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 39abe720b..3c6268ede 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -42,6 +42,7 @@ #include "SelfAwareness.hpp" #include "Salsa20.hpp" #include "SHA512.hpp" +#include "World.hpp" namespace ZeroTier { @@ -199,10 +200,18 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) const uint64_t timestamp = at(ZT_PROTO_VERB_HELLO_IDX_TIMESTAMP); Identity id; - const unsigned int destAddrPtr = ZT_PROTO_VERB_HELLO_IDX_IDENTITY + id.deserialize(*this,ZT_PROTO_VERB_HELLO_IDX_IDENTITY); InetAddress destAddr; - if (destAddrPtr < size()) // ZeroTier One < 1.0.3 did not include this field - destAddr.deserialize(*this,destAddrPtr); + uint64_t worldId = ZT_WORLD_ID_NULL; + uint64_t worldTimestamp = 0; + { + unsigned int ptr = ZT_PROTO_VERB_HELLO_IDX_IDENTITY + id.deserialize(*this,ZT_PROTO_VERB_HELLO_IDX_IDENTITY); + if (ptr < size()) // ZeroTier One < 1.0.3 did not include physical destination address info + ptr += destAddr.deserialize(*this,ptr); + if ((ptr + 16) <= size()) { // older versions also did not include World IDs or timestamps + worldId = at(ptr); ptr += 8; + worldTimestamp = at(ptr); + } + } if (protoVersion < ZT_PROTO_VERSION_MIN) { TRACE("dropped HELLO from %s(%s): protocol version too old",id.address().toString().c_str(),_remoteAddress.toString().c_str()); @@ -286,8 +295,23 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) outp.append((unsigned char)ZEROTIER_ONE_VERSION_MINOR); outp.append((uint16_t)ZEROTIER_ONE_VERSION_REVISION); _remoteAddress.serialize(outp); - outp.armor(peer->key(),true); - RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); + + if ((worldId != ZT_WORLD_ID_NULL)&&(worldId == RR->topology->worldId())) { + if (RR->topology->worldTimestamp() > worldTimestamp) { + World w(RR->topology->world()); + const unsigned int sizeAt = outp.size(); + outp.addSize(2); // make room for 16-bit size field + w.serialize(outp,false); + outp.setAt(sizeAt,(uint16_t)(outp.size() - sizeAt)); + } else { + outp.append((uint16_t)0); // no world update needed + } + + outp.armor(peer->key(),true); + RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); + } else { + TRACE("dropped HELLO from %s(%s): world ID mismatch: peer is %llu and we are %llu",source().toString().c_str(),_remoteAddress.toString().c_str(),worldId,RR->topology->worldId()); + } } catch ( ... ) { TRACE("dropped HELLO from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } diff --git a/node/Node.cpp b/node/Node.cpp index 7496b045b..5468f1028 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -177,37 +177,47 @@ public: RR(renv), _now(now), _relays(relays), - _rootAddresses(RR->topology->rootAddresses()) + _world(RR->topology->world()) { } - uint64_t lastReceiveFromUpstream; + uint64_t lastReceiveFromUpstream; // tracks last time we got a packet from an 'upstream' peer like a root or a relay inline void operator()(Topology &t,const SharedPtr &p) { - bool isRelay = false; - for(std::vector< std::pair >::const_iterator r(_relays.begin());r!=_relays.end();++r) { - if (r->first == p->address()) { - isRelay = true; + bool upstream = false; + InetAddress stableEndpoint; + for(std::vector::const_iterator r(_world.roots().begin());r!=_world.roots().end();++r) { + if (r->identity.address() == p->address()) { + if (r->stableEndpoints.size() > 0) + stableEndpoint = r->stableEndpoints[(unsigned long)RR->node->prng() % r->stableEndpoints.size()]; + upstream = true; break; } } - if ((isRelay)||(std::find(_rootAddresses.begin(),_rootAddresses.end(),p->address()) != _rootAddresses.end())) { - p->doPingAndKeepalive(RR,_now); - if (p->lastReceive() > lastReceiveFromUpstream) - lastReceiveFromUpstream = p->lastReceive(); - } else { - if (p->alive(_now)) - p->doPingAndKeepalive(RR,_now); + if (!upstream) { + for(std::vector< std::pair >::const_iterator r(_relays.begin());r!=_relays.end();++r) { + if (r->first == p->address()) { + stableEndpoint = r->second; + upstream = true; + break; + } + } } + + if ((!p->doPingAndKeepalive(RR,_now))&&(stableEndpoint)) + p->attemptToContactAt(RR,InetAddress(),stableEndpoint,_now); + + if (upstream) + lastReceiveFromUpstream = std::max(p->lastReceive(),lastReceiveFromUpstream); } private: const RuntimeEnvironment *RR; uint64_t _now; const std::vector< std::pair > &_relays; - std::vector

_rootAddresses; + World _world; }; ZT_ResultCode Node::processBackgroundTasks(uint64_t now,volatile uint64_t *nextBackgroundTaskDeadline) @@ -376,7 +386,6 @@ ZT_PeerList *Node::peers() const memcpy(&(p->paths[p->pathCount].address),&(path->address()),sizeof(struct sockaddr_storage)); p->paths[p->pathCount].lastSend = path->lastSend(); p->paths[p->pathCount].lastReceive = path->lastReceived(); - p->paths[p->pathCount].fixed = path->fixed() ? 1 : 0; p->paths[p->pathCount].active = path->active(_now) ? 1 : 0; p->paths[p->pathCount].preferred = ((bestPath)&&(*path == *bestPath)) ? 1 : 0; ++p->pathCount; diff --git a/node/Packet.hpp b/node/Packet.hpp index 939d84a51..810f5d67e 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -566,8 +566,8 @@ public: * <[2] software revision (of responder)> * <[1] destination address type (for this OK, not copied from HELLO)> * [<[...] destination address>] - * <[8] 64-bit world ID of current world (of responder)> - * <[8] 64-bit timestamp of current world (of responder)> + * <[2] 16-bit length of world update or 0 if none> + * [[...] world update] * * ERROR has no payload. */ @@ -1098,36 +1098,7 @@ public: * * ERROR has no payload. */ - VERB_REQUEST_PROOF_OF_WORK = 19, - - /** - * Generic binary object access: - * <[8] 64-bit request ID> - * <[4] 32-bit index in blob to retrieve> - * <[2] 16-bit max length of block to retrieve> - * <[2] 16-bit length of blob identifier> - * <[...] blob identifier> - * - * This is used as a generic remote object retrieval mechanism. It returns - * OK if the object is accessible, INVALID_REQUEST if the index is beyond - * the size of the blob or another element is invalid, and OBJ_NOT_FOUND - * if no blob with the given identifier is available. - * - * Blob identifiers follow a de facto path-like schema, with the following - * names reserved: - * world - Current world definition (see World.hpp) - * updates.d/ - Software updates (not used yet, but reserved) - * - * OK payload: - * <[8] 64-bit request ID> - * <[4] 32-bit total length of blob> - * <[4] 32-bit index of this data in blob> - * <[...] data> - * - * ERROR payload: - * <[8] 64-bit request ID> - */ - VERB_GET_OBJECT = 20 + VERB_REQUEST_PROOF_OF_WORK = 19 }; /** diff --git a/node/Peer.cpp b/node/Peer.cpp index 111c849e7..697ba75d7 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -108,17 +108,16 @@ void Peer::received( // Add new path slot = &(_paths[np++]); } else { - // Replace oldest non-fixed path uint64_t slotLRmin = 0xffffffffffffffffULL; for(unsigned int p=0;preceived(now); _numPaths = np; pathIsConfirmed = true; @@ -172,12 +171,15 @@ void Peer::attemptToContactAt(const RuntimeEnvironment *RR,const InetAddress &lo outp.append(now); RR->identity.serialize(outp,false); atAddress.serialize(outp); + outp.append((uint64_t)RR->topology->worldId()); + outp.append((uint64_t)RR->topology->worldTimestamp()); + outp.armor(_key,false); // HELLO is sent in the clear RR->antiRec->logOutgoingZT(outp.data(),outp.size()); RR->node->putPacket(localAddr,atAddress,outp.data(),outp.size()); } -void Peer::doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now) +RemotePath *Peer::doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now) { Mutex::Lock _l(_lock); RemotePath *const bestPath = _getBestPath(now); @@ -193,6 +195,7 @@ void Peer::doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now) bestPath->sent(now); } } + return bestPath; } void Peer::pushDirectPaths(const RuntimeEnvironment *RR,RemotePath *path,uint64_t now,bool force) @@ -269,59 +272,6 @@ void Peer::pushDirectPaths(const RuntimeEnvironment *RR,RemotePath *path,uint64_ } } -void Peer::addPath(const RemotePath &newp,uint64_t now) -{ - Mutex::Lock _l(_lock); - - unsigned int np = _numPaths; - - for(unsigned int p=0;p dswtmp; + newWorld.serialize(dswtmp,false); + RR->node->dataStorePut("world",dswtmp.data(),dswtmp.size(),false); + } catch ( ... ) { + RR->node->dataStoreDelete("world"); + } return true; } return false; diff --git a/node/Topology.hpp b/node/Topology.hpp index 3abc27e4a..6f0170f00 100644 --- a/node/Topology.hpp +++ b/node/Topology.hpp @@ -147,12 +147,19 @@ public: } /** - * @return Pair containing world ID and world timestamp (faster than world().id() etc.) + * @return Current world ID */ - inline std::pair worldIdentification() const + inline uint64_t worldId() const { - Mutex::Lock _l(_lock); - return std::pair(_world.id(),_world.timestamp()); + return _world.id(); // safe to read without lock, and used from within eachPeer() so don't lock + } + + /** + * @return Current world timestamp + */ + inline uint64_t worldTimestamp() const + { + return _world.timestamp(); // safe to read without lock, and used from within eachPeer() so don't lock } /** diff --git a/service/ControlPlane.cpp b/service/ControlPlane.cpp index 6e731bdc3..dd755a309 100644 --- a/service/ControlPlane.cpp +++ b/service/ControlPlane.cpp @@ -182,14 +182,12 @@ static std::string _jsonEnumerate(unsigned int depth,const ZT_PeerPhysicalPath * "%s\t\"address\": \"%s\",\n" "%s\t\"lastSend\": %llu,\n" "%s\t\"lastReceive\": %llu,\n" - "%s\t\"fixed\": %s,\n" "%s\t\"active\": %s,\n" "%s\t\"preferred\": %s\n" "%s}", prefix,_jsonEscape(reinterpret_cast(&(pp[i].address))->toString()).c_str(), prefix,pp[i].lastSend, prefix,pp[i].lastReceive, - prefix,(pp[i].fixed == 0) ? "false" : "true", prefix,(pp[i].active == 0) ? "false" : "true", prefix,(pp[i].preferred == 0) ? "false" : "true", prefix); diff --git a/world/2015-10-13.bin b/world/2015-10-13.bin new file mode 100644 index 0000000000000000000000000000000000000000..433a7763e7917a3b81d046d6760bace1576d66f0 GIT binary patch literal 494 zcmV&irwa%W#1ZrW6my3NF+UIhn5qGx+QPPu%95sOi_CTdkM6ohCEt+F`&n^hT}mq1b!KZYPtX_ZYv`glMi6)34d_V^sp$h z&22plW55)-1E2F#kmM18@)r9pZ>ZT^9_eOrRzVpB!`#p6c-Y3@uexY~aI^XV0R+a! zVcaJPh(SP#E&#h7G4jJB;$-ROL2|*TPj`uxRqYUU9Mx`yKwRDtjRN2PRb56b&uWFW zV;mAS42@mH3Azxu0$mS8T=YrVD;xj;1Z%%8(kBUu&jp|307x%x<=^Q7F`Gf1<-Nyc zAe;`(ql`^%PtOfAWrLWsQhm)L`7sjvoA1ys*NgWi8#6z_1<{hGBg&po{9v literal 0 HcmV?d00001 diff --git a/world/2015-10-13.out b/world/2015-10-13.out new file mode 100644 index 000000000..754e06921 --- /dev/null +++ b/world/2015-10-13.out @@ -0,0 +1,6 @@ +INFO: created initial world keys: previous.c25519, current.c25519 +INFO: generating and signing id==149604618 ts==1442567945403 +INFO: wrote 494 bytes to stdout + +#define ZT_DEFAULT_WORLD_LENGTH 494 +static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x4f,0xdf,0xbf,0xfc,0xbb,0x6c,0x7e,0x15,0x67,0x85,0x1b,0xb4,0x65,0x04,0x01,0xaf,0x56,0xbf,0xe7,0x63,0x9d,0x77,0xef,0xa4,0x1e,0x61,0x53,0x88,0xcb,0x8d,0x78,0xe5,0x47,0x38,0x98,0x5a,0x6c,0x8a,0xdd,0xe6,0x9c,0x65,0xdf,0x1a,0x80,0x63,0xce,0x2e,0x4d,0x48,0x24,0x3d,0x68,0x87,0x96,0x13,0x89,0xba,0x25,0x6f,0xc9,0xb0,0x9f,0x20,0xc5,0x4c,0x51,0x7b,0x30,0xb7,0x5f,0xba,0xca,0xa4,0xc5,0x48,0xa3,0x15,0xab,0x2f,0x1d,0x64,0xe8,0x04,0x42,0xb3,0x1c,0x51,0x8b,0x2a,0x04,0x01,0xf8,0xe1,0x81,0xaf,0x60,0x2f,0x70,0x3e,0xcd,0x0b,0x21,0x38,0x19,0x62,0x02,0xbd,0x0e,0x33,0x1d,0x0a,0x7b,0xf1,0xec,0xad,0xef,0x54,0xb3,0x7b,0x17,0x84,0xaa,0xda,0x0a,0x85,0x5d,0x0b,0x1c,0x05,0x83,0xb9,0x0e,0x3e,0xe3,0xb4,0xd1,0x8b,0x5b,0x64,0xf7,0xcf,0xe1,0xff,0x5d,0xc2,0x2a,0xcf,0x60,0x7b,0x09,0xb4,0xa3,0x86,0x3c,0x5a,0x7e,0x31,0xa0,0xc7,0xb4,0x86,0xe3,0x41,0x33,0x04,0x7e,0x19,0x87,0x6a,0xba,0x00,0x2a,0x6e,0x2b,0x23,0x18,0x93,0x0f,0x60,0xeb,0x09,0x7f,0x70,0xd0,0xf4,0xb0,0x28,0xb2,0xcd,0x6d,0x3d,0x0c,0x63,0xc0,0x14,0xb9,0x03,0x9f,0xf3,0x53,0x90,0xe4,0x11,0x81,0xf2,0x16,0xfb,0x2e,0x6f,0xa8,0xd9,0x5c,0x1e,0xe9,0x66,0x71,0x56,0x41,0x19,0x05,0xc3,0xdc,0xcf,0xea,0x78,0xd8,0xc6,0xdf,0xaf,0xba,0x68,0x81,0x70,0xb3,0xfa,0x00,0x01,0x04,0xc6,0xc7,0x61,0xdc,0x27,0x09,0x88,0x41,0x40,0x8a,0x2e,0x00,0xbb,0x1d,0x31,0xf2,0xc3,0x23,0xe2,0x64,0xe9,0xe6,0x41,0x72,0xc1,0xa7,0x4f,0x77,0x89,0x95,0x55,0xed,0x10,0x75,0x1c,0xd5,0x6e,0x86,0x40,0x5c,0xde,0x11,0x8d,0x02,0xdf,0xfe,0x55,0x5d,0x46,0x2c,0xcf,0x6a,0x85,0xb5,0x63,0x1c,0x12,0x35,0x0c,0x8d,0x5d,0xc4,0x09,0xba,0x10,0xb9,0x02,0x5d,0x0f,0x44,0x5c,0xf4,0x49,0xd9,0x2b,0x1c,0x00,0x01,0x04,0x6b,0xbf,0x2e,0xd2,0x27,0x09,0x8a,0xcf,0x05,0x9f,0xe3,0x00,0x48,0x2f,0x6e,0xe5,0xdf,0xe9,0x02,0x31,0x9b,0x41,0x9d,0xe5,0xbd,0xc7,0x65,0x20,0x9c,0x0e,0xcd,0xa3,0x8c,0x4d,0x6e,0x4f,0xcf,0x0d,0x33,0x65,0x83,0x98,0xb4,0x52,0x7d,0xcd,0x22,0xf9,0x31,0x12,0xfb,0x9b,0xef,0xd0,0x2f,0xd7,0x8b,0xf7,0x26,0x1b,0x33,0x3f,0xc1,0x05,0xd1,0x92,0xa6,0x23,0xca,0x9e,0x50,0xfc,0x60,0xb3,0x74,0xa5,0x00,0x01,0x04,0xa2,0xf3,0x4d,0x6f,0x27,0x09,0x9d,0x21,0x90,0x39,0xf3,0x00,0x01,0xf0,0x92,0x2a,0x98,0xe3,0xb3,0x4e,0xbc,0xbf,0xf3,0x33,0x26,0x9d,0xc2,0x65,0xd7,0xa0,0x20,0xaa,0xb6,0x9d,0x72,0xbe,0x4d,0x4a,0xcc,0x9c,0x8c,0x92,0x94,0x78,0x57,0x71,0x25,0x6c,0xd1,0xd9,0x42,0xa9,0x0d,0x1b,0xd1,0xd2,0xdc,0xa3,0xea,0x84,0xef,0x7d,0x85,0xaf,0xe6,0x61,0x1f,0xb4,0x3f,0xf0,0xb7,0x41,0x26,0xd9,0x0a,0x6e,0x00,0x01,0x04,0x80,0xc7,0xc5,0xd9,0x27,0x09}; diff --git a/mkworld.cpp b/world/mkworld.cpp similarity index 100% rename from mkworld.cpp rename to world/mkworld.cpp From 123c466843fb910c5496cf6218e56678bd4b43ba Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 13 Oct 2015 12:17:47 -0700 Subject: [PATCH 061/314] Full integration of World and World updates. --- node/IncomingPacket.cpp | 17 ++++++++++++++--- world/README.md | 6 ++++++ 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 world/README.md diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 3c6268ede..79a700f66 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -335,9 +335,21 @@ bool IncomingPacket::_doOK(const RuntimeEnvironment *RR,const SharedPtr &p const unsigned int vMinor = (*this)[ZT_PROTO_VERB_HELLO__OK__IDX_MINOR_VERSION]; const unsigned int vRevision = at(ZT_PROTO_VERB_HELLO__OK__IDX_REVISION); + const bool trusted = RR->topology->isRoot(peer->identity()); + InetAddress destAddr; - if ((ZT_PROTO_VERB_HELLO__OK__IDX_REVISION + 2) < size()) // ZeroTier One < 1.0.3 did not include this field - destAddr.deserialize(*this,ZT_PROTO_VERB_HELLO__OK__IDX_REVISION + 2); + unsigned int ptr = ZT_PROTO_VERB_HELLO__OK__IDX_REVISION + 2; + if (ptr < size()) // ZeroTier One < 1.0.3 did not include this field + ptr += destAddr.deserialize(*this,ptr); + if ((trusted)&&((ptr + 2) <= size())) { // older versions also did not include this field, and right now we only use if from a root + World worldUpdate; + const unsigned int worldLen = at(ptr); ptr += 2; + if (worldLen > 0) { + World w; + w.deserialize(*this,ptr); + RR->topology->worldUpdateIfValid(w); + } + } if (vProto < ZT_PROTO_VERSION_MIN) { TRACE("%s(%s): OK(HELLO) dropped, protocol version too old",source().toString().c_str(),_remoteAddress.toString().c_str()); @@ -349,7 +361,6 @@ bool IncomingPacket::_doOK(const RuntimeEnvironment *RR,const SharedPtr &p peer->addDirectLatencyMeasurment(latency); peer->setRemoteVersion(vProto,vMajor,vMinor,vRevision); - bool trusted = RR->topology->isRoot(peer->identity()); if (destAddr) RR->sa->iam(peer->address(),_remoteAddress,destAddr,trusted,RR->node->now()); } break; diff --git a/world/README.md b/world/README.md new file mode 100644 index 000000000..4e0820e66 --- /dev/null +++ b/world/README.md @@ -0,0 +1,6 @@ +World Definitions and Generator Code +====== + +This code can be used to generate a world definition. Actual generation was performed on an airgapped secure system. + +Ordinary users probably will not need to use this. From e268d9492a2357a324345fb94a3f03645a341876 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 13 Oct 2015 12:18:47 -0700 Subject: [PATCH 062/314] cleanup --- node/Topology.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/node/Topology.cpp b/node/Topology.cpp index cdecfdae0..8b5deffc8 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -28,7 +28,6 @@ #include "Constants.hpp" #include "Topology.hpp" #include "RuntimeEnvironment.hpp" -#include "Dictionary.hpp" #include "Node.hpp" #include "Buffer.hpp" From 71348f3ebbc84fe31d15bb0aa0f6b2b6e158cf28 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 13 Oct 2015 12:29:01 -0700 Subject: [PATCH 063/314] docs --- world/README.md | 7 +++++-- world/mkworld.cpp | 12 ++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/world/README.md b/world/README.md index 4e0820e66..fbd8a0ae3 100644 --- a/world/README.md +++ b/world/README.md @@ -1,6 +1,9 @@ World Definitions and Generator Code ====== -This code can be used to generate a world definition. Actual generation was performed on an airgapped secure system. +This little bit of code is used to generate world updates. Ordinary users probably will never need this unless they want to test or experiment. + +See mkworld.cpp for documentation. To build from this directory: + + c++ -o mkworld ../node/C25519.cpp ../node/Salsa20.cpp ../node/SHA512.cpp ../node/Identity.cpp ../node/Utils.cpp ../node/InetAddress.cpp ../osdep/OSUtils.cpp mkworld.cpp -Ordinary users probably will not need to use this. diff --git a/world/mkworld.cpp b/world/mkworld.cpp index baf693fcb..75230da42 100644 --- a/world/mkworld.cpp +++ b/world/mkworld.cpp @@ -50,12 +50,12 @@ #include #include -#include "node/Constants.hpp" -#include "node/World.hpp" -#include "node/C25519.hpp" -#include "node/Identity.hpp" -#include "node/InetAddress.hpp" -#include "osdep/OSUtils.hpp" +#include "../node/Constants.hpp" +#include "../node/World.hpp" +#include "../node/C25519.hpp" +#include "../node/Identity.hpp" +#include "../node/InetAddress.hpp" +#include "../osdep/OSUtils.hpp" using namespace ZeroTier; From 70d8e3ad94076c51b05b4165cbd68a91806dbde7 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 13 Oct 2015 12:31:38 -0700 Subject: [PATCH 064/314] Expose world ID and world timestamp in ZT_NodeStatus --- include/ZeroTierOne.h | 10 ++++++++++ node/Node.cpp | 2 ++ 2 files changed, 12 insertions(+) diff --git a/include/ZeroTierOne.h b/include/ZeroTierOne.h index 38db32224..42c904ebf 100644 --- a/include/ZeroTierOne.h +++ b/include/ZeroTierOne.h @@ -275,6 +275,16 @@ typedef struct */ uint64_t address; + /** + * Current world ID + */ + uint64_t worldId; + + /** + * Current world revision/timestamp + */ + uint64_t worldTimestamp; + /** * Public identity in string-serialized form (safe to send to others) * diff --git a/node/Node.cpp b/node/Node.cpp index 5468f1028..be37b7c7c 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -345,6 +345,8 @@ uint64_t Node::address() const void Node::status(ZT_NodeStatus *status) const { status->address = RR->identity.address().toInt(); + status->worldId = RR->topology->worldId(); + status->worldTimestamp = RR->topology->worldTimestamp(); status->publicIdentity = RR->publicIdentityStr.c_str(); status->secretIdentity = RR->secretIdentityStr.c_str(); status->online = _online ? 1 : 0; From 385f1410d24c37ef9cd8a3494a5eaa383ffd0fba Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 13 Oct 2015 12:33:15 -0700 Subject: [PATCH 065/314] Expose world info in JSON. --- service/ControlPlane.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/service/ControlPlane.cpp b/service/ControlPlane.cpp index dd755a309..7affb08c6 100644 --- a/service/ControlPlane.cpp +++ b/service/ControlPlane.cpp @@ -360,6 +360,8 @@ unsigned int ControlPlane::handleRequest( "{\n" "\t\"address\": \"%.10llx\",\n" "\t\"publicIdentity\": \"%s\",\n" + "\t\"worldId\": %llu,\n" + "\t\"worldTimestamp\": %llu,\n" "\t\"online\": %s,\n" "\t\"tcpFallbackActive\": %s,\n" "\t\"versionMajor\": %d,\n" @@ -370,6 +372,8 @@ unsigned int ControlPlane::handleRequest( "}\n", status.address, status.publicIdentity, + status.worldId, + status.worldTimestamp, (status.online) ? "true" : "false", (_svc->tcpFallbackActive()) ? "true" : "false", ZEROTIER_ONE_VERSION_MAJOR, From 824ed99160607ddf42a520f46f65c17e4abe9bd0 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 13 Oct 2015 12:42:54 -0700 Subject: [PATCH 066/314] . --- node/Packet.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/node/Packet.hpp b/node/Packet.hpp index 810f5d67e..e03190a25 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -59,6 +59,7 @@ * + New identity format based on hashcash design * 5 - 1.0.6 ... CURRENT * + Supports circuit test, proof of work, and echo + * + Supports in-band world (root definition) updates * + Otherwise backward compatible with 4 */ #define ZT_PROTO_VERSION 5 From 489e1a5b8339403288a4a88b91ae01cb0092ddca Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 13 Oct 2015 13:51:54 -0700 Subject: [PATCH 067/314] Don't keep connections up longer than the alive timeout (unless they are relays or roots) --- node/Node.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/node/Node.cpp b/node/Node.cpp index be37b7c7c..d72bc73fd 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -206,8 +206,10 @@ public: } } - if ((!p->doPingAndKeepalive(RR,_now))&&(stableEndpoint)) - p->attemptToContactAt(RR,InetAddress(),stableEndpoint,_now); + if ((p->alive(_now))||(upstream)) { + if ((!p->doPingAndKeepalive(RR,_now))&&(stableEndpoint)) + p->attemptToContactAt(RR,InetAddress(),stableEndpoint,_now); + } if (upstream) lastReceiveFromUpstream = std::max(p->lastReceive(),lastReceiveFromUpstream); From 719233617ca9f26c3309d608a38aadf701bb5648 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 14 Oct 2015 10:14:07 -0700 Subject: [PATCH 068/314] Add uint16_t key to Hashtable, and make Salsa20 zero its keyspace on destruction. --- node/Hashtable.hpp | 5 ++++- node/Salsa20.hpp | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/node/Hashtable.hpp b/node/Hashtable.hpp index beef14688..1d8d9e5d2 100644 --- a/node/Hashtable.hpp +++ b/node/Hashtable.hpp @@ -382,7 +382,10 @@ private: } static inline unsigned long _hc(const uint32_t i) { - // In the uint32_t case we use a simple multiplier for hashing to ensure coverage + return ((unsigned long)i * (unsigned long)0x9e3779b1); + } + static inline unsigned long _hc(const uint16_t i) + { return ((unsigned long)i * (unsigned long)0x9e3779b1); } diff --git a/node/Salsa20.hpp b/node/Salsa20.hpp index a2082bead..7e4c1e53a 100644 --- a/node/Salsa20.hpp +++ b/node/Salsa20.hpp @@ -12,6 +12,7 @@ #include #include "Constants.hpp" +#include "Utils.hpp" #if (!defined(ZT_SALSA20_SSE)) && (defined(__SSE2__) || defined(__WINDOWS__)) #define ZT_SALSA20_SSE 1 @@ -31,6 +32,8 @@ class Salsa20 public: Salsa20() throw() {} + ~Salsa20() { Utils::burn(&_state,sizeof(_state)); } + /** * @param key Key bits * @param kbits Number of key bits: 128 or 256 (recommended) From c312ae221f0aa339cce56c411d59d9cc9e34abc5 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 14 Oct 2015 10:45:33 -0700 Subject: [PATCH 069/314] Fix for world size in OK(HELLO) --- node/IncomingPacket.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 79a700f66..944e3043e 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -302,7 +302,7 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) const unsigned int sizeAt = outp.size(); outp.addSize(2); // make room for 16-bit size field w.serialize(outp,false); - outp.setAt(sizeAt,(uint16_t)(outp.size() - sizeAt)); + outp.setAt(sizeAt,(uint16_t)(outp.size() - (sizeAt + 2))); } else { outp.append((uint16_t)0); // no world update needed } @@ -435,12 +435,12 @@ bool IncomingPacket::_doWHOIS(const RuntimeEnvironment *RR,const SharedPtr { try { if (payloadLength() == ZT_ADDRESS_LENGTH) { - const SharedPtr queried(RR->topology->getPeer(Address(payload(),ZT_ADDRESS_LENGTH))); + Identity queried(RR->topology->getIdentity(Address(payload(),ZT_ADDRESS_LENGTH))); if (queried) { Packet outp(peer->address(),RR->identity.address(),Packet::VERB_OK); outp.append((unsigned char)Packet::VERB_WHOIS); outp.append(packetId()); - queried->identity().serialize(outp,false); + queried.serialize(outp,false); outp.armor(peer->key(),true); RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); } else { From 619e1137480de4682bb46eabaee3ce750c5be3e8 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 14 Oct 2015 14:12:12 -0700 Subject: [PATCH 070/314] Work in progress on Cluster for new root infrastructure, multi-homing. --- make-mac.mk | 2 +- node/Cluster.cpp | 398 +++++++++++++++++++++++++++++++++++++++++++++ node/Cluster.hpp | 331 +++++++++++++++++++++++++++++++++++++ node/Constants.hpp | 2 +- node/Identity.hpp | 19 ++- node/Packet.hpp | 4 + node/Peer.hpp | 3 +- node/Topology.cpp | 31 ++-- node/Topology.hpp | 19 ++- objects.mk | 1 + 10 files changed, 794 insertions(+), 16 deletions(-) create mode 100644 node/Cluster.cpp create mode 100644 node/Cluster.hpp diff --git a/make-mac.mk b/make-mac.mk index 174216fb1..e53212c0e 100644 --- a/make-mac.mk +++ b/make-mac.mk @@ -6,7 +6,7 @@ ifeq ($(origin CXX),default) endif INCLUDES= -DEFS= +DEFS=-DZT_ENABLE_CLUSTER LIBS= ARCH_FLAGS=-arch x86_64 diff --git a/node/Cluster.cpp b/node/Cluster.cpp new file mode 100644 index 000000000..98b452654 --- /dev/null +++ b/node/Cluster.cpp @@ -0,0 +1,398 @@ +/* + * ZeroTier One - Network Virtualization Everywhere + * Copyright (C) 2011-2015 ZeroTier, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * -- + * + * ZeroTier may be used and distributed under the terms of the GPLv3, which + * are available at: http://www.gnu.org/licenses/gpl-3.0.html + * + * If you would like to embed ZeroTier into a commercial application or + * redistribute it in a modified binary form, please contact ZeroTier Networks + * LLC. Start here: http://www.zerotier.com/ + */ + +#ifdef ZT_ENABLE_CLUSTER + +#include +#include +#include +#include + +#include +#include + +#include "Cluster.hpp" +#include "RuntimeEnvironment.hpp" +#include "MulticastGroup.hpp" +#include "CertificateOfMembership.hpp" +#include "Salsa20.hpp" +#include "Poly1305.hpp" +#include "Packet.hpp" +#include "Peer.hpp" +#include "Switch.hpp" +#include "Node.hpp" + +namespace ZeroTier { + +Cluster::Cluster(const RuntimeEnvironment *renv,uint16_t id,DistanceAlgorithm da,int32_t x,int32_t y,int32_t z,void (*sendFunction)(void *,uint16_t,const void *,unsigned int),void *arg) : + RR(renv), + _sendFunction(sendFunction), + _arg(arg), + _x(x), + _y(y), + _z(z), + _da(da), + _id(id) +{ + uint16_t stmp[ZT_SHA512_DIGEST_LEN / sizeof(uint16_t)]; + + // Generate master secret by hashing the secret from our Identity key pair + RR->identity.sha512PrivateKey(_masterSecret); + + // Generate our inbound message key, which is the master secret XORed with our ID and hashed twice + memcpy(stmp,_masterSecret,sizeof(stmp)); + stmp[0] ^= Utils::hton(id); + SHA512::hash(stmp,stmp,sizeof(stmp)); + SHA512::hash(stmp,stmp,sizeof(stmp)); + memcpy(_key,stmp,sizeof(_key)); + Utils::burn(stmp,sizeof(stmp)); +} + +Cluster::~Cluster() +{ + Utils::burn(_masterSecret,sizeof(_masterSecret)); + Utils::burn(_key,sizeof(_key)); +} + +void Cluster::handleIncomingStateMessage(const void *msg,unsigned int len) +{ + Buffer dmsg; + { + // FORMAT: <[16] iv><[8] MAC><... data> + if ((len < 24)||(len > ZT_CLUSTER_MAX_MESSAGE_LENGTH)) + return; + + // 16-byte IV: first 8 bytes XORed with key, last 8 bytes used as Salsa20 64-bit IV + char keytmp[32]; + memcpy(keytmp,_key,32); + for(int i=0;i<8;++i) + keytmp[i] ^= reinterpret_cast(msg)[i]; + Salsa20 s20(keytmp,256,reinterpret_cast(msg) + 8); + Utils::burn(keytmp,sizeof(keytmp)); + + // One-time-use Poly1305 key from first 32 bytes of Salsa20 keystream (as per DJB/NaCl "standard") + char polykey[ZT_POLY1305_KEY_LEN]; + memset(polykey,0,sizeof(polykey)); + s20.encrypt12(polykey,polykey,sizeof(polykey)); + + // Compute 16-byte MAC + char mac[ZT_POLY1305_MAC_LEN]; + Poly1305::compute(mac,reinterpret_cast(msg) + 24,len - 24,polykey); + + // Check first 8 bytes of MAC against 64-bit MAC in stream + if (!Utils::secureEq(mac,reinterpret_cast(msg) + 16,8)) + return; + + // Decrypt! + dmsg.setSize(len - 16); + s20.decrypt12(reinterpret_cast(msg) + 16,const_cast(dmsg.data()),dmsg.size()); + } + + if (dmsg.size() < 2) + return; + const uint16_t fromMemberId = dmsg.at(0); + unsigned int ptr = 2; + + _Member &m = _members[fromMemberId]; + Mutex::Lock mlck(m.lock); + + m.lastReceivedFrom = RR->node->now(); + + try { + while (ptr < dmsg.size()) { + const unsigned int mlen = dmsg.at(ptr); ptr += 2; + const unsigned int nextPtr = ptr + mlen; + + int mtype = -1; + try { + switch((StateMessageType)(mtype = (int)dmsg[ptr++])) { + default: + break; + + case STATE_MESSAGE_ALIVE: { + ptr += 7; // skip version stuff, not used yet + m.x = dmsg.at(ptr); ptr += 4; + m.y = dmsg.at(ptr); ptr += 4; + m.z = dmsg.at(ptr); ptr += 4; + ptr += 8; // skip local clock, not used + m.load = dmsg.at(ptr); ptr += 8; + ptr += 8; // skip flags, unused + m.physicalAddressCount = dmsg[ptr++]; + if (m.physicalAddressCount > ZT_CLUSTER_MEMBER_MAX_PHYSICAL_ADDRS) + m.physicalAddressCount = ZT_CLUSTER_MEMBER_MAX_PHYSICAL_ADDRS; + for(unsigned int i=0;inode->now(); + } break; + + case STATE_MESSAGE_HAVE_PEER: { + try { + Identity id; + ptr += id.deserialize(dmsg,ptr); + RR->topology->saveIdentity(id); + + { // Add or update peer affinity entry + _PeerAffinity pa(id.address(),fromMemberId,RR->node->now()); + Mutex::Lock _l2(_peerAffinities_m); + std::vector<_PeerAffinity>::iterator i(std::lower_bound(_peerAffinities.begin(),_peerAffinities.end(),pa)); // O(log(n)) + if ((i != _peerAffinities.end())&&(i->key == pa.key)) { + i->timestamp = pa.timestamp; + } else { + _peerAffinities.push_back(pa); + std::sort(_peerAffinities.begin(),_peerAffinities.end()); // probably a more efficient way to insert but okay for now + } + } + } catch ( ... ) { + // ignore invalid identities + } + } break; + + case STATE_MESSAGE_MULTICAST_LIKE: { + const uint64_t nwid = dmsg.at(ptr); ptr += 8; + const Address address(dmsg.field(ptr,ZT_ADDRESS_LENGTH),ZT_ADDRESS_LENGTH); ptr += ZT_ADDRESS_LENGTH; + const MAC mac(dmsg.field(ptr,6),6); ptr += 6; + const uint32_t adi = dmsg.at(ptr); ptr += 4; + RR->mc->add(RR->node->now(),nwid,MulticastGroup(mac,adi),address); + } break; + + case STATE_MESSAGE_COM: { + // TODO: not used yet + } break; + + case STATE_MESSAGE_RELAY: { + const unsigned int numRemotePeerPaths = dmsg[ptr++]; + InetAddress remotePeerPaths[256]; // size is 8-bit, so 256 is max + for(unsigned int i=0;i(ptr); ptr += 2; + const void *packet = (const void *)dmsg.field(ptr,packetLen); ptr += packetLen; + + if (packetLen >= ZT_PROTO_MIN_FRAGMENT_LENGTH) { // ignore anything too short to contain a dest address + const Address destinationAddress(reinterpret_cast(packet) + 8,ZT_ADDRESS_LENGTH); + SharedPtr destinationPeer(RR->topology->getPeer(destinationAddress)); + if (destinationPeer) { + RemotePath *destinationPath = destinationPeer->send(RR,packet,packetLen,RR->node->now()); + if ((destinationPath)&&(numRemotePeerPaths > 0)&&(packetLen >= 18)&&(reinterpret_cast(packet)[ZT_PACKET_FRAGMENT_IDX_FRAGMENT_INDICATOR] == ZT_PACKET_FRAGMENT_INDICATOR)) { + // If remote peer paths were sent with this relayed packet, we do + // RENDEZVOUS. It's handled here for cluster-relayed packets since + // we don't have both Peer records so this is a different path. + + const Address remotePeerAddress(reinterpret_cast(packet) + 13,ZT_ADDRESS_LENGTH); + + InetAddress bestDestV4,bestDestV6; + destinationPeer->getBestActiveAddresses(RR->node->now(),bestDestV4,bestDestV6); + InetAddress bestRemoteV4,bestRemoteV6; + for(unsigned int i=0;iidentity.address(),Packet::VERB_RENDEZVOUS); + rendezvousForDest.append((uint8_t)0); + remotePeerAddress.appendTo(rendezvousForDest); + + Buffer<2048> rendezvousForOtherEnd; + rendezvousForOtherEnd.addSize(2); // leave room for payload size + rendezvousForOtherEnd.append((uint8_t)STATE_MESSAGE_PROXY_SEND); + remotePeerAddress.appendTo(rendezvousForOtherEnd); + rendezvousForOtherEnd.append((uint8_t)Packet::VERB_RENDEZVOUS); + const unsigned int rendezvousForOtherEndPayloadSizePtr = rendezvousForOtherEnd.size(); + rendezvousForOtherEnd.addSize(2); // space for actual packet payload length + rendezvousForOtherEnd.append((uint8_t)0); // flags == 0 + destinationAddress.appendTo(rendezvousForOtherEnd); + + bool haveMatch = false; + if ((bestDestV6)&&(bestRemoteV6)) { + haveMatch = true; + + rendezvousForDest.append((uint16_t)bestRemoteV6.port()); + rendezvousForDest.append((uint8_t)16); + rendezvousForDest.append(bestRemoteV6.rawIpData(),16); + + rendezvousForOtherEnd.append((uint16_t)bestDestV6.port()); + rendezvousForOtherEnd.append((uint8_t)16); + rendezvousForOtherEnd.append(bestDestV6.rawIpData(),16); + rendezvousForOtherEnd.setAt(rendezvousForOtherEndPayloadSizePtr,(uint16_t)(9 + 16)); + } else if ((bestDestV4)&&(bestRemoteV4)) { + haveMatch = true; + + rendezvousForDest.append((uint16_t)bestRemoteV4.port()); + rendezvousForDest.append((uint8_t)4); + rendezvousForDest.append(bestRemoteV4.rawIpData(),4); + + rendezvousForOtherEnd.append((uint16_t)bestDestV4.port()); + rendezvousForOtherEnd.append((uint8_t)4); + rendezvousForOtherEnd.append(bestDestV4.rawIpData(),4); + rendezvousForOtherEnd.setAt(rendezvousForOtherEndPayloadSizePtr,(uint16_t)(9 + 4)); + } + + if (haveMatch) { + RR->sw->send(rendezvousForDest,true,0); + rendezvousForOtherEnd.setAt(0,(uint16_t)(rendezvousForOtherEnd.size() - 2)); + _send(fromMemberId,rendezvousForOtherEnd.data(),rendezvousForOtherEnd.size()); + } + } + } + } + } break; + + case STATE_MESSAGE_PROXY_SEND: { + const Address rcpt(dmsg.field(ptr,ZT_ADDRESS_LENGTH),ZT_ADDRESS_LENGTH); + const Packet::Verb verb = (Packet::Verb)dmsg[ptr++]; + const unsigned int len = dmsg.at(ptr); ptr += 2; + Packet outp(rcpt,RR->identity.address(),verb); + outp.append(dmsg.field(ptr,len),len); + RR->sw->send(outp,true,0); + } break; + } + } catch ( ... ) { + TRACE("invalid message of size %u type %d (inner decode), discarding",mlen,mtype); + // drop invalids + } + + ptr = nextPtr; + } + } catch ( ... ) { + TRACE("invalid message (outer loop), discarding"); + // drop invalids + } +} + +void Cluster::replicateHavePeer(const Address &peerAddress) +{ +} + +void Cluster::replicateMulticastLike(uint64_t nwid,const Address &peerAddress,const MulticastGroup &group) +{ +} + +void Cluster::replicateCertificateOfNetworkMembership(const CertificateOfMembership &com) +{ +} + +void Cluster::doPeriodicTasks() +{ + // Go ahead and flush whenever possible right now + { + Mutex::Lock _l(_memberIds_m); + for(std::vector::const_iterator mid(_memberIds.begin());mid!=_memberIds.end();++mid) { + Mutex::Lock _l2(_members[*mid].lock); + _flush(*mid); + } + } +} + +void Cluster::addMember(uint16_t memberId) +{ + Mutex::Lock _l2(_members[memberId].lock); + + Mutex::Lock _l(_memberIds_m); + _memberIds.push_back(memberId); + std::sort(_memberIds.begin(),_memberIds.end()); + + // Generate this member's message key from the master and its ID + uint16_t stmp[ZT_SHA512_DIGEST_LEN / sizeof(uint16_t)]; + memcpy(stmp,_masterSecret,sizeof(stmp)); + stmp[0] ^= Utils::hton(memberId); + SHA512::hash(stmp,stmp,sizeof(stmp)); + SHA512::hash(stmp,stmp,sizeof(stmp)); + memcpy(_members[memberId].key,stmp,sizeof(_members[memberId].key)); + Utils::burn(stmp,sizeof(stmp)); + + // Prepare q + _members[memberId].q.clear(); + char iv[16]; + Utils::getSecureRandom(iv,16); + _members[memberId].q.append(iv,16); + _members[memberId].q.addSize(8); // room for MAC +} + +void Cluster::_send(uint16_t memberId,const void *msg,unsigned int len) +{ + _Member &m = _members[memberId]; + // assumes m.lock is locked! + for(;;) { + if ((m.q.size() + len) > ZT_CLUSTER_MAX_MESSAGE_LENGTH) + _flush(memberId); + else { + m.q.append(msg,len); + break; + } + } +} + +void Cluster::_flush(uint16_t memberId) +{ + _Member &m = _members[memberId]; + // assumes m.lock is locked! + if (m.q.size() > 24) { + // Create key from member's key and IV + char keytmp[32]; + memcpy(keytmp,m.key,32); + for(int i=0;i<8;++i) + keytmp[i] ^= m.q[i]; + Salsa20 s20(keytmp,256,m.q.field(8,8)); + Utils::burn(keytmp,sizeof(keytmp)); + + // One-time-use Poly1305 key from first 32 bytes of Salsa20 keystream (as per DJB/NaCl "standard") + char polykey[ZT_POLY1305_KEY_LEN]; + memset(polykey,0,sizeof(polykey)); + s20.encrypt12(polykey,polykey,sizeof(polykey)); + + // Encrypt m.q in place + s20.encrypt12(reinterpret_cast(m.q.data()) + 24,const_cast(reinterpret_cast(m.q.data())) + 24,m.q.size() - 24); + + // Add MAC for authentication (encrypt-then-MAC) + char mac[ZT_POLY1305_MAC_LEN]; + Poly1305::compute(mac,reinterpret_cast(m.q.data()) + 24,m.q.size() - 24,polykey); + memcpy(m.q.field(16,8),mac,8); + + // Send! + _sendFunction(_arg,memberId,m.q.data(),m.q.size()); + + // Prepare for more + m.q.clear(); + char iv[16]; + Utils::getSecureRandom(iv,16); + m.q.append(iv,16); + m.q.addSize(8); // room for MAC + } +} + +} // namespace ZeroTier + +#endif // ZT_ENABLE_CLUSTER diff --git a/node/Cluster.hpp b/node/Cluster.hpp new file mode 100644 index 000000000..13d9e2f50 --- /dev/null +++ b/node/Cluster.hpp @@ -0,0 +1,331 @@ +/* + * ZeroTier One - Network Virtualization Everywhere + * Copyright (C) 2011-2015 ZeroTier, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * -- + * + * ZeroTier may be used and distributed under the terms of the GPLv3, which + * are available at: http://www.gnu.org/licenses/gpl-3.0.html + * + * If you would like to embed ZeroTier into a commercial application or + * redistribute it in a modified binary form, please contact ZeroTier Networks + * LLC. Start here: http://www.zerotier.com/ + */ + +#ifndef ZT_CLUSTER_HPP +#define ZT_CLUSTER_HPP + +#ifdef ZT_ENABLE_CLUSTER + +#include +#include + +#include "Constants.hpp" +#include "Address.hpp" +#include "InetAddress.hpp" +#include "SHA512.hpp" +#include "Utils.hpp" +#include "Buffer.hpp" +#include "Mutex.hpp" + +/** + * Timeout for cluster members being considered "alive" + */ +#define ZT_CLUSTER_TIMEOUT ZT_PEER_ACTIVITY_TIMEOUT + +/** + * Maximum cluster message length in bytes + * + * Cluster nodes speak via TCP, with data encapsulated into individually + * encrypted and authenticated messages. The maximum message size is + * 65535 (0xffff) since the TCP stream uses 16-bit message size headers + * (and this is a reasonable chunk size anyway). + */ +#define ZT_CLUSTER_MAX_MESSAGE_LENGTH 65535 + +/** + * Maximum number of physical addresses we will cache for a cluster member + */ +#define ZT_CLUSTER_MEMBER_MAX_PHYSICAL_ADDRS 8 + +namespace ZeroTier { + +class RuntimeEnvironment; +class CertificateOfMembership; +class MulticastGroup; + +/** + * Multi-homing cluster state replication and packet relaying + * + * Multi-homing means more than one node sharing the same ZeroTier identity. + * There is nothing in the protocol to prevent this, but to make it work well + * requires the devices sharing an identity to cooperate and share some + * information. + * + * There are three use cases we want to fulfill: + * + * (1) Multi-homing of root servers with handoff for efficient routing, + * HA, and load balancing across many commodity nodes. + * (2) Multi-homing of network controllers for the same reason. + * (3) Multi-homing of nodes on virtual networks, such as domain servers + * and other important endpoints. + * + * These use cases are in order of escalating difficulty. The initial + * version of Cluster is aimed at satisfying the first, though you are + * free to try #2 and #3. + */ +class Cluster +{ +public: + /** + * Which distance algorithm is this cluster using? + */ + enum DistanceAlgorithm + { + /** + * Simple linear distance in three dimensions + */ + DISTANCE_SIMPLE = 0, + + /** + * Haversine formula using X,Y as lat,long and ignoring Z + */ + DISTANCE_HAVERSINE = 1 + }; + + /** + * State message types + */ + enum StateMessageType + { + STATE_MESSAGE_NOP = 0, + + /** + * This cluster member is alive: + * <[2] version minor> + * <[2] version major> + * <[2] version revision> + * <[1] protocol version> + * <[4] X location (signed 32-bit)> + * <[4] Y location (signed 32-bit)> + * <[4] Z location (signed 32-bit)> + * <[8] local clock at this member> + * <[8] load average> + * <[8] flags (currently unused, must be zero)> + * <[1] number of preferred ZeroTier endpoints> + * <[...] InetAddress(es) of preferred ZeroTier endpoint(s)> + */ + STATE_MESSAGE_ALIVE = 1, + + /** + * Cluster member has this peer: + * <[...] binary serialized peer identity> + */ + STATE_MESSAGE_HAVE_PEER = 2, + + /** + * Peer subscription to multicast group: + * <[8] network ID> + * <[5] peer ZeroTier address> + * <[6] MAC address of multicast group> + * <[4] 32-bit multicast group ADI> + */ + STATE_MESSAGE_MULTICAST_LIKE = 3, + + /** + * Certificate of network membership for a peer: + * <[...] serialized COM> + */ + STATE_MESSAGE_COM = 4, + + /** + * Relay a packet to a peer: + * <[1] 8-bit number of sending peer active path addresses> + * <[...] series of serialized InetAddresses of sending peer's paths> + * <[2] 16-bit packet length> + * <[...] packet or packet fragment> + */ + STATE_MESSAGE_RELAY = 5, + + /** + * Request to send a packet to a locally-known peer: + * <[5] ZeroTier address of recipient> + * <[1] packet verb> + * <[2] length of packet payload> + * <[...] packet payload> + * + * This differs from RELAY in that it requests the receiving cluster + * member to actually compose a ZeroTier Packet from itself to the + * provided recipient. RELAY simply says "please forward this blob." + * RELAY is used to implement peer-to-peer relaying with RENDEZVOUS, + * while PROXY_SEND is used to implement proxy sending (which right + * now is only used to send RENDEZVOUS). + */ + STATE_MESSAGE_PROXY_SEND = 6 + }; + + /** + * Construct a new cluster + * + * @param renv Runtime environment + * @param id This member's ID in the cluster + * @param da Distance algorithm this cluster uses to compute distance and hand off peers + * @param x My X + * @param y My Y + * @param z My Z + * @param sendFunction Function to call to send messages to other cluster members + * @param arg First argument to sendFunction + */ + Cluster( + const RuntimeEnvironment *renv, + uint16_t id, + DistanceAlgorithm da, + int32_t x, + int32_t y, + int32_t z, + void (*sendFunction)(void *,uint16_t,const void *,unsigned int), + void *arg); + + ~Cluster(); + + /** + * @return This cluster member's ID + */ + inline uint16_t id() const throw() { return _id; } + + /** + * Handle an incoming intra-cluster message + * + * @param data Message data + * @param len Message length (max: ZT_CLUSTER_MAX_MESSAGE_LENGTH) + */ + void handleIncomingStateMessage(const void *msg,unsigned int len); + + /** + * Advertise to the cluster that we have this peer + * + * @param peerAddress Peer address that we have + */ + void replicateHavePeer(const Address &peerAddress); + + /** + * Advertise a multicast LIKE to the cluster + * + * @param nwid Network ID + * @param peerAddress Peer address that sent LIKE + * @param group Multicast group + */ + void replicateMulticastLike(uint64_t nwid,const Address &peerAddress,const MulticastGroup &group); + + /** + * Advertise a network COM to the cluster + * + * @param com Certificate of network membership (contains peer and network ID) + */ + void replicateCertificateOfNetworkMembership(const CertificateOfMembership &com); + + /** + * This should be called no less frequently than once every 10 seconds. + */ + void doPeriodicTasks(); + + /** + * Add a member ID to this cluster + * + * @param memberId Member ID + */ + void addMember(uint16_t memberId); + +private: + void _send(uint16_t memberId,const void *msg,unsigned int len); + void _flush(uint16_t memberId); + + // These are initialized in the constructor and remain static + uint16_t _masterSecret[ZT_SHA512_DIGEST_LEN / sizeof(uint16_t)]; + unsigned char _key[ZT_PEER_SECRET_KEY_LENGTH]; + const RuntimeEnvironment *RR; + void (*_sendFunction)(void *,uint16_t,const void *,unsigned int); + void *_arg; + const int32_t _x; + const int32_t _y; + const int32_t _z; + const DistanceAlgorithm _da; + const uint16_t _id; + + struct _Member + { + unsigned char key[ZT_PEER_SECRET_KEY_LENGTH]; + + uint64_t lastReceivedFrom; + uint64_t lastReceivedAliveAnnouncement; + uint64_t lastSentTo; + uint64_t lastAnnouncedAliveTo; + + uint64_t load; + int32_t x,y,z; + + InetAddress physicalAddresses[ZT_CLUSTER_MEMBER_MAX_PHYSICAL_ADDRS]; + unsigned int physicalAddressCount; + + Buffer q; + + Mutex lock; + + _Member() : + lastReceivedFrom(0), + lastReceivedAliveAnnouncement(0), + lastSentTo(0), + lastAnnouncedAliveTo(0), + load(0), + x(0), + y(0), + z(0), + physicalAddressCount(0) {} + + ~_Member() { Utils::burn(key,sizeof(key)); } + }; + + _Member _members[65536]; // cluster IDs can be from 0 to 65535 (16-bit) + + std::vector _memberIds; + Mutex _memberIds_m; + + // Record tracking which members have which peers and how recently they claimed this + struct _PeerAffinity + { + _PeerAffinity(const Address &a,uint16_t mid,uint64_t ts) : + key((a.toInt() << 16) | (uint64_t)mid), + timestamp(ts) {} + + uint64_t key; + uint64_t timestamp; + + inline Address address() const throw() { return Address(key >> 16); } + inline uint16_t clusterMemberId() const throw() { return (uint16_t)(key & 0xffff); } + + inline bool operator<(const _PeerAffinity &pi) const throw() { return (key < pi.key); } + }; + + // A memory-efficient packed map of _PeerAffinity records searchable with std::binary_search() and std::lower_bound() + std::vector<_PeerAffinity> _peerAffinities; + Mutex _peerAffinities_m; +}; + +} // namespace ZeroTier + +#endif // ZT_ENABLE_CLUSTER + +#endif diff --git a/node/Constants.hpp b/node/Constants.hpp index 9ab390eb6..afcb4e306 100644 --- a/node/Constants.hpp +++ b/node/Constants.hpp @@ -182,7 +182,7 @@ #define ZT_FRAGMENTED_PACKET_RECEIVE_TIMEOUT 1000 /** - * Length of secret key in bytes -- 256-bit for Salsa20 + * Length of secret key in bytes -- 256-bit -- do not change */ #define ZT_PEER_SECRET_KEY_LENGTH 32 diff --git a/node/Identity.hpp b/node/Identity.hpp index 19bb2e1fe..6c33e74f3 100644 --- a/node/Identity.hpp +++ b/node/Identity.hpp @@ -38,6 +38,7 @@ #include "Address.hpp" #include "C25519.hpp" #include "Buffer.hpp" +#include "SHA512.hpp" namespace ZeroTier { @@ -91,8 +92,7 @@ public: } template - Identity(const Buffer &b,unsigned int startAt = 0) - throw(std::out_of_range,std::invalid_argument) : + Identity(const Buffer &b,unsigned int startAt = 0) : _privateKey((C25519::Private *)0) { deserialize(b,startAt); @@ -137,6 +137,21 @@ public: */ inline bool hasPrivate() const throw() { return (_privateKey != (C25519::Private *)0); } + /** + * Compute the SHA512 hash of our private key (if we have one) + * + * @param sha Buffer to receive SHA512 (MUST be ZT_SHA512_DIGEST_LEN (64) bytes in length) + * @return True on success, false if no private key + */ + inline bool sha512PrivateKey(void *sha) const + { + if (_privateKey) { + SHA512::hash(sha,_privateKey->data,ZT_C25519_PRIVATE_KEY_LEN); + return true; + } + return false; + } + /** * Sign a message with this identity (private key required) * diff --git a/node/Packet.hpp b/node/Packet.hpp index e03190a25..0e8426b68 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -623,6 +623,10 @@ public: * may also ignore these messages if a peer is not known or is not being * actively communicated with. * + * Unfortunately the physical address format in this message pre-dates + * InetAddress's serialization format. :( ZeroTier is four years old and + * yes we've accumulated a tiny bit of cruft here and there. + * * No OK or ERROR is generated. */ VERB_RENDEZVOUS = 5, diff --git a/node/Peer.hpp b/node/Peer.hpp index cabf0793d..0139f3862 100644 --- a/node/Peer.hpp +++ b/node/Peer.hpp @@ -560,7 +560,8 @@ private: void _sortPaths(const uint64_t now); RemotePath *_getBestPath(const uint64_t now); - unsigned char _key[ZT_PEER_SECRET_KEY_LENGTH]; + unsigned char _key[ZT_PEER_SECRET_KEY_LENGTH]; // computed with key agreement, not serialized + uint64_t _lastUsed; uint64_t _lastReceive; // direct or indirect uint64_t _lastUnicastFrame; diff --git a/node/Topology.cpp b/node/Topology.cpp index 8b5deffc8..2b9733863 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -136,7 +136,7 @@ SharedPtr Topology::addPeer(const SharedPtr &peer) SharedPtr &p = _peers.set(peer->address(),peer); p->use(now); - _saveIdentity(p->identity()); + saveIdentity(p->identity()); return p; } @@ -172,6 +172,26 @@ SharedPtr Topology::getPeer(const Address &zta) return SharedPtr(); } +Identity Topology::getIdentity(const Address &zta) +{ + { + Mutex::Lock _l(_lock); + SharedPtr &ap = _peers[zta]; + if (ap) + return ap->identity(); + } + return _getIdentity(zta); +} + +void saveIdentity(const Identity &id) +{ + if (id) { + char p[128]; + Utils::snprintf(p,sizeof(p),"iddb.d/%.10llx",(unsigned long long)id.address().toInt()); + RR->node->dataStorePut(p,id.toString(false),false); + } +} + SharedPtr Topology::getBestRoot(const Address *avoid,unsigned int avoidCount,bool strictAvoid) { SharedPtr bestRoot; @@ -315,15 +335,6 @@ Identity Topology::_getIdentity(const Address &zta) return Identity(); } -void Topology::_saveIdentity(const Identity &id) -{ - if (id) { - char p[128]; - Utils::snprintf(p,sizeof(p),"iddb.d/%.10llx",(unsigned long long)id.address().toInt()); - RR->node->dataStorePut(p,id.toString(false),false); - } -} - void Topology::_setWorld(const World &newWorld) { // assumed _lock is locked (or in constructor) diff --git a/node/Topology.hpp b/node/Topology.hpp index 6f0170f00..9e9ccc011 100644 --- a/node/Topology.hpp +++ b/node/Topology.hpp @@ -78,6 +78,24 @@ public: */ SharedPtr getPeer(const Address &zta); + /** + * Get the identity of a peer + * + * @param zta ZeroTier address of peer + * @return Identity or NULL Identity if not found + */ + Identity getIdentity(const Address &zta); + + /** + * Cache an identity + * + * This is done automatically on addPeer(), and so is only useful for + * cluster identity replication. + * + * @param id Identity to cache + */ + void saveIdentity(const Identity &id); + /** * @return Vector of peers that are root servers */ @@ -210,7 +228,6 @@ public: private: Identity _getIdentity(const Address &zta); - void _saveIdentity(const Identity &id); void _setWorld(const World &newWorld); const RuntimeEnvironment *RR; diff --git a/objects.mk b/objects.mk index 64e5cfa76..10e0c334c 100644 --- a/objects.mk +++ b/objects.mk @@ -4,6 +4,7 @@ OBJS=\ ext/http-parser/http_parser.o \ node/C25519.o \ node/CertificateOfMembership.o \ + node/Cluster.o \ node/Dictionary.o \ node/Identity.o \ node/IncomingPacket.o \ From 59389b3dcefa00541ec923ab091d400b941d6c47 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 14 Oct 2015 14:17:55 -0700 Subject: [PATCH 071/314] Untested cluster code, not enabled. --- make-mac.mk | 2 +- node/Cluster.cpp | 8 ++++++-- node/Topology.cpp | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/make-mac.mk b/make-mac.mk index e53212c0e..174216fb1 100644 --- a/make-mac.mk +++ b/make-mac.mk @@ -6,7 +6,7 @@ ifeq ($(origin CXX),default) endif INCLUDES= -DEFS=-DZT_ENABLE_CLUSTER +DEFS= LIBS= ARCH_FLAGS=-arch x86_64 diff --git a/node/Cluster.cpp b/node/Cluster.cpp index 98b452654..8a942cb0a 100644 --- a/node/Cluster.cpp +++ b/node/Cluster.cpp @@ -195,8 +195,12 @@ void Cluster::handleIncomingStateMessage(const void *msg,unsigned int len) const Address destinationAddress(reinterpret_cast(packet) + 8,ZT_ADDRESS_LENGTH); SharedPtr destinationPeer(RR->topology->getPeer(destinationAddress)); if (destinationPeer) { - RemotePath *destinationPath = destinationPeer->send(RR,packet,packetLen,RR->node->now()); - if ((destinationPath)&&(numRemotePeerPaths > 0)&&(packetLen >= 18)&&(reinterpret_cast(packet)[ZT_PACKET_FRAGMENT_IDX_FRAGMENT_INDICATOR] == ZT_PACKET_FRAGMENT_INDICATOR)) { + if ( + (destinationPeer->send(RR,packet,packetLen,RR->node->now()))&& + (numRemotePeerPaths > 0)&& + (packetLen >= 18)&& + (reinterpret_cast(packet)[ZT_PACKET_FRAGMENT_IDX_FRAGMENT_INDICATOR] == ZT_PACKET_FRAGMENT_INDICATOR) + ) { // If remote peer paths were sent with this relayed packet, we do // RENDEZVOUS. It's handled here for cluster-relayed packets since // we don't have both Peer records so this is a different path. diff --git a/node/Topology.cpp b/node/Topology.cpp index 2b9733863..a35585582 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -183,7 +183,7 @@ Identity Topology::getIdentity(const Address &zta) return _getIdentity(zta); } -void saveIdentity(const Identity &id) +void Topology::saveIdentity(const Identity &id) { if (id) { char p[128]; From 9ece8c465e4d98770e24f08af97fa1b380e7d9e0 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 14 Oct 2015 15:49:41 -0700 Subject: [PATCH 072/314] decrypt fix --- node/Cluster.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/node/Cluster.cpp b/node/Cluster.cpp index 8a942cb0a..c08bf0020 100644 --- a/node/Cluster.cpp +++ b/node/Cluster.cpp @@ -108,8 +108,8 @@ void Cluster::handleIncomingStateMessage(const void *msg,unsigned int len) return; // Decrypt! - dmsg.setSize(len - 16); - s20.decrypt12(reinterpret_cast(msg) + 16,const_cast(dmsg.data()),dmsg.size()); + dmsg.setSize(len - 24); + s20.decrypt12(reinterpret_cast(msg) + 24,const_cast(dmsg.data()),dmsg.size()); } if (dmsg.size() < 2) @@ -343,6 +343,7 @@ void Cluster::addMember(uint16_t memberId) Utils::getSecureRandom(iv,16); _members[memberId].q.append(iv,16); _members[memberId].q.addSize(8); // room for MAC + _members[memberId].q.append((uint16_t)_id); } void Cluster::_send(uint16_t memberId,const void *msg,unsigned int len) @@ -363,7 +364,7 @@ void Cluster::_flush(uint16_t memberId) { _Member &m = _members[memberId]; // assumes m.lock is locked! - if (m.q.size() > 24) { + if (m.q.size() > 26) { // 16-byte IV + 8-byte MAC + 2-byte cluster member ID (latter two bytes are inside crypto envelope) // Create key from member's key and IV char keytmp[32]; memcpy(keytmp,m.key,32); @@ -394,6 +395,7 @@ void Cluster::_flush(uint16_t memberId) Utils::getSecureRandom(iv,16); m.q.append(iv,16); m.q.addSize(8); // room for MAC + m.q.append((uint16_t)_id); } } From a775ee7d315fd960f472a6e655c8fda92e53f44a Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 14 Oct 2015 16:21:39 -0700 Subject: [PATCH 073/314] . --- make-linux.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make-linux.mk b/make-linux.mk index 2ef9b9850..5e0a20726 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -29,7 +29,7 @@ endif UNAME_M=$(shell uname -m) INCLUDES= -DEFS= +DEFS=-DZT_ENABLE_CLUSTER LDLIBS?= include objects.mk From 2debde3451838f62ed9b53d9b0086f7112416636 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Thu, 15 Oct 2015 07:22:17 -0700 Subject: [PATCH 074/314] GitHub issue #235, and I also see no reason not to communicate with people from other Worlds. --- node/Constants.hpp | 5 +++++ node/IncomingPacket.cpp | 31 +++++++++++++++---------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/node/Constants.hpp b/node/Constants.hpp index afcb4e306..a60b76eba 100644 --- a/node/Constants.hpp +++ b/node/Constants.hpp @@ -347,6 +347,11 @@ */ #define ZT_MAX_BRIDGE_SPAM 16 +/** + * Maximum number of endpoints to contact per address type (to limit pushes like GitHub issue #235) + */ +#define ZT_PUSH_DIRECT_PATHS_MAX_ENDPOINTS_PER_TYPE 8 + /** * A test pseudo-network-ID that can be joined * diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 944e3043e..d444258df 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -296,22 +296,18 @@ bool IncomingPacket::_doHELLO(const RuntimeEnvironment *RR) outp.append((uint16_t)ZEROTIER_ONE_VERSION_REVISION); _remoteAddress.serialize(outp); - if ((worldId != ZT_WORLD_ID_NULL)&&(worldId == RR->topology->worldId())) { - if (RR->topology->worldTimestamp() > worldTimestamp) { - World w(RR->topology->world()); - const unsigned int sizeAt = outp.size(); - outp.addSize(2); // make room for 16-bit size field - w.serialize(outp,false); - outp.setAt(sizeAt,(uint16_t)(outp.size() - (sizeAt + 2))); - } else { - outp.append((uint16_t)0); // no world update needed - } - - outp.armor(peer->key(),true); - RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); + if ((worldId != ZT_WORLD_ID_NULL)&&(RR->topology->worldTimestamp() > worldTimestamp)&&(worldId == RR->topology->worldId())) { + World w(RR->topology->world()); + const unsigned int sizeAt = outp.size(); + outp.addSize(2); // make room for 16-bit size field + w.serialize(outp,false); + outp.setAt(sizeAt,(uint16_t)(outp.size() - (sizeAt + 2))); } else { - TRACE("dropped HELLO from %s(%s): world ID mismatch: peer is %llu and we are %llu",source().toString().c_str(),_remoteAddress.toString().c_str(),worldId,RR->topology->worldId()); + outp.append((uint16_t)0); // no world update needed } + + outp.armor(peer->key(),true); + RR->node->putPacket(_localAddress,_remoteAddress,outp.data(),outp.size()); } catch ( ... ) { TRACE("dropped HELLO from %s(%s): unexpected exception",source().toString().c_str(),_remoteAddress.toString().c_str()); } @@ -867,6 +863,7 @@ bool IncomingPacket::_doPUSH_DIRECT_PATHS(const RuntimeEnvironment *RR,const Sha try { unsigned int count = at(ZT_PACKET_IDX_PAYLOAD); unsigned int ptr = ZT_PACKET_IDX_PAYLOAD + 2; + unsigned int v4Count = 0,v6Count = 0; while (count--) { // if ptr overflows Buffer will throw // TODO: some flags are not yet implemented @@ -882,14 +879,16 @@ bool IncomingPacket::_doPUSH_DIRECT_PATHS(const RuntimeEnvironment *RR,const Sha InetAddress a(field(ptr,4),4,at(ptr + 4)); if ( ((flags & 0x01) == 0) && (Path::isAddressValidForPath(a)) ) { TRACE("attempting to contact %s at pushed direct path %s",peer->address().toString().c_str(),a.toString().c_str()); - peer->attemptToContactAt(RR,_localAddress,a,RR->node->now()); + if (v4Count++ < ZT_PUSH_DIRECT_PATHS_MAX_ENDPOINTS_PER_TYPE) + peer->attemptToContactAt(RR,_localAddress,a,RR->node->now()); } } break; case 6: { InetAddress a(field(ptr,16),16,at(ptr + 16)); if ( ((flags & 0x01) == 0) && (Path::isAddressValidForPath(a)) ) { TRACE("attempting to contact %s at pushed direct path %s",peer->address().toString().c_str(),a.toString().c_str()); - peer->attemptToContactAt(RR,_localAddress,a,RR->node->now()); + if (v6Count++ < ZT_PUSH_DIRECT_PATHS_MAX_ENDPOINTS_PER_TYPE) + peer->attemptToContactAt(RR,_localAddress,a,RR->node->now()); } } break; } From 2229e91b57676c1218b550749a2108372e0f37ad Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 16 Oct 2015 10:10:12 -0700 Subject: [PATCH 075/314] IPv6 support fixes. --- node/Node.cpp | 39 +++++++++++++++++++++++++++++---------- node/Peer.cpp | 51 +++++++++++++++++++++++++++++++++++++-------------- node/Peer.hpp | 8 +++++--- 3 files changed, 71 insertions(+), 27 deletions(-) diff --git a/node/Node.cpp b/node/Node.cpp index d72bc73fd..5aa4b7d31 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -186,33 +186,52 @@ public: inline void operator()(Topology &t,const SharedPtr &p) { bool upstream = false; - InetAddress stableEndpoint; + InetAddress stableEndpoint4,stableEndpoint6; + + // If this is a world root, pick (if possible) both an IPv4 and an IPv6 stable endpoint to use if link isn't currently alive. for(std::vector::const_iterator r(_world.roots().begin());r!=_world.roots().end();++r) { if (r->identity.address() == p->address()) { - if (r->stableEndpoints.size() > 0) - stableEndpoint = r->stableEndpoints[(unsigned long)RR->node->prng() % r->stableEndpoints.size()]; upstream = true; + for(unsigned long k=0,ptr=RR->node->prng();kstableEndpoints.size();++k) { + const InetAddress &addr = r->stableEndpoints[ptr++ % r->stableEndpoints.size()]; + if (!stableEndpoint4) { + if (addr.ss_family == AF_INET) + stableEndpoint4 = addr; + } else if (!stableEndpoint6) { + if (addr.ss_family == AF_INET6) + stableEndpoint6 = addr; + } else break; // have both! + } break; } } + // If this is a network preferred relay, also always ping and if a stable endpoint is specified use that if not alive if (!upstream) { for(std::vector< std::pair >::const_iterator r(_relays.begin());r!=_relays.end();++r) { if (r->first == p->address()) { - stableEndpoint = r->second; + if (r->second.ss_family == AF_INET) + stableEndpoint4 = r->second; + else if (r->second.ss_family == AF_INET6) + stableEndpoint6 = r->second; upstream = true; break; } } } - if ((p->alive(_now))||(upstream)) { - if ((!p->doPingAndKeepalive(RR,_now))&&(stableEndpoint)) - p->attemptToContactAt(RR,InetAddress(),stableEndpoint,_now); - } - - if (upstream) + if (upstream) { + // "Upstream" devices are roots and relays and get special treatment -- they stay alive + // forever and we try to keep (if available) both IPv4 and IPv6 channels open to them. + if ((!p->doPingAndKeepalive(RR,_now,AF_INET))&&(stableEndpoint4)) + p->attemptToContactAt(RR,InetAddress(),stableEndpoint4,_now); + if ((!p->doPingAndKeepalive(RR,_now,AF_INET6))&&(stableEndpoint6)) + p->attemptToContactAt(RR,InetAddress(),stableEndpoint6,_now); lastReceiveFromUpstream = std::max(p->lastReceive(),lastReceiveFromUpstream); + } else if (p->alive(_now)) { + // Normal nodes get their preferred link kept alive if the node has generated frame traffic recently + p->doPingAndKeepalive(RR,_now,0); + } } private: diff --git a/node/Peer.cpp b/node/Peer.cpp index 697ba75d7..becc77f93 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -179,23 +179,31 @@ void Peer::attemptToContactAt(const RuntimeEnvironment *RR,const InetAddress &lo RR->node->putPacket(localAddr,atAddress,outp.data(),outp.size()); } -RemotePath *Peer::doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now) +bool Peer::doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now,int inetAddressFamily) { + RemotePath *p = (RemotePath *)0; + Mutex::Lock _l(_lock); - RemotePath *const bestPath = _getBestPath(now); - if (bestPath) { - if ((now - bestPath->lastReceived()) >= ZT_PEER_DIRECT_PING_DELAY) { - TRACE("PING %s(%s) after %llums/%llums send/receive inactivity",_id.address().toString().c_str(),bestPath->address().toString().c_str(),now - bestPath->lastSend(),now - bestPath->lastReceived()); - attemptToContactAt(RR,bestPath->localAddress(),bestPath->address(),now); - bestPath->sent(now); - } else if (((now - bestPath->lastSend()) >= ZT_NAT_KEEPALIVE_DELAY)&&(!bestPath->reliable())) { - TRACE("NAT keepalive %s(%s) after %llums/%llums send/receive inactivity",_id.address().toString().c_str(),bestPath->address().toString().c_str(),now - bestPath->lastSend(),now - bestPath->lastReceived()); - _natKeepaliveBuf += (uint32_t)((now * 0x9e3779b1) >> 1); // tumble this around to send constantly varying (meaningless) payloads - RR->node->putPacket(bestPath->localAddress(),bestPath->address(),&_natKeepaliveBuf,sizeof(_natKeepaliveBuf)); - bestPath->sent(now); - } + if (inetAddressFamily != 0) { + p = _getBestPath(now,inetAddressFamily); + } else { + p = _getBestPath(now); } - return bestPath; + + if (p) { + if ((now - p->lastReceived()) >= ZT_PEER_DIRECT_PING_DELAY) { + TRACE("PING %s(%s) after %llums/%llums send/receive inactivity",_id.address().toString().c_str(),p->address().toString().c_str(),now - p->lastSend(),now - p->lastReceived()); + attemptToContactAt(RR,p->localAddress(),p->address(),now); + p->sent(now); + } else if (((now - p->lastSend()) >= ZT_NAT_KEEPALIVE_DELAY)&&(!p->reliable())) { + TRACE("NAT keepalive %s(%s) after %llums/%llums send/receive inactivity",_id.address().toString().c_str(),p->address().toString().c_str(),now - p->lastSend(),now - p->lastReceived()); + _natKeepaliveBuf += (uint32_t)((now * 0x9e3779b1) >> 1); // tumble this around to send constantly varying (meaningless) payloads + RR->node->putPacket(p->localAddress(),p->address(),&_natKeepaliveBuf,sizeof(_natKeepaliveBuf)); + p->sent(now); + } + return true; + } + return false; } void Peer::pushDirectPaths(const RuntimeEnvironment *RR,RemotePath *path,uint64_t now,bool force) @@ -465,4 +473,19 @@ RemotePath *Peer::_getBestPath(const uint64_t now) return (RemotePath *)0; } +RemotePath *Peer::_getBestPath(const uint64_t now,int inetAddressFamily) +{ + // assumes _lock is locked + if ((now - _lastPathSort) >= ZT_PEER_PATH_SORT_INTERVAL) + _sortPaths(now); + for(int k=0;k<2;++k) { // try once, and if it fails sort and try one more time + for(unsigned int i=0;i<_numPaths;++i) { + if ((_paths[i].active(now))&&((int)_paths[i].address().ss_family == inetAddressFamily)) + return &(_paths[i]); + } + _sortPaths(now); + } + return (RemotePath *)0; +} + } // namespace ZeroTier diff --git a/node/Peer.hpp b/node/Peer.hpp index 0139f3862..4fb399c5f 100644 --- a/node/Peer.hpp +++ b/node/Peer.hpp @@ -130,7 +130,7 @@ public: Packet::Verb inReVerb = Packet::VERB_NOP); /** - * Get the best direct path to this peer + * Get the current best direct path to this peer * * @param now Current time * @return Best path or NULL if there are no active direct paths @@ -178,9 +178,10 @@ public: * * @param RR Runtime environment * @param now Current time - * @return Current best path or NULL if no active paths + * @param inetAddressFamily Keep this address family alive, or 0 to simply pick current best ignoring family + * @return True if at least one direct path seems alive */ - RemotePath *doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now); + bool doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now,int inetAddressFamily); /** * Push direct paths if we haven't done so in [rate limit] milliseconds @@ -559,6 +560,7 @@ public: private: void _sortPaths(const uint64_t now); RemotePath *_getBestPath(const uint64_t now); + RemotePath *_getBestPath(const uint64_t now,int inetAddressFamily); unsigned char _key[ZT_PEER_SECRET_KEY_LENGTH]; // computed with key agreement, not serialized From 5ce3aac929ef217f3e813b5bc948dd28d021835f Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 16 Oct 2015 10:28:09 -0700 Subject: [PATCH 076/314] Add rate limit on receive of DIRECT_PATH_PUSH to prevent DOS exploitation. --- node/Constants.hpp | 7 ++++++- node/IncomingPacket.cpp | 7 +++++++ node/Peer.cpp | 7 ++++--- node/Peer.hpp | 32 ++++++++++++++++++++++---------- 4 files changed, 39 insertions(+), 14 deletions(-) diff --git a/node/Constants.hpp b/node/Constants.hpp index a60b76eba..e45602f72 100644 --- a/node/Constants.hpp +++ b/node/Constants.hpp @@ -322,7 +322,12 @@ /** * Interval between direct path pushes in milliseconds */ -#define ZT_DIRECT_PATH_PUSH_INTERVAL 300000 +#define ZT_DIRECT_PATH_PUSH_INTERVAL 120000 + +/** + * Minimum interval between direct path pushes from a given peer or we will ignore them + */ +#define ZT_DIRECT_PATH_PUSH_MIN_RECEIVE_INTERVAL 2500 /** * How long (max) to remember network certificates of membership? diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index d444258df..4386e3708 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -861,6 +861,13 @@ bool IncomingPacket::_doMULTICAST_FRAME(const RuntimeEnvironment *RR,const Share bool IncomingPacket::_doPUSH_DIRECT_PATHS(const RuntimeEnvironment *RR,const SharedPtr &peer) { try { + const uint64_t now = RR->node->now(); + if ((now - peer->lastDirectPathPushReceived()) >= ZT_DIRECT_PATH_PUSH_MIN_RECEIVE_INTERVAL) { + TRACE("dropped PUSH_DIRECT_PATHS from %s(%s): too frequent!",source().toString().c_str(),_remoteAddress.toString().c_str()); + return true; + } + peer->setLastDirectPathPushReceived(now); + unsigned int count = at(ZT_PACKET_IDX_PAYLOAD); unsigned int ptr = ZT_PACKET_IDX_PAYLOAD + 2; unsigned int v4Count = 0,v6Count = 0; diff --git a/node/Peer.cpp b/node/Peer.cpp index becc77f93..8c5c57831 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -52,7 +52,8 @@ Peer::Peer(const Identity &myIdentity,const Identity &peerIdentity) _lastMulticastFrame(0), _lastAnnouncedTo(0), _lastPathConfirmationSent(0), - _lastDirectPathPush(0), + _lastDirectPathPushSent(0), + _lastDirectPathPushReceived(0), _lastPathSort(0), _vMajor(0), _vMinor(0), @@ -210,8 +211,8 @@ void Peer::pushDirectPaths(const RuntimeEnvironment *RR,RemotePath *path,uint64_ { Mutex::Lock _l(_lock); - if (((now - _lastDirectPathPush) >= ZT_DIRECT_PATH_PUSH_INTERVAL)||(force)) { - _lastDirectPathPush = now; + if (((now - _lastDirectPathPushSent) >= ZT_DIRECT_PATH_PUSH_INTERVAL)||(force)) { + _lastDirectPathPushSent = now; std::vector dps(RR->node->directPaths()); if (dps.empty()) diff --git a/node/Peer.hpp b/node/Peer.hpp index 4fb399c5f..043519d4d 100644 --- a/node/Peer.hpp +++ b/node/Peer.hpp @@ -408,6 +408,16 @@ public: */ bool needsOurNetworkMembershipCertificate(uint64_t nwid,uint64_t now,bool updateLastPushedTime); + /** + * @return Time last direct path push was received + */ + inline uint64_t lastDirectPathPushReceived() const throw() { return _lastDirectPathPushReceived; } + + /** + * @param t New time of last direct path push received + */ + inline void setLastDirectPathPushReceived(uint64_t t) throw() { _lastDirectPathPushReceived = t; } + /** * Perform periodic cleaning operations */ @@ -438,10 +448,10 @@ public: { Mutex::Lock _l(_lock); - const unsigned int atPos = b.size(); + const unsigned int recSizePos = b.size(); b.addSize(4); // space for uint32_t field length - b.append((uint32_t)1); // version of serialized Peer data + b.append((uint16_t)1); // version of serialized Peer data _id.serialize(b,false); @@ -451,7 +461,8 @@ public: b.append((uint64_t)_lastMulticastFrame); b.append((uint64_t)_lastAnnouncedTo); b.append((uint64_t)_lastPathConfirmationSent); - b.append((uint64_t)_lastDirectPathPush); + b.append((uint64_t)_lastDirectPathPushSent); + b.append((uint64_t)_lastDirectPathPushReceived); b.append((uint64_t)_lastPathSort); b.append((uint16_t)_vProto); b.append((uint16_t)_vMajor); @@ -486,7 +497,7 @@ public: } } - b.setAt(atPos,(uint32_t)(b.size() - atPos)); // set size + b.setAt(recSizePos,(uint32_t)((b.size() - 4) - recSizePos)); // set size } /** @@ -500,13 +511,12 @@ public: template static inline SharedPtr deserializeNew(const Identity &myIdentity,const Buffer &b,unsigned int &p) { - const uint32_t recSize = b.template at(p); + const uint32_t recSize = b.template at(p); p += 4; if ((p + recSize) > b.size()) return SharedPtr(); // size invalid - p += 4; - if (b.template at(p) != 1) + if (b.template at(p) != 1) return SharedPtr(); // version mismatch - p += 4; + p += 2; Identity npid; p += npid.deserialize(b,p); @@ -521,7 +531,8 @@ public: np->_lastMulticastFrame = b.template at(p); p += 8; np->_lastAnnouncedTo = b.template at(p); p += 8; np->_lastPathConfirmationSent = b.template at(p); p += 8; - np->_lastDirectPathPush = b.template at(p); p += 8; + np->_lastDirectPathPushSent = b.template at(p); p += 8; + np->_lastDirectPathPushReceived = b.template at(p); p += 8; np->_lastPathSort = b.template at(p); p += 8; np->_vProto = b.template at(p); p += 2; np->_vMajor = b.template at(p); p += 2; @@ -570,7 +581,8 @@ private: uint64_t _lastMulticastFrame; uint64_t _lastAnnouncedTo; uint64_t _lastPathConfirmationSent; - uint64_t _lastDirectPathPush; + uint64_t _lastDirectPathPushSent; + uint64_t _lastDirectPathPushReceived; uint64_t _lastPathSort; uint16_t _vProto; uint16_t _vMajor; From f9f60f89d95e43e5c439bf7c86b015e1b41a2f14 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 16 Oct 2015 10:45:58 -0700 Subject: [PATCH 077/314] Peer save/restore fix. --- node/Peer.hpp | 8 ++++---- node/Topology.cpp | 31 ++++++++++--------------------- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/node/Peer.hpp b/node/Peer.hpp index 043519d4d..7e7e7f465 100644 --- a/node/Peer.hpp +++ b/node/Peer.hpp @@ -470,7 +470,7 @@ public: b.append((uint16_t)_vRevision); b.append((uint32_t)_latency); - b.append((uint32_t)_numPaths); + b.append((uint16_t)_numPaths); for(unsigned int i=0;i<_numPaths;++i) _paths[i].serialize(b); @@ -497,7 +497,7 @@ public: } } - b.setAt(recSizePos,(uint32_t)((b.size() - 4) - recSizePos)); // set size + b.template setAt(recSizePos,(uint32_t)(b.size() - (recSizePos + 4))); // set size } /** @@ -511,7 +511,7 @@ public: template static inline SharedPtr deserializeNew(const Identity &myIdentity,const Buffer &b,unsigned int &p) { - const uint32_t recSize = b.template at(p); p += 4; + const unsigned int recSize = b.template at(p); p += 4; if ((p + recSize) > b.size()) return SharedPtr(); // size invalid if (b.template at(p) != 1) @@ -540,7 +540,7 @@ public: np->_vRevision = b.template at(p); p += 2; np->_latency = b.template at(p); p += 4; - const unsigned int numPaths = b.template at(p); p += 4; + const unsigned int numPaths = b.template at(p); p += 2; for(unsigned int i=0;i_paths[np->_numPaths++].deserialize(b,p); diff --git a/node/Topology.cpp b/node/Topology.cpp index a35585582..6e8467c1a 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -47,31 +47,20 @@ Topology::Topology(const RuntimeEnvironment *renv) : unsigned int ptr = 0; while ((ptr + 4) < alls.size()) { - // Each Peer serializes itself prefixed by a record length (not including the size of the length itself) - unsigned int reclen = (unsigned int)all[ptr] & 0xff; - reclen <<= 8; - reclen |= (unsigned int)all[ptr + 1] & 0xff; - reclen <<= 8; - reclen |= (unsigned int)all[ptr + 2] & 0xff; - reclen <<= 8; - reclen |= (unsigned int)all[ptr + 3] & 0xff; - - if (((ptr + reclen) > alls.size())||(reclen > ZT_PEER_SUGGESTED_SERIALIZATION_BUFFER_SIZE)) - break; - try { + const unsigned int reclen = ( // each Peer serialized record is prefixed by a record length + ((((unsigned int)all[ptr]) & 0xff) << 24) | + ((((unsigned int)all[ptr + 1]) & 0xff) << 16) | + ((((unsigned int)all[ptr + 2]) & 0xff) << 8) | + (((unsigned int)all[ptr + 3]) & 0xff) + ); unsigned int pos = 0; - SharedPtr p(Peer::deserializeNew(RR->identity,Buffer(all + ptr,reclen),pos)); - if (pos != reclen) - break; + SharedPtr p(Peer::deserializeNew(RR->identity,Buffer(all + ptr,reclen + 4),pos)); ptr += pos; - if ((p)&&(p->address() != RR->identity.address())) { - _peers[p->address()] = p; - } else { + if (!p) break; // stop if invalid records - } - } catch (std::exception &exc) { - break; + if (p->address() != RR->identity.address()) + _peers[p->address()] = p; } catch ( ... ) { break; // stop if invalid records } From 781f06ef82033cdf2488f80266b3f7a8497eba69 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 16 Oct 2015 10:48:38 -0700 Subject: [PATCH 078/314] Accept OK for confirm of HELLO or ECHO. --- node/Peer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/node/Peer.cpp b/node/Peer.cpp index 8c5c57831..76b1d537f 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -101,9 +101,9 @@ void Peer::received( } if (!pathIsConfirmed) { - if ((verb == Packet::VERB_OK)&&(inReVerb == Packet::VERB_HELLO)) { + if ((verb == Packet::VERB_OK)&&((inReVerb == Packet::VERB_HELLO)||(inReVerb == Packet::VERB_ECHO))) { - // Learn paths if they've been confirmed via a HELLO + // Learn paths if they've been confirmed via a HELLO or an ECHO RemotePath *slot = (RemotePath *)0; if (np < ZT_MAX_PEER_NETWORK_PATHS) { // Add new path From cc4d0199e7aa56d08e91dd9e21bbaba318afa8a4 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 16 Oct 2015 10:58:59 -0700 Subject: [PATCH 079/314] Fix vProto init. --- node/Peer.cpp | 1 + node/Peer.hpp | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/node/Peer.cpp b/node/Peer.cpp index 76b1d537f..fdc8dca71 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -55,6 +55,7 @@ Peer::Peer(const Identity &myIdentity,const Identity &peerIdentity) _lastDirectPathPushSent(0), _lastDirectPathPushReceived(0), _lastPathSort(0), + _vProto(0), _vMajor(0), _vMinor(0), _vRevision(0), diff --git a/node/Peer.hpp b/node/Peer.hpp index 7e7e7f465..0aca70b4f 100644 --- a/node/Peer.hpp +++ b/node/Peer.hpp @@ -330,7 +330,6 @@ public: */ inline void setRemoteVersion(unsigned int vproto,unsigned int vmaj,unsigned int vmin,unsigned int vrev) { - Mutex::Lock _l(_lock); _vProto = (uint16_t)vproto; _vMajor = (uint16_t)vmaj; _vMinor = (uint16_t)vmin; From 738fa5a5e5fc99512465032aec5916867f70e86b Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 16 Oct 2015 12:10:57 -0700 Subject: [PATCH 080/314] . --- node/Cluster.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/node/Cluster.hpp b/node/Cluster.hpp index 13d9e2f50..01db3641c 100644 --- a/node/Cluster.hpp +++ b/node/Cluster.hpp @@ -61,6 +61,11 @@ */ #define ZT_CLUSTER_MEMBER_MAX_PHYSICAL_ADDRS 8 +/** + * How frequently should doPeriodicTasks() be ideally called? (ms) + */ +#define ZT_CLUSTER_PERIODIC_TASK_DEADLINE 10 + namespace ZeroTier { class RuntimeEnvironment; @@ -238,7 +243,7 @@ public: void replicateCertificateOfNetworkMembership(const CertificateOfMembership &com); /** - * This should be called no less frequently than once every 10 seconds. + * Call every ~ZT_CLUSTER_PERIODIC_TASK_DEADLINE milliseconds. */ void doPeriodicTasks(); From 0c43d34ce3294ca581f8918904c035e9d57aa72d Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 19 Oct 2015 10:00:35 -0700 Subject: [PATCH 081/314] World test stuff... some of this will be yanked before release. --- world/README.md | 4 +- world/alice-test/build.sh | 1 + world/alice-test/mkworld.cpp | 180 +++++++++++++++++++++++++++++++++++ world/build.sh | 1 + world/mkworld.cpp | 12 +-- 5 files changed, 189 insertions(+), 9 deletions(-) create mode 100755 world/alice-test/build.sh create mode 100644 world/alice-test/mkworld.cpp create mode 100755 world/build.sh diff --git a/world/README.md b/world/README.md index fbd8a0ae3..dda4920ae 100644 --- a/world/README.md +++ b/world/README.md @@ -3,7 +3,5 @@ World Definitions and Generator Code This little bit of code is used to generate world updates. Ordinary users probably will never need this unless they want to test or experiment. -See mkworld.cpp for documentation. To build from this directory: - - c++ -o mkworld ../node/C25519.cpp ../node/Salsa20.cpp ../node/SHA512.cpp ../node/Identity.cpp ../node/Utils.cpp ../node/InetAddress.cpp ../osdep/OSUtils.cpp mkworld.cpp +See mkworld.cpp for documentation. To build from this directory use 'source ./build.sh'. diff --git a/world/alice-test/build.sh b/world/alice-test/build.sh new file mode 100755 index 000000000..58f212118 --- /dev/null +++ b/world/alice-test/build.sh @@ -0,0 +1 @@ +c++ -I../.. -o mkworld ../../node/C25519.cpp ../../node/Salsa20.cpp ../../node/SHA512.cpp ../../node/Identity.cpp ../../node/Utils.cpp ../../node/InetAddress.cpp ../../osdep/OSUtils.cpp mkworld.cpp diff --git a/world/alice-test/mkworld.cpp b/world/alice-test/mkworld.cpp new file mode 100644 index 000000000..42f3ab726 --- /dev/null +++ b/world/alice-test/mkworld.cpp @@ -0,0 +1,180 @@ +/* + * ZeroTier One - Network Virtualization Everywhere + * Copyright (C) 2011-2015 ZeroTier, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * -- + * + * ZeroTier may be used and distributed under the terms of the GPLv3, which + * are available at: http://www.gnu.org/licenses/gpl-3.0.html + * + * If you would like to embed ZeroTier into a commercial application or + * redistribute it in a modified binary form, please contact ZeroTier Networks + * LLC. Start here: http://www.zerotier.com/ + */ + +/* + * This utility makes the World from the configuration specified below. + * It probably won't be much use to anyone outside ZeroTier, Inc. except + * for testing and experimentation purposes. + * + * If you want to make your own World you must edit this file. + * + * When run, it expects two files in the current directory: + * + * previous.c25519 - key pair to sign this world (key from previous world) + * current.c25519 - key pair whose public key should be embedded in this world + * + * If these files do not exist, they are both created with the same key pair + * and a self-signed initial World is born. + */ + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +using namespace ZeroTier; + +class WorldMaker : public World +{ +public: + static inline World make(uint64_t id,uint64_t ts,const C25519::Public &sk,const std::vector &roots,const C25519::Pair &signWith) + { + WorldMaker w; + w._id = id; + w._ts = ts; + w._updateSigningKey = sk; + w._roots = roots; + + Buffer tmp; + w.serialize(tmp,true); + w._signature = C25519::sign(signWith,tmp.data(),tmp.size()); + + return w; + } +}; + +int main(int argc,char **argv) +{ + std::string previous,current; + if ((!OSUtils::readFile("previous.c25519",previous))||(!OSUtils::readFile("current.c25519",current))) { + C25519::Pair np(C25519::generate()); + previous = std::string(); + previous.append((const char *)np.pub.data,ZT_C25519_PUBLIC_KEY_LEN); + previous.append((const char *)np.priv.data,ZT_C25519_PRIVATE_KEY_LEN); + current = previous; + OSUtils::writeFile("previous.c25519",previous); + OSUtils::writeFile("current.c25519",current); + fprintf(stderr,"INFO: created initial world keys: previous.c25519, current.c25519"ZT_EOL_S); + } + + if ((previous.length() != (ZT_C25519_PUBLIC_KEY_LEN + ZT_C25519_PRIVATE_KEY_LEN))||(current.length() != (ZT_C25519_PUBLIC_KEY_LEN + ZT_C25519_PRIVATE_KEY_LEN))) { + fprintf(stderr,"FATAL: previous.c25519 or current.c25519 empty or invalid"ZT_EOL_S); + return 1; + } + C25519::Pair previousKP; + memcpy(previousKP.pub.data,previous.data(),ZT_C25519_PUBLIC_KEY_LEN); + memcpy(previousKP.priv.data,previous.data() + ZT_C25519_PUBLIC_KEY_LEN,ZT_C25519_PRIVATE_KEY_LEN); + C25519::Pair currentKP; + memcpy(currentKP.pub.data,current.data(),ZT_C25519_PUBLIC_KEY_LEN); + memcpy(currentKP.priv.data,current.data() + ZT_C25519_PUBLIC_KEY_LEN,ZT_C25519_PRIVATE_KEY_LEN); + + //////////////////////////////////////////////////////////////////////////// + // EDIT BELOW HERE --------------------------------------------------------- + //////////////////////////////////////////////////////////////////////////// + + std::vector roots; + +#if 0 + // Old pre-October-2015 root server infrastructure with four independent single node roots -- it served us well! + // old US-SFO + roots.push_back(World::Root()); + roots.back().identity = Identity("7e19876aba:0:2a6e2b2318930f60eb097f70d0f4b028b2cd6d3d0c63c014b9039ff35390e41181f216fb2e6fa8d95c1ee9667156411905c3dccfea78d8c6dfafba688170b3fa"); + roots.back().stableEndpoints.push_back(InetAddress("198.199.97.220/9993")); + std::sort(roots.back().stableEndpoints.begin(),roots.back().stableEndpoints.end()); + // old EU-PARIS + roots.push_back(World::Root()); + roots.back().identity = Identity("8841408a2e:0:bb1d31f2c323e264e9e64172c1a74f77899555ed10751cd56e86405cde118d02dffe555d462ccf6a85b5631c12350c8d5dc409ba10b9025d0f445cf449d92b1c"); + roots.back().stableEndpoints.push_back(InetAddress("107.191.46.210/9993")); + std::sort(roots.back().stableEndpoints.begin(),roots.back().stableEndpoints.end()); + // old US-NYC + roots.push_back(World::Root()); + roots.back().identity = Identity("8acf059fe3:0:482f6ee5dfe902319b419de5bdc765209c0ecda38c4d6e4fcf0d33658398b4527dcd22f93112fb9befd02fd78bf7261b333fc105d192a623ca9e50fc60b374a5"); + roots.back().stableEndpoints.push_back(InetAddress("162.243.77.111/9993")); + std::sort(roots.back().stableEndpoints.begin(),roots.back().stableEndpoints.end()); + // old AP-SNG + roots.push_back(World::Root()); + roots.back().identity = Identity("9d219039f3:0:01f0922a98e3b34ebcbff333269dc265d7a020aab69d72be4d4acc9c8c9294785771256cd1d942a90d1bd1d2dca3ea84ef7d85afe6611fb43ff0b74126d90a6e"); + roots.back().stableEndpoints.push_back(InetAddress("128.199.197.217/9993")); + std::sort(roots.back().stableEndpoints.begin(),roots.back().stableEndpoints.end()); +#endif + + // ALICE TEST + roots.push_back(World::Root()); + roots.back().identity = Identity(""); + roots.back().stableEndpoints.push_back(InetAddress("169.57.143.104/9993")); + std::sort(roots.back().stableEndpoints.begin(),roots.back().stableEndpoints.end()); + + std::sort(roots.begin(),roots.end()); + + const uint64_t id = ZT_WORLD_ID_EARTH; + const uint64_t ts = OSUtils::now(); + + //////////////////////////////////////////////////////////////////////////// + // END WORLD SETUP --------------------------------------------------------- + //////////////////////////////////////////////////////////////////////////// + + fprintf(stderr,"INFO: generating and signing id==%llu ts==%llu"ZT_EOL_S,(unsigned long long)id,(unsigned long long)ts); + + World nw = WorldMaker::make(id,ts,currentKP.pub,roots,previousKP); + + Buffer outtmp; + nw.serialize(outtmp,false); + World testw; + testw.deserialize(outtmp,0); + if (testw != nw) { + fprintf(stderr,"FATAL: serialization test failed!"ZT_EOL_S); + return 1; + } + fwrite(outtmp.data(),outtmp.size(),1,stdout); + fflush(stdout); + + fprintf(stderr,"INFO: wrote %u bytes to stdout"ZT_EOL_S,outtmp.size()); + + fprintf(stderr,ZT_EOL_S); + fprintf(stderr,"#define ZT_DEFAULT_WORLD_LENGTH %u"ZT_EOL_S,outtmp.size()); + fprintf(stderr,"static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {"); + for(unsigned int i=0;i 0) + fprintf(stderr,","); + fprintf(stderr,"0x%.2x",(unsigned int)d[i]); + } + fprintf(stderr,"};"ZT_EOL_S); + + return 0; +} diff --git a/world/build.sh b/world/build.sh new file mode 100755 index 000000000..b783702c3 --- /dev/null +++ b/world/build.sh @@ -0,0 +1 @@ +c++ -I.. -o mkworld ../node/C25519.cpp ../node/Salsa20.cpp ../node/SHA512.cpp ../node/Identity.cpp ../node/Utils.cpp ../node/InetAddress.cpp ../osdep/OSUtils.cpp mkworld.cpp diff --git a/world/mkworld.cpp b/world/mkworld.cpp index 75230da42..fd7bb51f6 100644 --- a/world/mkworld.cpp +++ b/world/mkworld.cpp @@ -50,12 +50,12 @@ #include #include -#include "../node/Constants.hpp" -#include "../node/World.hpp" -#include "../node/C25519.hpp" -#include "../node/Identity.hpp" -#include "../node/InetAddress.hpp" -#include "../osdep/OSUtils.hpp" +#include +#include +#include +#include +#include +#include using namespace ZeroTier; From aa6e3c79a0d5942b289a6efc68c61667ce4059a7 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 19 Oct 2015 10:49:31 -0700 Subject: [PATCH 082/314] Some test stuff that will not be pushed elsewhere. --- node/Topology.cpp | 8 ++++++-- world/alice-test/alice-test.bin | Bin 0 -> 257 bytes world/alice-test/alice-test.out | 5 +++++ world/alice-test/current.c25519 | 3 +++ world/alice-test/mkworld.cpp | 2 +- world/alice-test/previous.c25519 | 3 +++ 6 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 world/alice-test/alice-test.bin create mode 100644 world/alice-test/alice-test.out create mode 100644 world/alice-test/current.c25519 create mode 100644 world/alice-test/previous.c25519 diff --git a/node/Topology.cpp b/node/Topology.cpp index 6e8467c1a..e36a06097 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -34,8 +34,12 @@ namespace ZeroTier { // Default World -#define ZT_DEFAULT_WORLD_LENGTH 494 -static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x4f,0xdf,0xbf,0xfc,0xbb,0x6c,0x7e,0x15,0x67,0x85,0x1b,0xb4,0x65,0x04,0x01,0xaf,0x56,0xbf,0xe7,0x63,0x9d,0x77,0xef,0xa4,0x1e,0x61,0x53,0x88,0xcb,0x8d,0x78,0xe5,0x47,0x38,0x98,0x5a,0x6c,0x8a,0xdd,0xe6,0x9c,0x65,0xdf,0x1a,0x80,0x63,0xce,0x2e,0x4d,0x48,0x24,0x3d,0x68,0x87,0x96,0x13,0x89,0xba,0x25,0x6f,0xc9,0xb0,0x9f,0x20,0xc5,0x4c,0x51,0x7b,0x30,0xb7,0x5f,0xba,0xca,0xa4,0xc5,0x48,0xa3,0x15,0xab,0x2f,0x1d,0x64,0xe8,0x04,0x42,0xb3,0x1c,0x51,0x8b,0x2a,0x04,0x01,0xf8,0xe1,0x81,0xaf,0x60,0x2f,0x70,0x3e,0xcd,0x0b,0x21,0x38,0x19,0x62,0x02,0xbd,0x0e,0x33,0x1d,0x0a,0x7b,0xf1,0xec,0xad,0xef,0x54,0xb3,0x7b,0x17,0x84,0xaa,0xda,0x0a,0x85,0x5d,0x0b,0x1c,0x05,0x83,0xb9,0x0e,0x3e,0xe3,0xb4,0xd1,0x8b,0x5b,0x64,0xf7,0xcf,0xe1,0xff,0x5d,0xc2,0x2a,0xcf,0x60,0x7b,0x09,0xb4,0xa3,0x86,0x3c,0x5a,0x7e,0x31,0xa0,0xc7,0xb4,0x86,0xe3,0x41,0x33,0x04,0x7e,0x19,0x87,0x6a,0xba,0x00,0x2a,0x6e,0x2b,0x23,0x18,0x93,0x0f,0x60,0xeb,0x09,0x7f,0x70,0xd0,0xf4,0xb0,0x28,0xb2,0xcd,0x6d,0x3d,0x0c,0x63,0xc0,0x14,0xb9,0x03,0x9f,0xf3,0x53,0x90,0xe4,0x11,0x81,0xf2,0x16,0xfb,0x2e,0x6f,0xa8,0xd9,0x5c,0x1e,0xe9,0x66,0x71,0x56,0x41,0x19,0x05,0xc3,0xdc,0xcf,0xea,0x78,0xd8,0xc6,0xdf,0xaf,0xba,0x68,0x81,0x70,0xb3,0xfa,0x00,0x01,0x04,0xc6,0xc7,0x61,0xdc,0x27,0x09,0x88,0x41,0x40,0x8a,0x2e,0x00,0xbb,0x1d,0x31,0xf2,0xc3,0x23,0xe2,0x64,0xe9,0xe6,0x41,0x72,0xc1,0xa7,0x4f,0x77,0x89,0x95,0x55,0xed,0x10,0x75,0x1c,0xd5,0x6e,0x86,0x40,0x5c,0xde,0x11,0x8d,0x02,0xdf,0xfe,0x55,0x5d,0x46,0x2c,0xcf,0x6a,0x85,0xb5,0x63,0x1c,0x12,0x35,0x0c,0x8d,0x5d,0xc4,0x09,0xba,0x10,0xb9,0x02,0x5d,0x0f,0x44,0x5c,0xf4,0x49,0xd9,0x2b,0x1c,0x00,0x01,0x04,0x6b,0xbf,0x2e,0xd2,0x27,0x09,0x8a,0xcf,0x05,0x9f,0xe3,0x00,0x48,0x2f,0x6e,0xe5,0xdf,0xe9,0x02,0x31,0x9b,0x41,0x9d,0xe5,0xbd,0xc7,0x65,0x20,0x9c,0x0e,0xcd,0xa3,0x8c,0x4d,0x6e,0x4f,0xcf,0x0d,0x33,0x65,0x83,0x98,0xb4,0x52,0x7d,0xcd,0x22,0xf9,0x31,0x12,0xfb,0x9b,0xef,0xd0,0x2f,0xd7,0x8b,0xf7,0x26,0x1b,0x33,0x3f,0xc1,0x05,0xd1,0x92,0xa6,0x23,0xca,0x9e,0x50,0xfc,0x60,0xb3,0x74,0xa5,0x00,0x01,0x04,0xa2,0xf3,0x4d,0x6f,0x27,0x09,0x9d,0x21,0x90,0x39,0xf3,0x00,0x01,0xf0,0x92,0x2a,0x98,0xe3,0xb3,0x4e,0xbc,0xbf,0xf3,0x33,0x26,0x9d,0xc2,0x65,0xd7,0xa0,0x20,0xaa,0xb6,0x9d,0x72,0xbe,0x4d,0x4a,0xcc,0x9c,0x8c,0x92,0x94,0x78,0x57,0x71,0x25,0x6c,0xd1,0xd9,0x42,0xa9,0x0d,0x1b,0xd1,0xd2,0xdc,0xa3,0xea,0x84,0xef,0x7d,0x85,0xaf,0xe6,0x61,0x1f,0xb4,0x3f,0xf0,0xb7,0x41,0x26,0xd9,0x0a,0x6e,0x00,0x01,0x04,0x80,0xc7,0xc5,0xd9,0x27,0x09}; +//#define ZT_DEFAULT_WORLD_LENGTH 494 +//static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x4f,0xdf,0xbf,0xfc,0xbb,0x6c,0x7e,0x15,0x67,0x85,0x1b,0xb4,0x65,0x04,0x01,0xaf,0x56,0xbf,0xe7,0x63,0x9d,0x77,0xef,0xa4,0x1e,0x61,0x53,0x88,0xcb,0x8d,0x78,0xe5,0x47,0x38,0x98,0x5a,0x6c,0x8a,0xdd,0xe6,0x9c,0x65,0xdf,0x1a,0x80,0x63,0xce,0x2e,0x4d,0x48,0x24,0x3d,0x68,0x87,0x96,0x13,0x89,0xba,0x25,0x6f,0xc9,0xb0,0x9f,0x20,0xc5,0x4c,0x51,0x7b,0x30,0xb7,0x5f,0xba,0xca,0xa4,0xc5,0x48,0xa3,0x15,0xab,0x2f,0x1d,0x64,0xe8,0x04,0x42,0xb3,0x1c,0x51,0x8b,0x2a,0x04,0x01,0xf8,0xe1,0x81,0xaf,0x60,0x2f,0x70,0x3e,0xcd,0x0b,0x21,0x38,0x19,0x62,0x02,0xbd,0x0e,0x33,0x1d,0x0a,0x7b,0xf1,0xec,0xad,0xef,0x54,0xb3,0x7b,0x17,0x84,0xaa,0xda,0x0a,0x85,0x5d,0x0b,0x1c,0x05,0x83,0xb9,0x0e,0x3e,0xe3,0xb4,0xd1,0x8b,0x5b,0x64,0xf7,0xcf,0xe1,0xff,0x5d,0xc2,0x2a,0xcf,0x60,0x7b,0x09,0xb4,0xa3,0x86,0x3c,0x5a,0x7e,0x31,0xa0,0xc7,0xb4,0x86,0xe3,0x41,0x33,0x04,0x7e,0x19,0x87,0x6a,0xba,0x00,0x2a,0x6e,0x2b,0x23,0x18,0x93,0x0f,0x60,0xeb,0x09,0x7f,0x70,0xd0,0xf4,0xb0,0x28,0xb2,0xcd,0x6d,0x3d,0x0c,0x63,0xc0,0x14,0xb9,0x03,0x9f,0xf3,0x53,0x90,0xe4,0x11,0x81,0xf2,0x16,0xfb,0x2e,0x6f,0xa8,0xd9,0x5c,0x1e,0xe9,0x66,0x71,0x56,0x41,0x19,0x05,0xc3,0xdc,0xcf,0xea,0x78,0xd8,0xc6,0xdf,0xaf,0xba,0x68,0x81,0x70,0xb3,0xfa,0x00,0x01,0x04,0xc6,0xc7,0x61,0xdc,0x27,0x09,0x88,0x41,0x40,0x8a,0x2e,0x00,0xbb,0x1d,0x31,0xf2,0xc3,0x23,0xe2,0x64,0xe9,0xe6,0x41,0x72,0xc1,0xa7,0x4f,0x77,0x89,0x95,0x55,0xed,0x10,0x75,0x1c,0xd5,0x6e,0x86,0x40,0x5c,0xde,0x11,0x8d,0x02,0xdf,0xfe,0x55,0x5d,0x46,0x2c,0xcf,0x6a,0x85,0xb5,0x63,0x1c,0x12,0x35,0x0c,0x8d,0x5d,0xc4,0x09,0xba,0x10,0xb9,0x02,0x5d,0x0f,0x44,0x5c,0xf4,0x49,0xd9,0x2b,0x1c,0x00,0x01,0x04,0x6b,0xbf,0x2e,0xd2,0x27,0x09,0x8a,0xcf,0x05,0x9f,0xe3,0x00,0x48,0x2f,0x6e,0xe5,0xdf,0xe9,0x02,0x31,0x9b,0x41,0x9d,0xe5,0xbd,0xc7,0x65,0x20,0x9c,0x0e,0xcd,0xa3,0x8c,0x4d,0x6e,0x4f,0xcf,0x0d,0x33,0x65,0x83,0x98,0xb4,0x52,0x7d,0xcd,0x22,0xf9,0x31,0x12,0xfb,0x9b,0xef,0xd0,0x2f,0xd7,0x8b,0xf7,0x26,0x1b,0x33,0x3f,0xc1,0x05,0xd1,0x92,0xa6,0x23,0xca,0x9e,0x50,0xfc,0x60,0xb3,0x74,0xa5,0x00,0x01,0x04,0xa2,0xf3,0x4d,0x6f,0x27,0x09,0x9d,0x21,0x90,0x39,0xf3,0x00,0x01,0xf0,0x92,0x2a,0x98,0xe3,0xb3,0x4e,0xbc,0xbf,0xf3,0x33,0x26,0x9d,0xc2,0x65,0xd7,0xa0,0x20,0xaa,0xb6,0x9d,0x72,0xbe,0x4d,0x4a,0xcc,0x9c,0x8c,0x92,0x94,0x78,0x57,0x71,0x25,0x6c,0xd1,0xd9,0x42,0xa9,0x0d,0x1b,0xd1,0xd2,0xdc,0xa3,0xea,0x84,0xef,0x7d,0x85,0xaf,0xe6,0x61,0x1f,0xb4,0x3f,0xf0,0xb7,0x41,0x26,0xd9,0x0a,0x6e,0x00,0x01,0x04,0x80,0xc7,0xc5,0xd9,0x27,0x09}; + +// ALICE-TEST +#define ZT_DEFAULT_WORLD_LENGTH 257 +static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x50,0x81,0x2a,0x54,0x6f,0x72,0xb0,0x3b,0xbe,0x73,0xda,0xbd,0xfb,0x85,0x77,0x9f,0xc9,0x2e,0x17,0xc8,0x11,0x6e,0xda,0x61,0x80,0xd1,0x41,0xcb,0x7c,0x2d,0x2b,0xa4,0x34,0x75,0x19,0x64,0x20,0x80,0x0a,0x22,0x32,0xf2,0x01,0x6c,0xfe,0x79,0xa6,0x7d,0xec,0x10,0x7e,0x03,0xf3,0xa2,0xa0,0x19,0xc8,0x7c,0xfd,0x6c,0x56,0x52,0xa8,0xfb,0xdc,0xfb,0x93,0x81,0x3e,0x63,0x8b,0xb3,0xb6,0x72,0x45,0xa9,0x81,0x81,0xcc,0xea,0x7f,0x2f,0xd9,0x59,0xce,0xc8,0x51,0x12,0xc3,0xe3,0x44,0x76,0x54,0xed,0xe7,0x8d,0x34,0x0b,0x5d,0x10,0x3d,0x52,0x04,0x9b,0xe1,0xb2,0x36,0x51,0x75,0x14,0x30,0x53,0xe8,0x4b,0xe4,0x91,0x9a,0xed,0x99,0x56,0xa3,0x8d,0x5e,0x14,0xff,0x66,0xd8,0x4f,0xf7,0x3c,0x23,0xbe,0x02,0xbb,0x1e,0xb6,0x7e,0x07,0xfa,0x7c,0x7e,0x50,0xe8,0x40,0xf9,0x37,0x70,0x1a,0x75,0xcf,0x19,0xe6,0x83,0xe1,0x5c,0x20,0x1d,0x1e,0x5b,0xe5,0x6a,0xbe,0xe7,0xab,0xec,0x01,0xd6,0xdd,0xca,0x6a,0xb5,0x00,0x4e,0x76,0x12,0x07,0xd8,0xb4,0x20,0x0b,0xe4,0x4f,0x47,0x8e,0x3d,0xa1,0x48,0xc1,0x60,0x99,0x11,0x0e,0xe7,0x1b,0x64,0x58,0x6d,0xda,0x11,0x8e,0x40,0x22,0xab,0x63,0x68,0x2c,0xe1,0x37,0xda,0x8b,0xa8,0x17,0xfc,0x7f,0x73,0xaa,0x31,0x63,0xf2,0xe3,0x33,0x93,0x3e,0x29,0x94,0xc4,0x6b,0x4f,0x41,0x19,0x30,0x7b,0xe8,0x85,0x5a,0x72,0x00,0x01,0x04,0xa9,0x39,0x8f,0x68,0x27,0x09}; Topology::Topology(const RuntimeEnvironment *renv) : RR(renv), diff --git a/world/alice-test/alice-test.bin b/world/alice-test/alice-test.bin new file mode 100644 index 0000000000000000000000000000000000000000..2fdaf7b3066231ea0663e5da6f566610b3e43ad3 GIT binary patch literal 257 zcmV+c0sj60000002*%QPe+bDp-91C znGp`>8)R5*+7XUGBCBI)Ea5lWi>Md;e{-raWAfuOlRhbw#A{DM88Cb3g<5g|0R*Wz Hk7y?eM5=X^ literal 0 HcmV?d00001 diff --git a/world/alice-test/alice-test.out b/world/alice-test/alice-test.out new file mode 100644 index 000000000..20077bf2e --- /dev/null +++ b/world/alice-test/alice-test.out @@ -0,0 +1,5 @@ +INFO: generating and signing id==149604618 ts==1445276046447 +INFO: wrote 257 bytes to stdout + +#define ZT_DEFAULT_WORLD_LENGTH 257 +static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x50,0x81,0x2a,0x54,0x6f,0x72,0xb0,0x3b,0xbe,0x73,0xda,0xbd,0xfb,0x85,0x77,0x9f,0xc9,0x2e,0x17,0xc8,0x11,0x6e,0xda,0x61,0x80,0xd1,0x41,0xcb,0x7c,0x2d,0x2b,0xa4,0x34,0x75,0x19,0x64,0x20,0x80,0x0a,0x22,0x32,0xf2,0x01,0x6c,0xfe,0x79,0xa6,0x7d,0xec,0x10,0x7e,0x03,0xf3,0xa2,0xa0,0x19,0xc8,0x7c,0xfd,0x6c,0x56,0x52,0xa8,0xfb,0xdc,0xfb,0x93,0x81,0x3e,0x63,0x8b,0xb3,0xb6,0x72,0x45,0xa9,0x81,0x81,0xcc,0xea,0x7f,0x2f,0xd9,0x59,0xce,0xc8,0x51,0x12,0xc3,0xe3,0x44,0x76,0x54,0xed,0xe7,0x8d,0x34,0x0b,0x5d,0x10,0x3d,0x52,0x04,0x9b,0xe1,0xb2,0x36,0x51,0x75,0x14,0x30,0x53,0xe8,0x4b,0xe4,0x91,0x9a,0xed,0x99,0x56,0xa3,0x8d,0x5e,0x14,0xff,0x66,0xd8,0x4f,0xf7,0x3c,0x23,0xbe,0x02,0xbb,0x1e,0xb6,0x7e,0x07,0xfa,0x7c,0x7e,0x50,0xe8,0x40,0xf9,0x37,0x70,0x1a,0x75,0xcf,0x19,0xe6,0x83,0xe1,0x5c,0x20,0x1d,0x1e,0x5b,0xe5,0x6a,0xbe,0xe7,0xab,0xec,0x01,0xd6,0xdd,0xca,0x6a,0xb5,0x00,0x4e,0x76,0x12,0x07,0xd8,0xb4,0x20,0x0b,0xe4,0x4f,0x47,0x8e,0x3d,0xa1,0x48,0xc1,0x60,0x99,0x11,0x0e,0xe7,0x1b,0x64,0x58,0x6d,0xda,0x11,0x8e,0x40,0x22,0xab,0x63,0x68,0x2c,0xe1,0x37,0xda,0x8b,0xa8,0x17,0xfc,0x7f,0x73,0xaa,0x31,0x63,0xf2,0xe3,0x33,0x93,0x3e,0x29,0x94,0xc4,0x6b,0x4f,0x41,0x19,0x30,0x7b,0xe8,0x85,0x5a,0x72,0x00,0x01,0x04,0xa9,0x39,0x8f,0x68,0x27,0x09}; diff --git a/world/alice-test/current.c25519 b/world/alice-test/current.c25519 new file mode 100644 index 000000000..a3e6d5968 --- /dev/null +++ b/world/alice-test/current.c25519 @@ -0,0 +1,3 @@ +r°;¾sÚ½û…wŸÉ.ÈnÚa€ÑAË|-+¤4ud € +"2òlþy¦}ì~ó¢ È|ýlVR¨ûÜû“>–“H6_¬±ŸýoFÑ@`ð¥5©þ+\ú&³•tå<þ2 +›Å£¡îÖŠjnã(fJÃç´®Uݸ†Î)¶™$oî \ No newline at end of file diff --git a/world/alice-test/mkworld.cpp b/world/alice-test/mkworld.cpp index 42f3ab726..e680b97ee 100644 --- a/world/alice-test/mkworld.cpp +++ b/world/alice-test/mkworld.cpp @@ -135,7 +135,7 @@ int main(int argc,char **argv) // ALICE TEST roots.push_back(World::Root()); - roots.back().identity = Identity(""); + roots.back().identity = Identity("d6ddca6ab5:0:4e761207d8b4200be44f478e3da148c16099110ee71b64586dda118e4022ab63682ce137da8ba817fc7f73aa3163f2e333933e2994c46b4f4119307be8855a72"); roots.back().stableEndpoints.push_back(InetAddress("169.57.143.104/9993")); std::sort(roots.back().stableEndpoints.begin(),roots.back().stableEndpoints.end()); diff --git a/world/alice-test/previous.c25519 b/world/alice-test/previous.c25519 new file mode 100644 index 000000000..a3e6d5968 --- /dev/null +++ b/world/alice-test/previous.c25519 @@ -0,0 +1,3 @@ +r°;¾sÚ½û…wŸÉ.ÈnÚa€ÑAË|-+¤4ud € +"2òlþy¦}ì~ó¢ È|ýlVR¨ûÜû“>–“H6_¬±ŸýoFÑ@`ð¥5©þ+\ú&³•tå<þ2 +›Å£¡îÖŠjnã(fJÃç´®Uݸ†Î)¶™$oî \ No newline at end of file From 95953b48f963213a803b230e2d83416257716e65 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 19 Oct 2015 12:56:29 -0700 Subject: [PATCH 083/314] Do not allow VERB_RENDEZVOUS from non-upstream peers to block potential DOS vector. --- node/IncomingPacket.cpp | 29 +++++++++++++++++------------ node/Topology.cpp | 19 +++++++++++++++++++ node/Topology.hpp | 15 +++++++-------- 3 files changed, 43 insertions(+), 20 deletions(-) diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 4386e3708..6b39963ab 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -461,21 +461,26 @@ bool IncomingPacket::_doWHOIS(const RuntimeEnvironment *RR,const SharedPtr bool IncomingPacket::_doRENDEZVOUS(const RuntimeEnvironment *RR,const SharedPtr &peer) { try { - const Address with(field(ZT_PROTO_VERB_RENDEZVOUS_IDX_ZTADDRESS,ZT_ADDRESS_LENGTH),ZT_ADDRESS_LENGTH); - const SharedPtr withPeer(RR->topology->getPeer(with)); - if (withPeer) { - const unsigned int port = at(ZT_PROTO_VERB_RENDEZVOUS_IDX_PORT); - const unsigned int addrlen = (*this)[ZT_PROTO_VERB_RENDEZVOUS_IDX_ADDRLEN]; - if ((port > 0)&&((addrlen == 4)||(addrlen == 16))) { - InetAddress atAddr(field(ZT_PROTO_VERB_RENDEZVOUS_IDX_ADDRESS,addrlen),addrlen,port); - TRACE("RENDEZVOUS from %s says %s might be at %s, starting NAT-t",peer->address().toString().c_str(),with.toString().c_str(),atAddr.toString().c_str()); - peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_RENDEZVOUS,0,Packet::VERB_NOP); - RR->sw->rendezvous(withPeer,_localAddress,atAddr); + if (RR->topology->isUpstream(peer->identity())) { + const Address with(field(ZT_PROTO_VERB_RENDEZVOUS_IDX_ZTADDRESS,ZT_ADDRESS_LENGTH),ZT_ADDRESS_LENGTH); + const SharedPtr withPeer(RR->topology->getPeer(with)); + if (withPeer) { + const unsigned int port = at(ZT_PROTO_VERB_RENDEZVOUS_IDX_PORT); + const unsigned int addrlen = (*this)[ZT_PROTO_VERB_RENDEZVOUS_IDX_ADDRLEN]; + if ((port > 0)&&((addrlen == 4)||(addrlen == 16))) { + InetAddress atAddr(field(ZT_PROTO_VERB_RENDEZVOUS_IDX_ADDRESS,addrlen),addrlen,port); + TRACE("RENDEZVOUS from %s says %s might be at %s, starting NAT-t",peer->address().toString().c_str(),with.toString().c_str(),atAddr.toString().c_str()); + peer->received(RR,_localAddress,_remoteAddress,hops(),packetId(),Packet::VERB_RENDEZVOUS,0,Packet::VERB_NOP); + RR->sw->rendezvous(withPeer,_localAddress,atAddr); + } else { + TRACE("dropped corrupt RENDEZVOUS from %s(%s) (bad address or port)",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); + } } else { - TRACE("dropped corrupt RENDEZVOUS from %s(%s) (bad address or port)",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); + RR->sw->requestWhois(with); + TRACE("ignored RENDEZVOUS from %s(%s) to meet unknown peer %s",peer->address().toString().c_str(),_remoteAddress.toString().c_str(),with.toString().c_str()); } } else { - TRACE("ignored RENDEZVOUS from %s(%s) to meet unknown peer %s",peer->address().toString().c_str(),_remoteAddress.toString().c_str(),with.toString().c_str()); + TRACE("ignored RENDEZVOUS from %s(%s): not a root server or a network relay",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); } } catch ( ... ) { TRACE("dropped RENDEZVOUS from %s(%s): unexpected exception",peer->address().toString().c_str(),_remoteAddress.toString().c_str()); diff --git a/node/Topology.cpp b/node/Topology.cpp index e36a06097..dc21b2430 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -29,6 +29,8 @@ #include "Topology.hpp" #include "RuntimeEnvironment.hpp" #include "Node.hpp" +#include "Network.hpp" +#include "NetworkConfig.hpp" #include "Buffer.hpp" namespace ZeroTier { @@ -283,6 +285,23 @@ keep_searching_for_roots: return bestRoot; } +bool Topology::isUpstream(const Identity &id) const +{ + if (isRoot(id)) + return true; + std::vector< SharedPtr > nws(RR->node->allNetworks()); + for(std::vector< SharedPtr >::const_iterator nw(nws.begin());nw!=nws.end();++nw) { + SharedPtr nc((*nw)->config2()); + if (nc) { + for(std::vector< std::pair >::const_iterator r(nc->relays().begin());r!=nc->relays().end();++r) { + if (r->first == id.address()) + return true; + } + } + } + return false; +} + bool Topology::worldUpdateIfValid(const World &newWorld) { Mutex::Lock _l(_lock); diff --git a/node/Topology.hpp b/node/Topology.hpp index 9e9ccc011..48e264a87 100644 --- a/node/Topology.hpp +++ b/node/Topology.hpp @@ -136,16 +136,15 @@ public: inline bool isRoot(const Identity &id) const { Mutex::Lock _l(_lock); - if (std::find(_rootAddresses.begin(),_rootAddresses.end(),id.address()) != _rootAddresses.end()) { - // Double check full identity for security reasons - for(std::vector::const_iterator r(_world.roots().begin());r!=_world.roots().end();++r) { - if (id == r->identity) - return true; - } - } - return false; + return (std::find(_rootAddresses.begin(),_rootAddresses.end(),id.address()) != _rootAddresses.end()); } + /** + * @param id Identity to check + * @return True if this is a root server or a network preferred relay from one of our networks + */ + bool isUpstream(const Identity &id) const; + /** * @return Vector of root server addresses */ From 3adb183c5f76b69013d052383c4b812e3947041e Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 19 Oct 2015 13:38:27 -0700 Subject: [PATCH 084/314] Fix bad COM attachment bug and eliminate an unnecessary redundant check. --- node/IncomingPacket.cpp | 6 ++---- node/Switch.cpp | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 6b39963ab..19747bbd9 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -529,15 +529,13 @@ bool IncomingPacket::_doEXT_FRAME(const RuntimeEnvironment *RR,const SharedPtr

validateAndSetNetworkMembershipCertificate(RR,network->id(),com)) - comFailed = true; + peer->validateAndSetNetworkMembershipCertificate(RR,network->id(),com); } - if ((comFailed)||(!network->isAllowed(peer))) { + if (!network->isAllowed(peer)) { TRACE("dropped EXT_FRAME from %s(%s): not a member of private network %.16llx",peer->address().toString().c_str(),_remoteAddress.toString().c_str(),network->id()); _sendErrorNeedCertificate(RR,peer,network->id()); return true; diff --git a/node/Switch.cpp b/node/Switch.cpp index 9ea8ac49a..249a21d55 100644 --- a/node/Switch.cpp +++ b/node/Switch.cpp @@ -203,7 +203,7 @@ void Switch::onLocalEthernet(const SharedPtr &network,const MAC &from,c Address toZT(to.toAddress(network->id())); // since in-network MACs are derived from addresses and network IDs, we can reverse this SharedPtr toPeer(RR->topology->getPeer(toZT)); - const bool includeCom = ((!toPeer)||(toPeer->needsOurNetworkMembershipCertificate(network->id(),RR->node->now(),true)));; + const bool includeCom = ( (nconf->isPrivate()) && (nconf->com()) && ((!toPeer)||(toPeer->needsOurNetworkMembershipCertificate(network->id(),RR->node->now(),true))) ); if ((fromBridged)||(includeCom)) { Packet outp(toZT,RR->identity.address(),Packet::VERB_EXT_FRAME); outp.append(network->id()); @@ -271,7 +271,7 @@ void Switch::onLocalEthernet(const SharedPtr &network,const MAC &from,c SharedPtr bridgePeer(RR->topology->getPeer(bridges[b])); Packet outp(bridges[b],RR->identity.address(),Packet::VERB_EXT_FRAME); outp.append(network->id()); - if ((!bridgePeer)||(bridgePeer->needsOurNetworkMembershipCertificate(network->id(),RR->node->now(),true))) { + if ( (nconf->isPrivate()) && (nconf->com()) && ((!bridgePeer)||(bridgePeer->needsOurNetworkMembershipCertificate(network->id(),RR->node->now(),true))) ) { outp.append((unsigned char)0x01); // 0x01 -- COM included nconf->com().serialize(outp); } else { From 584072fa6a86b7cca0a708d7dd4c302aa444f2b6 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 19 Oct 2015 14:04:36 -0700 Subject: [PATCH 085/314] Fix for V4/V6 stable addressing. --- node/Node.cpp | 32 ++++++++++++++++++++++++++------ node/Peer.cpp | 1 + 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/node/Node.cpp b/node/Node.cpp index 5aa4b7d31..26d5513e1 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -197,10 +197,11 @@ public: if (!stableEndpoint4) { if (addr.ss_family == AF_INET) stableEndpoint4 = addr; - } else if (!stableEndpoint6) { + } + if (!stableEndpoint6) { if (addr.ss_family == AF_INET6) stableEndpoint6 = addr; - } else break; // have both! + } } break; } @@ -223,10 +224,29 @@ public: if (upstream) { // "Upstream" devices are roots and relays and get special treatment -- they stay alive // forever and we try to keep (if available) both IPv4 and IPv6 channels open to them. - if ((!p->doPingAndKeepalive(RR,_now,AF_INET))&&(stableEndpoint4)) - p->attemptToContactAt(RR,InetAddress(),stableEndpoint4,_now); - if ((!p->doPingAndKeepalive(RR,_now,AF_INET6))&&(stableEndpoint6)) - p->attemptToContactAt(RR,InetAddress(),stableEndpoint6,_now); + bool needToContactIndirect = true; + if (!p->doPingAndKeepalive(RR,_now,AF_INET)) { + if (stableEndpoint4) { + needToContactIndirect = false; + p->attemptToContactAt(RR,InetAddress(),stableEndpoint4,_now); + } + } else needToContactIndirect = false; + if (!p->doPingAndKeepalive(RR,_now,AF_INET6)) { + if (stableEndpoint6) { + needToContactIndirect = false; + p->attemptToContactAt(RR,InetAddress(),stableEndpoint6,_now); + } + } else needToContactIndirect = false; + + if (needToContactIndirect) { + // If this is an upstream and we have no stable endpoint for either IPv4 or IPv6, + // send a NOP indirectly if possible to see if we can get to this peer in any + // way whatsoever. This will e.g. find network preferred relays that lack + // stable endpoints by using root servers. + Packet outp(p->address(),RR->identity.address(),Packet::VERB_NOP); + RR->sw->send(outp,true,0); + } + lastReceiveFromUpstream = std::max(p->lastReceive(),lastReceiveFromUpstream); } else if (p->alive(_now)) { // Normal nodes get their preferred link kept alive if the node has generated frame traffic recently diff --git a/node/Peer.cpp b/node/Peer.cpp index fdc8dca71..a9d2f671a 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -205,6 +205,7 @@ bool Peer::doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now,int inet } return true; } + return false; } From 50f3ccd3c9630dfc0169973573f5b3729524441c Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 19 Oct 2015 15:03:58 -0700 Subject: [PATCH 086/314] . --- node/Peer.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/node/Peer.cpp b/node/Peer.cpp index a9d2f671a..e04081565 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -202,6 +202,8 @@ bool Peer::doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now,int inet _natKeepaliveBuf += (uint32_t)((now * 0x9e3779b1) >> 1); // tumble this around to send constantly varying (meaningless) payloads RR->node->putPacket(p->localAddress(),p->address(),&_natKeepaliveBuf,sizeof(_natKeepaliveBuf)); p->sent(now); + } else { + TRACE("no PING or NAT keepalive: %llums/%llums send/receive inactivity",now - p->lastSend(),now - p->lastReceived()) } return true; } From 915077875759f1040b8bba281ef3d4f82e4ac1ab Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 19 Oct 2015 15:04:26 -0700 Subject: [PATCH 087/314] . --- node/Peer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/Peer.cpp b/node/Peer.cpp index e04081565..ba6ef4af8 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -203,7 +203,7 @@ bool Peer::doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now,int inet RR->node->putPacket(p->localAddress(),p->address(),&_natKeepaliveBuf,sizeof(_natKeepaliveBuf)); p->sent(now); } else { - TRACE("no PING or NAT keepalive: %llums/%llums send/receive inactivity",now - p->lastSend(),now - p->lastReceived()) + TRACE("no PING or NAT keepalive: %llums/%llums send/receive inactivity",now - p->lastSend(),now - p->lastReceived()); } return true; } From 0b2e5ed499aea0076caa2dc1d8784796e54da538 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 19 Oct 2015 15:11:43 -0700 Subject: [PATCH 088/314] Fix some broken logic in Path::reliable() --- node/Path.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/node/Path.hpp b/node/Path.hpp index 6a69e071f..6fa3c52e6 100644 --- a/node/Path.hpp +++ b/node/Path.hpp @@ -114,7 +114,9 @@ public: */ inline bool reliable() const throw() { - return ( (_addr.ss_family == AF_INET6) || ((_ipScope != InetAddress::IP_SCOPE_GLOBAL)&&(_ipScope != InetAddress::IP_SCOPE_PSEUDOPRIVATE)) ); + if (_addr.ss_family == AF_INET) + return ((_ipScope != InetAddress::IP_SCOPE_GLOBAL)&&(_ipScope != InetAddress::IP_SCOPE_PSEUDOPRIVATE)); + return true; } /** From cfdcce6d1299b4bc407b9b44c0abb55c5ea9f4b5 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 19 Oct 2015 15:19:04 -0700 Subject: [PATCH 089/314] Fix very obscure IP scope classification logic bug. --- node/InetAddress.cpp | 12 +++++------- node/Peer.cpp | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/node/InetAddress.cpp b/node/InetAddress.cpp index e542f0d4e..abb46240f 100644 --- a/node/InetAddress.cpp +++ b/node/InetAddress.cpp @@ -77,14 +77,12 @@ InetAddress::IpScope InetAddress::ipScope() const if ((ip & 0xffff0000) == 0xc0a80000) return IP_SCOPE_PRIVATE; // 192.168.0.0/16 break; case 0xff: return IP_SCOPE_NONE; // 255.0.0.0/8 (broadcast, or unused/unusable) - default: - switch(ip >> 28) { - case 0xe: return IP_SCOPE_MULTICAST; // 224.0.0.0/4 - case 0xf: return IP_SCOPE_PSEUDOPRIVATE; // 240.0.0.0/4 ("reserved," usually unusable) - default: return IP_SCOPE_GLOBAL; // everything else - } - break; } + switch(ip >> 28) { + case 0xe: return IP_SCOPE_MULTICAST; // 224.0.0.0/4 + case 0xf: return IP_SCOPE_PSEUDOPRIVATE; // 240.0.0.0/4 ("reserved," usually unusable) + } + return IP_SCOPE_GLOBAL; } break; case AF_INET6: { diff --git a/node/Peer.cpp b/node/Peer.cpp index ba6ef4af8..6f566be42 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -203,7 +203,7 @@ bool Peer::doPingAndKeepalive(const RuntimeEnvironment *RR,uint64_t now,int inet RR->node->putPacket(p->localAddress(),p->address(),&_natKeepaliveBuf,sizeof(_natKeepaliveBuf)); p->sent(now); } else { - TRACE("no PING or NAT keepalive: %llums/%llums send/receive inactivity",now - p->lastSend(),now - p->lastReceived()); + TRACE("no PING or NAT keepalive: addr==%s reliable==%d %llums/%llums send/receive inactivity",p->address().toString().c_str(),(int)p->reliable(),now - p->lastSend(),now - p->lastReceived()); } return true; } From 69dad37d8f6fdc1ca57077b1fecdc64b23254588 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 19 Oct 2015 15:23:43 -0700 Subject: [PATCH 090/314] Restore default World for commit to upstream --- node/Topology.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/node/Topology.cpp b/node/Topology.cpp index dc21b2430..56ca47c84 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -36,12 +36,12 @@ namespace ZeroTier { // Default World -//#define ZT_DEFAULT_WORLD_LENGTH 494 -//static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x4f,0xdf,0xbf,0xfc,0xbb,0x6c,0x7e,0x15,0x67,0x85,0x1b,0xb4,0x65,0x04,0x01,0xaf,0x56,0xbf,0xe7,0x63,0x9d,0x77,0xef,0xa4,0x1e,0x61,0x53,0x88,0xcb,0x8d,0x78,0xe5,0x47,0x38,0x98,0x5a,0x6c,0x8a,0xdd,0xe6,0x9c,0x65,0xdf,0x1a,0x80,0x63,0xce,0x2e,0x4d,0x48,0x24,0x3d,0x68,0x87,0x96,0x13,0x89,0xba,0x25,0x6f,0xc9,0xb0,0x9f,0x20,0xc5,0x4c,0x51,0x7b,0x30,0xb7,0x5f,0xba,0xca,0xa4,0xc5,0x48,0xa3,0x15,0xab,0x2f,0x1d,0x64,0xe8,0x04,0x42,0xb3,0x1c,0x51,0x8b,0x2a,0x04,0x01,0xf8,0xe1,0x81,0xaf,0x60,0x2f,0x70,0x3e,0xcd,0x0b,0x21,0x38,0x19,0x62,0x02,0xbd,0x0e,0x33,0x1d,0x0a,0x7b,0xf1,0xec,0xad,0xef,0x54,0xb3,0x7b,0x17,0x84,0xaa,0xda,0x0a,0x85,0x5d,0x0b,0x1c,0x05,0x83,0xb9,0x0e,0x3e,0xe3,0xb4,0xd1,0x8b,0x5b,0x64,0xf7,0xcf,0xe1,0xff,0x5d,0xc2,0x2a,0xcf,0x60,0x7b,0x09,0xb4,0xa3,0x86,0x3c,0x5a,0x7e,0x31,0xa0,0xc7,0xb4,0x86,0xe3,0x41,0x33,0x04,0x7e,0x19,0x87,0x6a,0xba,0x00,0x2a,0x6e,0x2b,0x23,0x18,0x93,0x0f,0x60,0xeb,0x09,0x7f,0x70,0xd0,0xf4,0xb0,0x28,0xb2,0xcd,0x6d,0x3d,0x0c,0x63,0xc0,0x14,0xb9,0x03,0x9f,0xf3,0x53,0x90,0xe4,0x11,0x81,0xf2,0x16,0xfb,0x2e,0x6f,0xa8,0xd9,0x5c,0x1e,0xe9,0x66,0x71,0x56,0x41,0x19,0x05,0xc3,0xdc,0xcf,0xea,0x78,0xd8,0xc6,0xdf,0xaf,0xba,0x68,0x81,0x70,0xb3,0xfa,0x00,0x01,0x04,0xc6,0xc7,0x61,0xdc,0x27,0x09,0x88,0x41,0x40,0x8a,0x2e,0x00,0xbb,0x1d,0x31,0xf2,0xc3,0x23,0xe2,0x64,0xe9,0xe6,0x41,0x72,0xc1,0xa7,0x4f,0x77,0x89,0x95,0x55,0xed,0x10,0x75,0x1c,0xd5,0x6e,0x86,0x40,0x5c,0xde,0x11,0x8d,0x02,0xdf,0xfe,0x55,0x5d,0x46,0x2c,0xcf,0x6a,0x85,0xb5,0x63,0x1c,0x12,0x35,0x0c,0x8d,0x5d,0xc4,0x09,0xba,0x10,0xb9,0x02,0x5d,0x0f,0x44,0x5c,0xf4,0x49,0xd9,0x2b,0x1c,0x00,0x01,0x04,0x6b,0xbf,0x2e,0xd2,0x27,0x09,0x8a,0xcf,0x05,0x9f,0xe3,0x00,0x48,0x2f,0x6e,0xe5,0xdf,0xe9,0x02,0x31,0x9b,0x41,0x9d,0xe5,0xbd,0xc7,0x65,0x20,0x9c,0x0e,0xcd,0xa3,0x8c,0x4d,0x6e,0x4f,0xcf,0x0d,0x33,0x65,0x83,0x98,0xb4,0x52,0x7d,0xcd,0x22,0xf9,0x31,0x12,0xfb,0x9b,0xef,0xd0,0x2f,0xd7,0x8b,0xf7,0x26,0x1b,0x33,0x3f,0xc1,0x05,0xd1,0x92,0xa6,0x23,0xca,0x9e,0x50,0xfc,0x60,0xb3,0x74,0xa5,0x00,0x01,0x04,0xa2,0xf3,0x4d,0x6f,0x27,0x09,0x9d,0x21,0x90,0x39,0xf3,0x00,0x01,0xf0,0x92,0x2a,0x98,0xe3,0xb3,0x4e,0xbc,0xbf,0xf3,0x33,0x26,0x9d,0xc2,0x65,0xd7,0xa0,0x20,0xaa,0xb6,0x9d,0x72,0xbe,0x4d,0x4a,0xcc,0x9c,0x8c,0x92,0x94,0x78,0x57,0x71,0x25,0x6c,0xd1,0xd9,0x42,0xa9,0x0d,0x1b,0xd1,0xd2,0xdc,0xa3,0xea,0x84,0xef,0x7d,0x85,0xaf,0xe6,0x61,0x1f,0xb4,0x3f,0xf0,0xb7,0x41,0x26,0xd9,0x0a,0x6e,0x00,0x01,0x04,0x80,0xc7,0xc5,0xd9,0x27,0x09}; +#define ZT_DEFAULT_WORLD_LENGTH 494 +static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x4f,0xdf,0xbf,0xfc,0xbb,0x6c,0x7e,0x15,0x67,0x85,0x1b,0xb4,0x65,0x04,0x01,0xaf,0x56,0xbf,0xe7,0x63,0x9d,0x77,0xef,0xa4,0x1e,0x61,0x53,0x88,0xcb,0x8d,0x78,0xe5,0x47,0x38,0x98,0x5a,0x6c,0x8a,0xdd,0xe6,0x9c,0x65,0xdf,0x1a,0x80,0x63,0xce,0x2e,0x4d,0x48,0x24,0x3d,0x68,0x87,0x96,0x13,0x89,0xba,0x25,0x6f,0xc9,0xb0,0x9f,0x20,0xc5,0x4c,0x51,0x7b,0x30,0xb7,0x5f,0xba,0xca,0xa4,0xc5,0x48,0xa3,0x15,0xab,0x2f,0x1d,0x64,0xe8,0x04,0x42,0xb3,0x1c,0x51,0x8b,0x2a,0x04,0x01,0xf8,0xe1,0x81,0xaf,0x60,0x2f,0x70,0x3e,0xcd,0x0b,0x21,0x38,0x19,0x62,0x02,0xbd,0x0e,0x33,0x1d,0x0a,0x7b,0xf1,0xec,0xad,0xef,0x54,0xb3,0x7b,0x17,0x84,0xaa,0xda,0x0a,0x85,0x5d,0x0b,0x1c,0x05,0x83,0xb9,0x0e,0x3e,0xe3,0xb4,0xd1,0x8b,0x5b,0x64,0xf7,0xcf,0xe1,0xff,0x5d,0xc2,0x2a,0xcf,0x60,0x7b,0x09,0xb4,0xa3,0x86,0x3c,0x5a,0x7e,0x31,0xa0,0xc7,0xb4,0x86,0xe3,0x41,0x33,0x04,0x7e,0x19,0x87,0x6a,0xba,0x00,0x2a,0x6e,0x2b,0x23,0x18,0x93,0x0f,0x60,0xeb,0x09,0x7f,0x70,0xd0,0xf4,0xb0,0x28,0xb2,0xcd,0x6d,0x3d,0x0c,0x63,0xc0,0x14,0xb9,0x03,0x9f,0xf3,0x53,0x90,0xe4,0x11,0x81,0xf2,0x16,0xfb,0x2e,0x6f,0xa8,0xd9,0x5c,0x1e,0xe9,0x66,0x71,0x56,0x41,0x19,0x05,0xc3,0xdc,0xcf,0xea,0x78,0xd8,0xc6,0xdf,0xaf,0xba,0x68,0x81,0x70,0xb3,0xfa,0x00,0x01,0x04,0xc6,0xc7,0x61,0xdc,0x27,0x09,0x88,0x41,0x40,0x8a,0x2e,0x00,0xbb,0x1d,0x31,0xf2,0xc3,0x23,0xe2,0x64,0xe9,0xe6,0x41,0x72,0xc1,0xa7,0x4f,0x77,0x89,0x95,0x55,0xed,0x10,0x75,0x1c,0xd5,0x6e,0x86,0x40,0x5c,0xde,0x11,0x8d,0x02,0xdf,0xfe,0x55,0x5d,0x46,0x2c,0xcf,0x6a,0x85,0xb5,0x63,0x1c,0x12,0x35,0x0c,0x8d,0x5d,0xc4,0x09,0xba,0x10,0xb9,0x02,0x5d,0x0f,0x44,0x5c,0xf4,0x49,0xd9,0x2b,0x1c,0x00,0x01,0x04,0x6b,0xbf,0x2e,0xd2,0x27,0x09,0x8a,0xcf,0x05,0x9f,0xe3,0x00,0x48,0x2f,0x6e,0xe5,0xdf,0xe9,0x02,0x31,0x9b,0x41,0x9d,0xe5,0xbd,0xc7,0x65,0x20,0x9c,0x0e,0xcd,0xa3,0x8c,0x4d,0x6e,0x4f,0xcf,0x0d,0x33,0x65,0x83,0x98,0xb4,0x52,0x7d,0xcd,0x22,0xf9,0x31,0x12,0xfb,0x9b,0xef,0xd0,0x2f,0xd7,0x8b,0xf7,0x26,0x1b,0x33,0x3f,0xc1,0x05,0xd1,0x92,0xa6,0x23,0xca,0x9e,0x50,0xfc,0x60,0xb3,0x74,0xa5,0x00,0x01,0x04,0xa2,0xf3,0x4d,0x6f,0x27,0x09,0x9d,0x21,0x90,0x39,0xf3,0x00,0x01,0xf0,0x92,0x2a,0x98,0xe3,0xb3,0x4e,0xbc,0xbf,0xf3,0x33,0x26,0x9d,0xc2,0x65,0xd7,0xa0,0x20,0xaa,0xb6,0x9d,0x72,0xbe,0x4d,0x4a,0xcc,0x9c,0x8c,0x92,0x94,0x78,0x57,0x71,0x25,0x6c,0xd1,0xd9,0x42,0xa9,0x0d,0x1b,0xd1,0xd2,0xdc,0xa3,0xea,0x84,0xef,0x7d,0x85,0xaf,0xe6,0x61,0x1f,0xb4,0x3f,0xf0,0xb7,0x41,0x26,0xd9,0x0a,0x6e,0x00,0x01,0x04,0x80,0xc7,0xc5,0xd9,0x27,0x09}; // ALICE-TEST -#define ZT_DEFAULT_WORLD_LENGTH 257 -static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x50,0x81,0x2a,0x54,0x6f,0x72,0xb0,0x3b,0xbe,0x73,0xda,0xbd,0xfb,0x85,0x77,0x9f,0xc9,0x2e,0x17,0xc8,0x11,0x6e,0xda,0x61,0x80,0xd1,0x41,0xcb,0x7c,0x2d,0x2b,0xa4,0x34,0x75,0x19,0x64,0x20,0x80,0x0a,0x22,0x32,0xf2,0x01,0x6c,0xfe,0x79,0xa6,0x7d,0xec,0x10,0x7e,0x03,0xf3,0xa2,0xa0,0x19,0xc8,0x7c,0xfd,0x6c,0x56,0x52,0xa8,0xfb,0xdc,0xfb,0x93,0x81,0x3e,0x63,0x8b,0xb3,0xb6,0x72,0x45,0xa9,0x81,0x81,0xcc,0xea,0x7f,0x2f,0xd9,0x59,0xce,0xc8,0x51,0x12,0xc3,0xe3,0x44,0x76,0x54,0xed,0xe7,0x8d,0x34,0x0b,0x5d,0x10,0x3d,0x52,0x04,0x9b,0xe1,0xb2,0x36,0x51,0x75,0x14,0x30,0x53,0xe8,0x4b,0xe4,0x91,0x9a,0xed,0x99,0x56,0xa3,0x8d,0x5e,0x14,0xff,0x66,0xd8,0x4f,0xf7,0x3c,0x23,0xbe,0x02,0xbb,0x1e,0xb6,0x7e,0x07,0xfa,0x7c,0x7e,0x50,0xe8,0x40,0xf9,0x37,0x70,0x1a,0x75,0xcf,0x19,0xe6,0x83,0xe1,0x5c,0x20,0x1d,0x1e,0x5b,0xe5,0x6a,0xbe,0xe7,0xab,0xec,0x01,0xd6,0xdd,0xca,0x6a,0xb5,0x00,0x4e,0x76,0x12,0x07,0xd8,0xb4,0x20,0x0b,0xe4,0x4f,0x47,0x8e,0x3d,0xa1,0x48,0xc1,0x60,0x99,0x11,0x0e,0xe7,0x1b,0x64,0x58,0x6d,0xda,0x11,0x8e,0x40,0x22,0xab,0x63,0x68,0x2c,0xe1,0x37,0xda,0x8b,0xa8,0x17,0xfc,0x7f,0x73,0xaa,0x31,0x63,0xf2,0xe3,0x33,0x93,0x3e,0x29,0x94,0xc4,0x6b,0x4f,0x41,0x19,0x30,0x7b,0xe8,0x85,0x5a,0x72,0x00,0x01,0x04,0xa9,0x39,0x8f,0x68,0x27,0x09}; +//#define ZT_DEFAULT_WORLD_LENGTH 257 +//static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x50,0x81,0x2a,0x54,0x6f,0x72,0xb0,0x3b,0xbe,0x73,0xda,0xbd,0xfb,0x85,0x77,0x9f,0xc9,0x2e,0x17,0xc8,0x11,0x6e,0xda,0x61,0x80,0xd1,0x41,0xcb,0x7c,0x2d,0x2b,0xa4,0x34,0x75,0x19,0x64,0x20,0x80,0x0a,0x22,0x32,0xf2,0x01,0x6c,0xfe,0x79,0xa6,0x7d,0xec,0x10,0x7e,0x03,0xf3,0xa2,0xa0,0x19,0xc8,0x7c,0xfd,0x6c,0x56,0x52,0xa8,0xfb,0xdc,0xfb,0x93,0x81,0x3e,0x63,0x8b,0xb3,0xb6,0x72,0x45,0xa9,0x81,0x81,0xcc,0xea,0x7f,0x2f,0xd9,0x59,0xce,0xc8,0x51,0x12,0xc3,0xe3,0x44,0x76,0x54,0xed,0xe7,0x8d,0x34,0x0b,0x5d,0x10,0x3d,0x52,0x04,0x9b,0xe1,0xb2,0x36,0x51,0x75,0x14,0x30,0x53,0xe8,0x4b,0xe4,0x91,0x9a,0xed,0x99,0x56,0xa3,0x8d,0x5e,0x14,0xff,0x66,0xd8,0x4f,0xf7,0x3c,0x23,0xbe,0x02,0xbb,0x1e,0xb6,0x7e,0x07,0xfa,0x7c,0x7e,0x50,0xe8,0x40,0xf9,0x37,0x70,0x1a,0x75,0xcf,0x19,0xe6,0x83,0xe1,0x5c,0x20,0x1d,0x1e,0x5b,0xe5,0x6a,0xbe,0xe7,0xab,0xec,0x01,0xd6,0xdd,0xca,0x6a,0xb5,0x00,0x4e,0x76,0x12,0x07,0xd8,0xb4,0x20,0x0b,0xe4,0x4f,0x47,0x8e,0x3d,0xa1,0x48,0xc1,0x60,0x99,0x11,0x0e,0xe7,0x1b,0x64,0x58,0x6d,0xda,0x11,0x8e,0x40,0x22,0xab,0x63,0x68,0x2c,0xe1,0x37,0xda,0x8b,0xa8,0x17,0xfc,0x7f,0x73,0xaa,0x31,0x63,0xf2,0xe3,0x33,0x93,0x3e,0x29,0x94,0xc4,0x6b,0x4f,0x41,0x19,0x30,0x7b,0xe8,0x85,0x5a,0x72,0x00,0x01,0x04,0xa9,0x39,0x8f,0x68,0x27,0x09}; Topology::Topology(const RuntimeEnvironment *renv) : RR(renv), From 5e6eae620bec49086e2ad80c119f3386d84092b1 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 19 Oct 2015 16:18:57 -0700 Subject: [PATCH 091/314] Make _members dynamically allocated due to static array limit on ARM. --- node/Cluster.cpp | 4 +++- node/Cluster.hpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/node/Cluster.cpp b/node/Cluster.cpp index c08bf0020..bfa39d225 100644 --- a/node/Cluster.cpp +++ b/node/Cluster.cpp @@ -56,7 +56,8 @@ Cluster::Cluster(const RuntimeEnvironment *renv,uint16_t id,DistanceAlgorithm da _y(y), _z(z), _da(da), - _id(id) + _id(id), + _members(new _Member[65536]) { uint16_t stmp[ZT_SHA512_DIGEST_LEN / sizeof(uint16_t)]; @@ -76,6 +77,7 @@ Cluster::~Cluster() { Utils::burn(_masterSecret,sizeof(_masterSecret)); Utils::burn(_key,sizeof(_key)); + delete [] _members; } void Cluster::handleIncomingStateMessage(const void *msg,unsigned int len) diff --git a/node/Cluster.hpp b/node/Cluster.hpp index 01db3641c..016730e32 100644 --- a/node/Cluster.hpp +++ b/node/Cluster.hpp @@ -303,7 +303,7 @@ private: ~_Member() { Utils::burn(key,sizeof(key)); } }; - _Member _members[65536]; // cluster IDs can be from 0 to 65535 (16-bit) + _Member *const _members; // cluster IDs can be from 0 to 65535 (16-bit) std::vector _memberIds; Mutex _memberIds_m; From 6040574d8d9263ac50a607d12195c44c3746f47b Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Mon, 19 Oct 2015 20:20:42 -0700 Subject: [PATCH 092/314] set up project and base UI for a native windows UI for ZeroTier --- .gitignore | 2 + windows/WinUI/App.config | 6 + windows/WinUI/App.xaml | 8 ++ windows/WinUI/App.xaml.cs | 17 +++ windows/WinUI/MainWindow.xaml | 95 ++++++++++++++ windows/WinUI/MainWindow.xaml.cs | 28 +++++ windows/WinUI/Properties/AssemblyInfo.cs | 55 ++++++++ .../WinUI/Properties/Resources.Designer.cs | 71 +++++++++++ windows/WinUI/Properties/Resources.resx | 117 ++++++++++++++++++ windows/WinUI/Properties/Settings.Designer.cs | 30 +++++ windows/WinUI/Properties/Settings.settings | 7 ++ windows/WinUI/Themes/Generic.xaml | 7 ++ windows/WinUI/WinUI.csproj | 111 +++++++++++++++++ windows/ZeroTierOne.sln | 79 ++++++++++++ 14 files changed, 633 insertions(+) create mode 100644 windows/WinUI/App.config create mode 100644 windows/WinUI/App.xaml create mode 100644 windows/WinUI/App.xaml.cs create mode 100644 windows/WinUI/MainWindow.xaml create mode 100644 windows/WinUI/MainWindow.xaml.cs create mode 100644 windows/WinUI/Properties/AssemblyInfo.cs create mode 100644 windows/WinUI/Properties/Resources.Designer.cs create mode 100644 windows/WinUI/Properties/Resources.resx create mode 100644 windows/WinUI/Properties/Settings.Designer.cs create mode 100644 windows/WinUI/Properties/Settings.settings create mode 100644 windows/WinUI/Themes/Generic.xaml create mode 100644 windows/WinUI/WinUI.csproj diff --git a/.gitignore b/.gitignore index 2dbec1e5a..734f73bb2 100755 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,5 @@ java/doc/ java/build_win64/ java/build_win32/ /java/mac32_64/ +windows/WinUI/obj/ +windows/WinUI/bin/ diff --git a/windows/WinUI/App.config b/windows/WinUI/App.config new file mode 100644 index 000000000..8e1564635 --- /dev/null +++ b/windows/WinUI/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/windows/WinUI/App.xaml b/windows/WinUI/App.xaml new file mode 100644 index 000000000..3788901a9 --- /dev/null +++ b/windows/WinUI/App.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/windows/WinUI/App.xaml.cs b/windows/WinUI/App.xaml.cs new file mode 100644 index 000000000..a97edde74 --- /dev/null +++ b/windows/WinUI/App.xaml.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; + +namespace WinUI +{ + ///

+ /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/windows/WinUI/MainWindow.xaml b/windows/WinUI/MainWindow.xaml new file mode 100644 index 000000000..c104dfb68 --- /dev/null +++ b/windows/WinUI/MainWindow.xaml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -
- { - (this.tabIndex === 1) ? ( -
-
-
Address
-
Version
-
Latency
-
Data Paths
-
Last Unicast
-
Last Multicast
-
Role
-
- { - this.state._peers.map(function(peer) { - return ( -
-
{peer['address']}
-
{(peer['version'] === '-1.-1.-1') ? '-' : peer['version']}
-
{peer['latency']}
-
- { - (peer['paths'].length === 0) ? ( -
- ) : ( -
- { - peer['paths'].map(function(path) { - var cn = ((path.active)||(path.fixed)) ? (path.preferred ? 'peerPathPreferred' : 'peerPathActive') : 'peerPathInactive'; - return ( -
{path.address}  {this.ago(path.lastSend)}/{this.ago(path.lastReceive)}
- ); - }.bind(this)) - } -
- ) - } -
-
{this.ago(peer['lastUnicastFrame'])}
-
{this.ago(peer['lastMulticastFrame'])}
-
{peer['role']}
-
- ); - }.bind(this)) - } -
- ) : ( -
- { - this.state._networks.map(function(network) { - network['authToken'] = this.props.authToken; - network['onNetworkDeleted'] = this.handleNetworkDelete; - return React.createElement('div',{className: 'network',key: network.nwid},React.createElement(ZeroTierNetwork,network)); - }.bind(this)) - } -
- ) - } +
+ { + this.state._networks.map(function(network) { + network['authToken'] = this.props.authToken; + network['onNetworkDeleted'] = this.handleNetworkDelete; + return React.createElement('div',{className: 'network',key: network.nwid},React.createElement(ZeroTierNetwork,network)); + }.bind(this)) + } +
diff --git a/ui/zerotier.css b/ui/zerotier.css index cde5cea8d..e5c588381 100644 --- a/ui/zerotier.css +++ b/ui/zerotier.css @@ -25,34 +25,6 @@ html,body { display: table; } -.zeroTierNode > .top { - width: 100%; - overflow: hidden; - display: table-row; - white-space: nowrap; - background: #234447; - color: #ffffff; - padding: 0; - margin: 0; -} -.zeroTierNode > .top button { - display: inline-block; - padding: 0.25rem 0.75rem 0.25rem 0.75rem; - color: #ffffff; - margin: 0; - border: 0; - outline: none; - background: #234447; - font-size: 12pt; - cursor: pointer; -} -.zeroTierNode > .top button:hover { - background: #91a2a3; -} -.zeroTierNode > .top button:disabled { - background: #91a2a3; -} - .zeroTierNode > .middle { width: 100%; height: 100%; @@ -65,6 +37,7 @@ html,body { width: 100%; height: 100%; display: table-cell; + border-bottom: 1px solid #000000; } .zeroTierNode > .middle > .middleCell > .middleScroll { display: block; @@ -87,76 +60,19 @@ html,body { border-collapse: collapse; } .zeroTierNode > .middle > .middleCell > .middleScroll > .networks > .network { - display: inline-block; + display: block; + border-top: 0.12rem solid #dddddd; + border-bottom: 0.12rem solid #dddddd; padding: 0.25rem; - margin: 0.25rem 0 0 1%; - min-width: 31%; - max-width: 98%; - border: 1px solid #234447; background: #ffffff; } -.zeroTierNode > .middle > .middleCell > .middleScroll > .peers { - display: table; - width: 100%; - margin: 0; - border-collapse: collapse; -} -.zeroTierNode > .middle > .middleCell > .middleScroll > .peers > .peer { - width: 100%; - display: table-row; - background: #ffffff; -} -.zeroTierNode > .middle > .middleCell > .middleScroll > .peers > .peer:nth-child(odd) { - background: #f3f3f3; -} -.zeroTierNode > .middle > .middleCell > .middleScroll > .peers > .peer:nth-child(even) { -} -.zeroTierNode > .middle > .middleCell > .middleScroll > .peers > .peer .peerPathActive { - font-size: 8pt; - color: #555555; - font-style: italic; - font-family: monospace; - white-space: nowrap; -} -.zeroTierNode > .middle > .middleCell > .middleScroll > .peers > .peer .peerPathPreferred { - font-size: 8pt; - color: #000000; - font-family: monospace; - white-space: nowrap; -} -.zeroTierNode > .middle > .middleCell > .middleScroll > .peers > .peer .peerPathInactive { - font-size: 8pt; - font-family: monospace; - color: #aaaaaa; - font-style: italic; - text-decoration: line-through; - white-space: nowrap; -} -.zeroTierNode > .middle > .middleCell > .middleScroll > .peers > .peer > .f { - display: table-cell; - padding: 0.05rem 0.15rem 0.05rem 0.15rem; - font-size: 8pt; -} -.zeroTierNode > .middle > .middleCell > .middleScroll > .peers > .peerHeader { - width: 100%; - font-size: 8pt; - display: table-row; - background: #ffffff; - border-bottom: 1px solid #000000; -} -.zeroTierNode > .middle > .middleCell > .middleScroll > .peers > .peerHeader > .f { - display: table-cell; - font-size: 8pt; - padding: 0.05rem 0.15rem 0.05rem 0.15rem; - font-weight: bold; -} .zeroTierNode > .bottom { font-size: 12pt; width: 100%; overflow: hidden; display: table-row; - background: #234447; + background: #000000; color: #ffffff; } .zeroTierNode > .bottom > .left { @@ -233,7 +149,7 @@ html,body { .zeroTierNetwork .networkInfo .networkId { font-size: 11pt; font-family: monospace; - color: #91a2a3; + color: #000000; } .zeroTierNetwork .networkInfo .networkName { padding: 0 0 0 1rem; @@ -271,7 +187,7 @@ html,body { .zeroTierNetwork .leaveNetworkButton { padding: 0.25rem 0.5rem 0.25rem 0.5rem; margin: 0.25rem 0 0 0; - font-size: 10pt; + font-size: 9pt; background: #ffffff; outline: none; background: #ffb354; diff --git a/ui/ztui.min.js b/ui/ztui.min.js index dbde77344..17982839e 100644 --- a/ui/ztui.min.js +++ b/ui/ztui.min.js @@ -1 +1 @@ -var ZeroTierNetwork=React.createClass({displayName:"ZeroTierNetwork",getInitialState:function(){return{}},leaveNetwork:function(e){confirm("Are you sure you want to leave this network?")&&Ajax.call({url:"network/"+this.props.nwid+"?auth="+this.props.authToken,cache:!1,type:"DELETE",success:function(e){this.props.onNetworkDeleted&&this.props.onNetworkDeleted(this.props.nwid)}.bind(this),error:function(e){}.bind(this)}),e.preventDefault()},render:function(){return React.createElement("div",{className:"zeroTierNetwork"},React.createElement("div",{className:"networkInfo"},React.createElement("span",{className:"networkId"},this.props.nwid)," ",React.createElement("span",{className:"networkName"},this.props.name)),React.createElement("div",{className:"networkProps"},React.createElement("div",{className:"row"},React.createElement("div",{className:"name"},"Status"),React.createElement("div",{className:"value"},this.props.status)),React.createElement("div",{className:"row"},React.createElement("div",{className:"name"},"Type"),React.createElement("div",{className:"value"},this.props.type)),React.createElement("div",{className:"row"},React.createElement("div",{className:"name"},"MAC"),React.createElement("div",{className:"value zeroTierAddress"},this.props.mac)),React.createElement("div",{className:"row"},React.createElement("div",{className:"name"},"MTU"),React.createElement("div",{className:"value"},this.props.mtu)),React.createElement("div",{className:"row"},React.createElement("div",{className:"name"},"Broadcast"),React.createElement("div",{className:"value"},this.props.broadcastEnabled?"ENABLED":"DISABLED")),React.createElement("div",{className:"row"},React.createElement("div",{className:"name"},"Bridging"),React.createElement("div",{className:"value"},this.props.bridge?"ACTIVE":"DISABLED")),React.createElement("div",{className:"row"},React.createElement("div",{className:"name"},"Device"),React.createElement("div",{className:"value"},this.props.portDeviceName?this.props.portDeviceName:"(none)")),React.createElement("div",{className:"row"},React.createElement("div",{className:"name"},"Managed IPs"),React.createElement("div",{className:"value ipList"},this.props.assignedAddresses.map(function(e){return React.createElement("div",{key:e,className:"ipAddress"},e)})))),React.createElement("button",{type:"button",className:"leaveNetworkButton",onClick:this.leaveNetwork},"Leave Network"))}}); var ZeroTierNode=React.createClass({displayName:"ZeroTierNode",getInitialState:function(){return{address:"----------",online:!1,version:"_._._",_networks:[],_peers:[]}},ago:function(e){if(e>0){var t=Math.round((Date.now()-e)/1e3);return t>0?t:0}return 0},updatePeers:function(){Ajax.call({url:"peer?auth="+this.props.authToken,cache:!1,type:"GET",success:function(e){if(e){var t=JSON.parse(e);Array.isArray(t)&&this.setState({_peers:t})}}.bind(this),error:function(){}.bind(this)})},updateNetworks:function(){Ajax.call({url:"network?auth="+this.props.authToken,cache:!1,type:"GET",success:function(e){if(e){var t=JSON.parse(e);Array.isArray(t)&&this.setState({_networks:t})}}.bind(this),error:function(){}.bind(this)})},updateAll:function(){Ajax.call({url:"status?auth="+this.props.authToken,cache:!1,type:"GET",success:function(e){if(this.alertedToFailure=!1,e){var t=JSON.parse(e);this.setState(t),document.title="ZeroTier One ["+t.address+"]"}this.updateNetworks(),this.updatePeers()}.bind(this),error:function(){this.setState(this.getInitialState()),this.alertedToFailure||(this.alertedToFailure=!0,alert("Authorization token invalid or ZeroTier One service not running."))}.bind(this)})},joinNetwork:function(e){e.preventDefault(),this.networkToJoin&&16===this.networkToJoin.length?Ajax.call({url:"network/"+this.networkToJoin+"?auth="+this.props.authToken,cache:!1,type:"POST",success:function(e){this.networkToJoin="",this.networkInputElement&&(this.networkInputElement.value=""),this.updateNetworks()}.bind(this),error:function(){}.bind(this)}):alert("To join a network, enter its 16-digit network ID.")},handleNetworkIdEntry:function(e){this.networkInputElement=e.target;var t=this.networkInputElement.value;if(t){t=t.toLowerCase();for(var a="",s=0;ss;++s)"0123456789abcdef".indexOf(t.charAt(s))>=0&&(a+=t.charAt(s));this.networkToJoin=a,this.networkInputElement.value=a}else this.networkToJoin="",this.networkInputElement.value=""},handleNetworkDelete:function(e){for(var t=[],a=0;a0){var t=Math.round((Date.now()-e)/1e3);return t>0?t:0}return 0},updatePeers:function(){Ajax.call({url:"peer?auth="+this.props.authToken,cache:!1,type:"GET",success:function(e){if(e){var t=JSON.parse(e);Array.isArray(t)&&this.setState({_peers:t})}}.bind(this),error:function(){}.bind(this)})},updateNetworks:function(){Ajax.call({url:"network?auth="+this.props.authToken,cache:!1,type:"GET",success:function(e){if(e){var t=JSON.parse(e);Array.isArray(t)&&this.setState({_networks:t})}}.bind(this),error:function(){}.bind(this)})},updateAll:function(){Ajax.call({url:"status?auth="+this.props.authToken,cache:!1,type:"GET",success:function(e){if(this.alertedToFailure=!1,e){var t=JSON.parse(e);this.setState(t),document.title="ZeroTier One ["+t.address+"]"}this.updateNetworks(),this.updatePeers()}.bind(this),error:function(){this.setState(this.getInitialState()),this.alertedToFailure||(this.alertedToFailure=!0,alert("Authorization token invalid or ZeroTier One service not running."))}.bind(this)})},joinNetwork:function(e){e.preventDefault(),this.networkToJoin&&16===this.networkToJoin.length?Ajax.call({url:"network/"+this.networkToJoin+"?auth="+this.props.authToken,cache:!1,type:"POST",success:function(e){this.networkToJoin="",this.networkInputElement&&(this.networkInputElement.value=""),this.updateNetworks()}.bind(this),error:function(){}.bind(this)}):alert("To join a network, enter its 16-digit network ID.")},handleNetworkIdEntry:function(e){this.networkInputElement=e.target;var t=this.networkInputElement.value;if(t){t=t.toLowerCase();for(var n="",a=0;aa;++a)"0123456789abcdef".indexOf(t.charAt(a))>=0&&(n+=t.charAt(a));this.networkToJoin=n,this.networkInputElement.value=n}else this.networkToJoin="",this.networkInputElement.value=""},handleNetworkDelete:function(e){for(var t=[],n=0;n Date: Mon, 16 Nov 2015 14:45:17 -0800 Subject: [PATCH 294/314] . --- cluster-geo/cluster-geo/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cluster-geo/cluster-geo/package.json b/cluster-geo/cluster-geo/package.json index 4cd1ce007..53fbc5f4f 100644 --- a/cluster-geo/cluster-geo/package.json +++ b/cluster-geo/cluster-geo/package.json @@ -11,6 +11,6 @@ "dependencies": { "geoip2ws": "^1.7.1", "leveldown": "^1.4.2", - "levelup": "^1.2.1" + "levelup": "^1.3.0" } } From 38fe77ecf29370dc1b9dfdec0ddf897cf4348ef5 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Nov 2015 15:44:07 -0800 Subject: [PATCH 295/314] WebUIWrapper is dead. --- windows/WebUIWrapper/App.config | 6 - windows/WebUIWrapper/Form1.Designer.cs | 66 - windows/WebUIWrapper/Form1.cs | 74 - windows/WebUIWrapper/Form1.resx | 6293 ----------------- windows/WebUIWrapper/Program.cs | 92 - .../WebUIWrapper/Properties/AssemblyInfo.cs | 36 - .../Properties/Resources.Designer.cs | 63 - .../WebUIWrapper/Properties/Resources.resx | 117 - .../Properties/Settings.Designer.cs | 26 - .../WebUIWrapper/Properties/Settings.settings | 7 - windows/WebUIWrapper/Properties/app.manifest | 52 - windows/WebUIWrapper/WebUIWrapper.csproj | 144 - windows/WebUIWrapper/ZeroTierIcon.ico | Bin 370070 -> 0 bytes windows/ZeroTierOne.sln | 79 - 14 files changed, 7055 deletions(-) delete mode 100644 windows/WebUIWrapper/App.config delete mode 100644 windows/WebUIWrapper/Form1.Designer.cs delete mode 100644 windows/WebUIWrapper/Form1.cs delete mode 100644 windows/WebUIWrapper/Form1.resx delete mode 100644 windows/WebUIWrapper/Program.cs delete mode 100644 windows/WebUIWrapper/Properties/AssemblyInfo.cs delete mode 100644 windows/WebUIWrapper/Properties/Resources.Designer.cs delete mode 100644 windows/WebUIWrapper/Properties/Resources.resx delete mode 100644 windows/WebUIWrapper/Properties/Settings.Designer.cs delete mode 100644 windows/WebUIWrapper/Properties/Settings.settings delete mode 100644 windows/WebUIWrapper/Properties/app.manifest delete mode 100644 windows/WebUIWrapper/WebUIWrapper.csproj delete mode 100644 windows/WebUIWrapper/ZeroTierIcon.ico diff --git a/windows/WebUIWrapper/App.config b/windows/WebUIWrapper/App.config deleted file mode 100644 index 8e1564635..000000000 --- a/windows/WebUIWrapper/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/windows/WebUIWrapper/Form1.Designer.cs b/windows/WebUIWrapper/Form1.Designer.cs deleted file mode 100644 index 81d69cd0e..000000000 --- a/windows/WebUIWrapper/Form1.Designer.cs +++ /dev/null @@ -1,66 +0,0 @@ -namespace WebUIWrapper -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); - this.webContainer = new System.Windows.Forms.WebBrowser(); - this.SuspendLayout(); - // - // webContainer - // - this.webContainer.AllowNavigation = false; - this.webContainer.Dock = System.Windows.Forms.DockStyle.Fill; - this.webContainer.Location = new System.Drawing.Point(0, 0); - this.webContainer.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.webContainer.MinimumSize = new System.Drawing.Size(18, 16); - this.webContainer.Name = "webContainer"; - this.webContainer.Size = new System.Drawing.Size(900, 445); - this.webContainer.TabIndex = 0; - // - // Form1 - // - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(900, 445); - this.Controls.Add(this.webContainer); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.Name = "Form1"; - this.Text = "ZeroTier One"; - this.Load += new System.EventHandler(this.Form1_Load); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.WebBrowser webContainer; - } -} - diff --git a/windows/WebUIWrapper/Form1.cs b/windows/WebUIWrapper/Form1.cs deleted file mode 100644 index 40d5da9d2..000000000 --- a/windows/WebUIWrapper/Form1.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using System.IO; -using System.Net; -using System.Net.Sockets; - -namespace WebUIWrapper -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - - private void Form1_Load(object sender, EventArgs e) - { - String ztDir = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\ZeroTier\\One"; - String authToken = ""; - Int32 port = 9993; - try - { - byte[] tmp = File.ReadAllBytes(ztDir + "\\authtoken.secret"); - authToken = System.Text.Encoding.ASCII.GetString(tmp).Trim(); - } catch { - MessageBox.Show("Unable to read ZeroTier One authtoken.secret from:\r\n" + ztDir,"ZeroTier One"); - this.Close(); - } - if ((authToken == null)||(authToken.Length <= 0)) - { - MessageBox.Show("Unable to read ZeroTier One authtoken.secret from:\r\n" + ztDir, "ZeroTier One"); - this.Close(); - } - try - { - byte[] tmp = File.ReadAllBytes(ztDir + "\\zerotier-one.port"); - port = Int32.Parse(System.Text.Encoding.ASCII.GetString(tmp).Trim()); - if ((port <= 0) || (port > 65535)) - port = 9993; - } - catch - { - } - try - { - TcpClient tc = new TcpClient(); - try - { - tc.Connect("127.0.0.1", port); - tc.Close(); - } - catch - { - MessageBox.Show("ZeroTier One service does not appear to be running at local port " + port.ToString(),"ZeroTier One"); - this.Close(); - return; - } - webContainer.Navigate("http://127.0.0.1:" + port.ToString() + "/index.html?authToken=" + authToken); - } - catch - { - MessageBox.Show("Unable to open service control panel.", "ZeroTier One"); - this.Close(); - } - } - } -} diff --git a/windows/WebUIWrapper/Form1.resx b/windows/WebUIWrapper/Form1.resx deleted file mode 100644 index 3548e2a1f..000000000 --- a/windows/WebUIWrapper/Form1.resx +++ /dev/null @@ -1,6293 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - AAABAAYAEBAAAAAAIABoBAAAZgAAACAgAAAAACAAqBAAAM4EAAAwMAAAAAAgAKglAAB2FQAAQEAAAAAA - IAAoQgAAHjsAAICAAAAAACAAKAgBAEZ9AAAAAAAAAAAgACggBABuhQEAKAAAABAAAAAgAAAAAQAgAAAA - AABABAAAAAAAAAAAAAAAAAAAAAAAAF6x+yddsfzDXbH87V2y/fFcsf3xXLH88Vyy/PFdsf3xXLH98Vyx - /PFcsfzxXLL98V2y/fFdsfztXbH8tV6x+xldsfzLXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/VKHk/1en - 7v9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsfytXbL9912y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0F8 - sP9Mkc//XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL83V2y/fddsv3/XbL9/12y/f9dsv3/XLH8/0uP - y/8nSmn/L1h9/06W1v9dsv3/XbL9/12y/f9dsv3/XbL9/12y/OFdsv33XbL9/12y/f9dsv3/Wary/ytS - dP8+dqj/O3Cf/0SCuf86bpz/L1l+/1uv+f9dsv3/XbL9/12y/f9csf3hXbL9912y/f9dsv3/XbL9/yxU - d/9Voub/XbL9/0F8sP9Mkc//XbL9/0+X1v8yX4f/XbL9/12y/f9dsv3/XLH84V2y/fddsv3/XbL9/1Gb - 3f84apb/XbL9/12y/f9BfLD/TJHP/12y/f9dsv3/MFuB/1mq8v9dsv3/XbL9/1yx/OFdsv33XbL9/12y - /f9Aeq3/TJHO/12y/f9dsv3/QXyw/0yRz/9dsv3/XbL9/0F7r/9Lj8v/XbL9/12y/f9csf3hXbL9912y - /f9dsv3/RIG3/0eIwf9dsv3/XbL9/0F8sP9Mkc//XbL9/12y/f88c6P/T5fW/12y/f9dsv3/XLH94V2y - /fddsv3/XbL9/1ip8f8uV3z/XbL9/12y/f9BfLD/TJHP/12y/f9csfz/KlBy/1yx+/9dsv3/XbL9/1yx - /OFdsv33XbL9/12y/f9dsv3/PHKh/z94q/9dsv3/QXyw/0yRz/9csfz/N2iT/0SCuf9dsv3/XbL9/12y - /f9csfzhXbL9912y/f9dsv3/XbL9/12y/f9Aeq7/LFN1/yREYP8pTm//K1J0/0aHv/9dsv3/XbL9/12y - /f9dsv3/XLH94V2y/fddsv3/XbL9/12y/f9dsv3/XbL9/1yx/P8+dqj/SYzH/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/OFdsv33U6Dj/y1Vef8tVXn/LVV5/y1Vef8tVXn/IT9Z/yZIZf8tVXn/LVV5/y1V - ef8tVXn/LVV5/1mr8/9dsvzdXbH8y12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbH8rV2x+yddsfzDXbL871yx/PFcsfzzXLH981yx/fNcsf3zXbL881yy - /PNdsvzxXLH88V2y/fFdsfzvXbH8tV6x+xkAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA - //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//KAAAACAAAABAAAAAAQAgAAAAAACAEAAAAAAAAAAA - AAAAAAAAAAAAAP///wH///8BXbH7UV6x+71csfzXXbL94V2y/eFdsvzjXLL941yx/ONcsfzjXLH8412x - /ONcsv3jXLH9412x/eNdsf3jXLH941yy/ONcsfzjXLH841yx/ONcsv3jXLL9412y/ONdsv3hXbH8312x - /NNesfurXrH7Mf///wH///8B////AV6x+5ddsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsfz7XrH7Xf///wFdsfxdXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsfz3XrH7J16x+9Ndsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zpunP9IicP/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9esfuVXbL9712y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/JUZj/ztxof9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/Lddsv3vXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8lRmP/O3Gh/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9wV2y - /e9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/yVG - Y/87caH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3BXbL9712y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/SYvG/ylN - bf8VJjX/BwsO/woRF/8YLT//MFuA/1Gb3f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/MNdsv3vXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/U5/i/x44 - T/8PGyX/Ml+H/0mMx/8hPlf/NGKL/0WEu/8rUXL/ChEY/yxTdf9arPT/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLH9w12y/e9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/02T - 0f8MFBz/MFyC/1qt9/9dsv3/XbL9/yVGY/87caH/XbL9/12y/f9Vo+j/IT1W/xYoOf9YqO//XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csf3FXbL9712y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9Wper/Dhgi/z1zpP9dsv3/XbL9/12y/f9dsv3/JUZj/ztxof9dsv3/XbL9/12y/f9csfz/J0po/x02 - Tf9csfv/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/MVdsv3vXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/yVGY/8pTm7/XbL9/12y/f9dsv3/XbL9/12y/f8lRmP/O3Gh/12y/f9dsv3/XbL9/12y - /f9brvj/FSY1/ztxoP9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8xV2y/e9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9ToOP/CQ4U/1en7f9dsv3/XbL9/12y/f9dsv3/XbL9/yVGY/87caH/XbL9/12y - /f9dsv3/XbL9/12y/f9Fhbz/ER8r/1yx/P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfzFXbL9712y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/zhql/8jQVz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/JUZj/ztx - of9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/P8NFyD/TpXU/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yy - /cVdsv3vXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Jkhm/zdplf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8lRmP/O3Gh/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/yE+V/88c6P/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH9xV2y/e9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8gO1P/P3iq/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/yVGY/87caH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/KU1s/zZmkf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsf3FXbL9712y/f9dsv3/XbL9/12y/f9dsv3/XbL9/yNCXv86b57/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/JUZj/ztxof9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8kRGD/OW2b/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/cVdsv3vXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Ml+H/ylO - b/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8lRmP/O3Gh/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/xMj - Mf9IisT/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH9xV2y/e9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9Mks//DRcg/1uv+f9dsv3/XbL9/12y/f9dsv3/XbL9/yVGY/87caH/XbL9/12y/f9dsv3/XbL9/12y - /f9PmNj/ChIY/1uu+P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csv3FXbL9712y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yx/P8YLT//OGuY/12y/f9dsv3/XbL9/12y/f9dsv3/JUZj/ztxof9dsv3/XbL9/12y - /f9dsv3/XLH8/yJAW/8uV3z/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/MVdsv3vXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/0yRz/8KERf/TZPR/12y/f9dsv3/XbL9/12y/f8lRmP/O3Gh/12y - /f9dsv3/XbL9/12y/f87caD/Dxsm/1ip8f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8xV2y - /e9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zxzo/8MFR3/R4jC/12y/f9dsv3/XbL9/yVG - Y/87caH/XbL9/12y/f9csfz/OGuY/wsSGf9Nk9L/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csfzFXbL9712y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0F9sf8MFBz/JEVh/0qO - yf9csfv/JUZj/ztxof9arfb/Qn+0/xkuQP8UJTP/TpbV/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12x/cVdsv3vXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1en - 7v8wXIL/EB4p/wgNEf8HDBD/ChAW/wYKDf8XKzz/Om+e/1uv+f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLL9w12y/e9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csfz/Vqbs/yA8Vf80Yov/Wavz/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvzDXbL9712y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/JUZj/ztxof9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/cFdsv3vXbL9/12y/f9Xp+3/TpXU/06V - 1P9OldT/TpXU/06V1P9OldT/TpXU/06V1P9OldT/TpXU/06V1P8gO1T/Ml+H/06V1P9OldT/TpXU/06V - 1P9OldT/TpXU/06V1P9OldT/TpXU/06V1P9OldT/Wq73/12y/f9dsv3/XbL9wV2y/e9dsv3/XbL9/z52 - p/8MFR3/DBUd/wwVHf8MFR3/DBUd/wwVHf8MFR3/DBUd/wwVHf8MFR3/DBUd/wwVHf8MFR3/DBUd/wwV - Hf8MFR3/DBUd/wwVHf8MFR3/DBUd/wwVHf8MFR3/DBUd/wwVHf9RnN7/XbL9/12y/f9dsfy3XrH7012y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/16x - +5VdsfxdXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsfz3XrH7J////wFdsfyVXbL8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbH8+16x+13///8B////Af///wFesftTXbH8u12x/N9csvzhXLH841yy/OVcsvzlXLH951yx - /eddsv3nXbL951yx/edcsf3nXLL951yy/OVdsfzlXbL85Vyx/eVdsv3lXbL85Vyx/ONcsf3jXbL8412y - /eFdsv3hXbH8216x+6ldsfwv////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAA - AAAAAAAAAAAAAAAAAAD///8B////Af///wFisPYFYLH4XV6x+6tcsfy/XbH8zV2y/dFdsv3TXbH9012y - /NVcsvzVXLH91Vyx/NVcsfzVXLH81Vyx/NVcsfzVXbL81Vyy/dVcsf3VXbH91V2y/dVdsf3VXbH91Vyx - /dVcsv3VXbL81Vyx/NVcsfzVXLH81Vyx/NVcsv3VXbL91Vyy/NVcsvzTXbL9012y/dFdsv3RXbH8yV2y - /LtfsfqXYLH5Mf///wH///8B////Af///wH///8B////AV+x+i9dsfzRXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbH8/V2x+5tisfcL////Af///wH///8BYLH5NV2x/PFdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9esfu/ZLH0Cf///wFgsfkLXbH83V2y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH8if// - /wFfsfp1XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbH892Sx9B9esfvRXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/w4aJP8uVnr/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1+x+nNdsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woR - F/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/I9dsv3nXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/J1dsv3nXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /aNdsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/aNdsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1uv+f9OldT/Qn+0/wcMEP8eN07/Roa//1Sg - 5P9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/aVdsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/P9Ii8X/JUVh/woQFv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDBP8SIS7/MVyD/1Wi5/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/KVdsv3nXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/UZzd/x45UP8DAwP/CQ8U/yVF - Yf88c6P/SYvG/wkOE/8kQ17/RYO7/zVkjv8aMET/BAUG/wcLD/8yX4b/Wq73/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Kddsv3nXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/P8+dqf/BwwQ/wcM - EP8zYYr/Wary/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/T5jY/yA8Vf8DAwP/FSY1/1Gc - 3v9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx - /addsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zlt - m/8DBAT/GCw+/1Kd4P9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/1yx - /P9Ae6//CA4T/wwVHv9RnN3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yy/addsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/RYS8/wQGB/8cNEn/Wq32/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/TJLQ/wgOE/8SIS7/WKnx/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Kddsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9Wpev/CxQb/xEfK/9YqO//XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woR - F/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0SCuf8DBAX/Jkhm/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Kddsv3nXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8pTm//BAUG/0uPy/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8rUXL/AwQE/0qN - yf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Kddsv3nXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1al6/8GCQz/JERg/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9Xp+7/CA4T/yE9V/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx - /Kddsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zlsmv8DAwP/So3J/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/KU1t/wUICv9Xp+7/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/Kddsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/yA7 - VP8NFyD/XLH7/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/RoW9/wMDA/9BfLD/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yy/addsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/w4ZIv8hPlj/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woR - F/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Wary/wQFB/8vWX7/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/addsv3nXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/W6/5/wUHCf8tVXj/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wwV - HP8lRWL/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/addsv3nXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Waz0/wQFBv8wW4L/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/w8bJv8iP1r/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x - /addsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W6/6/wUIC/8sU3b/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8lR2T/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12x/addsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/w8c - Jv8fO1P/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/V6fu/wMEBf8wXIL/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/addsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/yJAWv8LExr/XLD6/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woR - F/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Q4C2/wMDA/9DgLb/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/addsv3nXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/zxyov8DAwP/Roe//12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/JUZj/wcL - Dv9ZqvL/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yy/addsv3nXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1ip8P8IDRH/HztT/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9Uoub/BgoN/yREYf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /Kddsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8uV3z/AwME/0WF - vP9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yx/P8lRWL/BAUH/06V0/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yx/Kddsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9YqfH/Dxol/w0XH/9Vouf/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/z51p/8DAwP/LFN1/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Kddsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/So7J/wYJC/8WKDj/V6fu/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woR - F/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Roa//wYJC/8XKjv/Wq32/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Kddsv3nXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0B6rf8EBgf/ER8s/0yRzv9dsv3/XbL9/12y - /f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/1yx+/83aZX/BQgK/xAdKf9Vouf/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Kddsv3nXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Eg7r/CxMZ/wQG - CP8qT3D/VKHl/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9csfz/R4jB/xcrPf8DAwP/GzJH/1Wj - 6P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yy - /Kddsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/VqTp/yZIZv8EBQb/BAYI/xszSP8zYIn/P3ms/wgNEf8fO1P/O3Gh/ytSdf8RHir/AwMD/wsT - Gv86bpz/XLD7/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yx/addsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9PmNj/LVV4/xEeKv8DBAT/AwMD/wMDA/8DAwP/AwMD/wUI - Cv8aMUX/OWyZ/1iq8f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yy/Kddsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/P9Wpev/S5DN/wgN - Ev8iP1n/T5jX/1qs9f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/KVdsv3nXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/aVdsv3nXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /aNdsv3nXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/woRF/8rUXP/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/aNdsv3nXbL9/12y/f9dsv3/XbL9/zZnkv8aL0P/Gi9D/xovQ/8aL0P/Gi9D/xov - Q/8aL0P/Gi9D/xovQ/8aL0P/Gi9D/xovQ/8aL0P/Gi9D/xovQ/8aL0P/Gi9D/wQGCP8NFx//Gi9D/xov - Q/8aL0P/Gi9D/xovQ/8aL0P/Gi9D/xovQ/8aL0P/Gi9D/xovQ/8aL0P/Gi9D/xovQ/8aL0P/Gi9D/xov - Q/9Pl9b/XbL9/12y/f9dsv3/XbL9/12x/J1dsv3nXbL9/12y/f9dsv3/XbL9/zFdhP8RHyv/ER8r/xEf - K/8RHyv/ER8r/xEfK/8RHyv/ER8r/xEfK/8RHyv/ER8r/xEfK/8RHyv/ER8r/xEfK/8RHyv/ER8r/xEf - K/8RHyv/ER8r/xEfK/8RHyv/ER8r/xEfK/8RHyv/ER8r/xEfK/8RHyv/ER8r/xEfK/8RHyv/ER8r/xEf - K/8RHyv/ER8r/xEfK/9Nk9H/XbL9/12y/f9dsv3/XbL9/12y/Y9esfvRXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1+x+nNfsfp1XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH892Sx - 9B9gsfkLXbH83V2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbH8if///wH///8BX7H6M12x/PFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9esfu/ZLH1Cf///wH///8B////AV+x+S9dsfzVXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbH8/V2x+5ljsfYL////Af///wH///8B////Af///wFpsO8FX7H6W16x - +61dsfzPXbH80Vyy/dNcsfzVXbL911yx/NlcsvzZXLL92V2x/dtcsf3bXbL9212y/dtdsv3bXLH921yx - /dtcsf3bXLH92V2y/dlcsv3ZXbH82V2x/Nldsv3ZXLH82Vyx/dddsfzXXbL9112x/NddsfzXXLH91Vyx - /dVcsvzVXbL9012y/dNdsv3RXbL9z12x/MNfsfqXXrH7Lf///wH///8B////Af///wEAAAAAAAD//wAA - AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA - //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA - AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA - //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA - AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA - //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA - AAAAAP//AAAAAAAA//8oAAAAQAAAAIAAAAABACAAAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAA////Af// - /wH///8B////Af///wFpr+8JZLH0X12x/JVcsvynXbH8t12y/cFdsv3BXbL9w12x/cVcsvzFXbL9x1yx - /Mddsv3HXLH9x12x/MdcsfzHXLH8x1yx/MdcsfzHXLH8x12y/MdcsvzHXLL9x1yx/cddsf3HXbH9x12y - /cddsf3HXbH9x12x/cdcsf3HXLL9x12y/MddsvzHXLH8x1yx/MdcsfzHXLH8x1yx/MdcsvzHXLH9x1yy - /cdcsfzHXLL8xV2y/cVdsv3DXbL8w12y/cFcsfy9XLH8r12y/KFgsfmBaLDxLf///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wFesftZXbH8312y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x - /P1dsfylYLH5G////wH///8B////Af///wH///8B////AWqw7glesfulXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/OtgsflD////Af///wH///8B////AW6w6gNesfutXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH89WCx+T3///8B////Af// - /wFesftxXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsfzjYbH4Ef///wFgsfkVXbH88V2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/If///8BYbH3hV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/V6fu/0WFvP9MkM3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsfz1dK/iE16x+8tdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0iKxP8DAwP/GjFF/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/2Cx - +U1dsv3fXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9IisT/AwMD/xoxRf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsvxnXbL9312y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/SIrE/wMDA/8aMUX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH8dV2y/d9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0iKxP8DAwP/GjFF/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/IFdsv3fXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9IisT/AwMD/xox - Rf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv2DXbL9312y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/SIrE/wMDA/8aMUX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL8hV2y/d9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/0iKxP8DAwP/GjFF/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/YVdsv3fXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1mq8v9CfrP/LVZ6/yE9V/8TIzD/AwMD/wgMEP8bM0j/Jkhn/zZn - kv9Pl9b/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv2HXbL9312y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/SIvF/yJAWv8HCw7/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/xIgLf80Yoz/WKjv/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH8h12y/d9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Rmtv/HzpS/wMDBP8DAwP/BAUG/xcq - O/8vWX7/PXSl/zdolP8DAwP/FSY2/0J/tP83aJT/JERg/wsSGf8DAwP/AwMD/wsSGf85bJn/W7D6/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Ildsv3fXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx+/82aJP/BgoO/wMD - A/8HDBH/L1h9/1Ke4P9csfz/XbL9/12y/f9IisT/AwMD/xoxRf9dsv3/XbL9/12y/f9brvj/Q3+1/xku - QP8DAwP/AwMD/xgsPv9Rm9z/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csv2JXbL9312y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1qt - 9/8iQVz/AwMD/wMDA/8jQl3/VKHl/12y/f9dsv3/XbL9/12y/f9dsv3/SIrE/wMDA/8aMUX/XbL9/12y - /f9dsv3/XbL9/12y/f9csfz/P3ms/wwVHf8DAwP/CQ8V/0aGv/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH9iV2y - /d9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yw+v8hPlf/AwMD/wcMEP8/eKv/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0iK - xP8DAwP/GjFF/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Wpev/HjhP/wMDA/8GCg3/SYvF/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yy/Ildsv3fXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/P8tVXn/AwMD/wgNEv9Kjcn/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9IisT/AwMD/xoxRf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1uv - +f8kRGH/AwMD/woRGP9RnN7/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfyJXbL9312y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9CfrP/AwQE/wQGB/9Egrj/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/SIrE/wMDA/8aMUX/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/W674/xsyR/8DAwP/Fik6/1uu+P9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8iV2y/d9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9XqO7/DBUd/wMD - A/8yXob/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0iKxP8DAwP/GjFF/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9WpOn/DBYe/wMDA/8zYYr/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx - /Ildsv3fXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/Llh9/wMDA/8VJzb/W6/5/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9IisT/AwMD/xoxRf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0J+ - sv8DAwP/CA0R/1Wk6f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csfyJXbL9312y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/WKrx/wkPFP8DAwP/Roa//12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/SIrE/wMDA/8aMUX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csfz/GjBE/wMDA/8xXYP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8iV2y/d9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zxzo/8DAwP/FSY2/1yx/P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0iKxP8DAwP/GjFF/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0J/tP8DAwP/Dxsl/1yw+/9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/Ildsv3fXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8fOlL/AwMD/zZm - kf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9IisT/AwMD/xox - Rf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9br/n/CxMa/wMD - A/9LkM3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsvyJXbL9312y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9br/n/CQ8V/wMDA/9Qmtv/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/SIrE/wMDA/8aMUX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/yREYP8DAwP/NGKM/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLL9iV2y/d9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/UJna/wMDA/8LFBv/XLD7/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/0iKxP8DAwP/GjFF/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f85bJn/AwMD/yJAWv9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Yldsv3fXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0SCuP8DAwP/GS5A/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9IisT/AwMD/xoxRf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/RofA/wMDA/8WKDn/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsf2JXbL9312y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f89dab/AwMD/yA8 - Vf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/SIrE/wMD - A/8aMUX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/06V - 1P8DAwP/Dxwn/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbH9iV2y/d9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/PHOj/wMDA/8hP1n/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/0iKxP8DAwP/GjFF/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9PmNj/AwMD/w4ZI/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/Yldsv3fXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/0B6rf8DAwP/HTdN/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9IisT/AwMD/xoxRf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/S5DN/wMDA/8SIC3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsf2JXbL9312y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Ji8b/AwMD/xMiMP9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/SIrE/wMDA/8aMUX/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0F8r/8DAwP/GzJH/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH9iV2y - /d9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Vqbs/wQF - Bv8FCAv/Wavz/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0iK - xP8DAwP/GjFF/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8wW4D/AwMD/ypPcP9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12x/Yldsv3fXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yx/P8SIS7/AwMD/0WDuv9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9IisT/AwMD/xoxRf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csfz/GC1A/wMDA/8+dqj/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csf2JXbL9312y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/LFN2/wMDA/8nSWj/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/SIrE/wMDA/8aMUX/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/U6Dj/wQFB/8FBwn/VqTq/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLL9iV2y/d9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0uQzf8DAwP/CA0S/1eo - 7v9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0iKxP8DAwP/GjFF/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zFcg/8DAwP/HjdO/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yy - /Yldsv3fXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csfz/Fyo8/wMDA/8wW4D/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9IisT/AwMD/xoxRf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1em - 7f8JEBb/AwMD/0OAtv9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsvyJXbL9312y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/0SCuf8DAwP/BgkM/0+Y2P9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/SIrE/wMDA/8aMUX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yx/P8nSWf/AwMD/xcrPP9csfv/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8iV2y/d9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/IT5Y/wMDA/8VJjb/Waz0/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0iKxP8DAwP/GjFF/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8/eav/AwME/wUHCP9LkM3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Ildsv3fXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1ak - 6v8NGCH/AwMD/yJAWv9csPr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9IisT/AwMD/xox - Rf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Kjsv/BwsP/wMDA/8zYYn/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csfyJXbL9312y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/S4/M/wcLD/8DAwP/JUZj/1qt9/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/SIrE/wMDA/8aMUX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9JjMf/ChEY/wMD - A/8iP1r/XLH7/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLH8iV2y/d9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9DgLb/BQgL/wMDA/8XKjv/T5jY/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/0iKxP8DAwP/GjFF/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw - +v81ZpD/BgkL/wMDA/8bMkf/Wqz1/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Ildsv3fXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0iJ - w/8MFR3/AwMD/wYJDP8vWX7/WKnw/12y/f9dsv3/XbL9/12y/f9IisT/AwMD/xoxRf9dsv3/XbL9/12y - /f9dsv3/XLH8/0iKxP8WKDn/AwMD/wMDA/8mR2T/Wq31/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvyJXbL9312y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/VqTp/yNCXf8DAwT/AwMD/wkPFP8pTW7/Roa//1qu9/9dsv3/SIrE/wMD - A/8aMUX/XbL9/1yx/P9Tn+P/OWyZ/xgtP/8DAwP/AwMD/wwVHf8/eaz/XLH8/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH9iV2y/d9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/R4jB/xgsPv8DAwP/AwMD/wMD - A/8GCg3/EiIv/xYoOf8DAwP/ChEX/xgsPv8NFh//AwME/wMDA/8DAwP/CA0R/y5Yff9YqO//XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yy/Yldsv3fXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csfz/So/L/yxTdf8RHyv/AwQF/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wcMEP8eOE//Om+d/1en - 7v9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfyJXbL9312y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/1al6/9Lj8v/NGKL/wMDA/8TIjD/RoW9/1Ca - 2v9arff/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL8h12y - /d9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0iK - xP8DAwP/GjFF/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/Iddsv3fXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9IisT/AwMD/xoxRf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsf2FXbL9312y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/SIrE/wMDA/8aMUX/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL8hV2y/d9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0iKxP8DAwP/GjFF/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /YNdsv3fXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Roa+/z95rP8/eaz/P3ms/z95rP8/eaz/P3ms/z95 - rP8/eaz/P3ms/z95rP8/eaz/P3ms/z95rP8/eaz/P3ms/z95rP8/eaz/P3ms/z95rP8/eaz/P3ms/z95 - rP8yXoX/AwMD/xMiL/8/eaz/P3ms/z95rP8/eaz/P3ms/z95rP8/eaz/P3ms/z95rP8/eaz/P3ms/z95 - rP8/eaz/P3ms/z95rP8/eaz/P3ms/z95rP8/eaz/P3ms/z95rP8/eaz/P3ms/1Si5v9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsvyBXbL9312y/f9dsv3/XbL9/12y/f9dsv3/XbL9/xgrPf8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/9Egbj/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH9dV2y/d9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8mSGb/Fig4/xYoOP8WKDj/Fig4/xYoOP8WKDj/Fig4/xYoOP8WKDj/Fig4/xYoOP8WKDj/Fig4/xYo - OP8WKDj/Fig4/xYoOP8WKDj/Fig4/xYoOP8WKDj/Fig4/xYoOP8WKDj/Fig4/xYoOP8WKDj/Fig4/xYo - OP8WKDj/Fig4/xYoOP8WKDj/Fig4/xYoOP8WKDj/Fig4/xYoOP8WKDj/Fig4/xYoOP8WKDj/Fig4/xYo - OP8WKDj/Fig4/xYoOP8WKDj/SYzG/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/GdesfvLXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9gsflNYbH3hV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsfz1dK/iE2Cx+RVdsvzvXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH8h////wH///8BXrH7b12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH842Gx+BH///8B////AWyv - 7ANesfurXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH89WCx - +T3///8B////Af///wH///8BabDvCV6x+6Vdsvz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbH87WGx+EP///8B////Af///wH///8B////Af///wFtsO0DYLH5X12x/OVdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsfz7XbH8oWCx+Rv///8B////Af///wH///8B////Af///wH///8B////Af// - /wFpsO8HYLH5U16x+5tdsfy9XbL8wV2y/MNcsvzFXLH8x1yx/clcsf3LXbL8y12y/M1csv3NXLH9zV2x - /c1csf3PXbL9z12y/c9dsv3PXbL9z12y/c9csf3PXbH9z1yx/M1csf3NXLH9zVyy/c1csv3NXLL8zV2x - /M1dsfzLXbL8y12y/MtcsfzLXbL9y1yx/Mtdsv3JXbL9yVyx/MldsfzJXLH8x1yy/cdcsfzHXLH8xV2y - /cVdsv3FXbL9w12y/cNdsv3BXbL9vV2x/K1hsfiFYbH4Jf///wH///8B////Af///wH///8B////AQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAIAAAAAAAQAAAQAgAAAAAAAACAEAAAAAAAAA - AAAAAAAAAAAAAP///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wF/q9MDcLDnF12x/T9dsvxLXLH9V12x/GVdsfx1XbL9gV2y/YNdsf2DXLL9hV2y/Iddsv2HXbH9iV2y - /YlcsfyLXLL8i1yy/I1dsv2NXLH8j1yy/Y9dsv2PXbL9j1yx/Y9csv2RXbL8kVyx/JFcsfyRXLH8kVyx - /JFcsfyRXLH8kVyx/JFcsfyRXLH8kVyx/JFcsfyRXbL8kV2y/JFdsvyRXLL9kVyy/ZFcsv2RXLH9j12x - /Y9dsf2PXbH9j12x/Y9dsf2PXbL9j12y/Y9dsv2PXbH9j12x/Y9dsf2PXbH9j12x/Y9csf2PXLL9kVyy - /ZFcsv2RXbL8kV2y/JFdsvyRXLH8kVyx/JFcsfyRXLH8kVyx/JFcsfyRXLH8kVyx/JFcsfyRXLH8kVyx - /JFdsvyRXLL9kVyx/Y9dsv2PXbL9j1yy/Y9csfyPXbL9jVyy/I1csvyLXLH8i12y/Yldsv2JXbL9h12y - /Idcsv2FXbH9g12y/YNdsf2BXbH8dV2x/Gdcsf1XXbL8S12x/T9vsOgXfqzTBf///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wFpr+8dZ7DxkWKx9uVdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9isfflZ7Dxk2mv7x////8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFhsfYXXrH7i12x - /PNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH89V6x - +41hsfcX////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wFmsPIFYLH5ZV2x/Otdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/O1gsflnZrHyBf///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BZLD0E1+x+q9dsvz/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9fsfqxZLD0Ff///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AWqw7h9esfvRXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9esfvTarDuI/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFpsO8bX7H6112y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9fsfrZabDvHf///wH///8B////Af///wH///8B////Af// - /wH///8BbrDqC16x+8Vdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9esfvJbbDrDf///wH///8B////Af///wH///8B////Af///wFfsfqNXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9fsfqR////Af///wH///8B////Af// - /wH///8BYbH4OV2x/Ptdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12x/Pthsfg9////Af///wH///8B////AWSu8gNdsfzDXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/Mdkr/QF////Af// - /wH///8BYLH5TV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/2Cx+VH///8B////AYOt0gNhsfjPXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/YbH4036t - 1wX///8Bda/hQV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/0iJwv8uWHz/Llh8/y5YfP9Hh8D/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/dK/jRf///wFjsfWDXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJf - h/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9jsfWH////AV6x+6ldsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/16x+63///8BXbL9wV2y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMD - A/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL8x////wFdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csvzR////AV2y/cFdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMD - A/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12x/N1dsfwDXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH87V2x/AVdsv3BXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMD - A/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csvz5XbL8BV2y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9esv0HXbL9wV2y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRi - i/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1ux/Qddsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XrT9B12y - /cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfwJXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/160 - /Qtdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLL9C12y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsf0NXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/P9Zq/P/UZvd/0SD - uv86bpz/L1qA/xcrPP8DAwP/AwMD/wMDA/8XKjr/L1p//zlum/9Egrn/UZvc/1mr8/9csfz/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/Q1dsv3BXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/W6/5/06W1f80Y43/GjFF/wkQFv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CQ8V/xowRP80Yoz/TpXU/1uv+f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbP9D12y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/UJrb/zBcgv8TIjD/AwQF/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DBAT/EiEv/zBbgf9Qmdn/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csf0PXbL9wV2y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/So7J/x87 - U/8FBwr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wUHCf8eOVH/SYzH/1yx - /P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yx+xFdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/UJrb/yJBXP8EBgj/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wQF - Bv8MFh7/Fys9/yNCXf8tVXn/HjdO/wMDA/8DAwP/AwMD/x02TP8tVXn/I0Ne/xgsPv8NFh//BAUH/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8EBgf/Ij9Z/1CZ2f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH9EV2y/cFdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Wary/zBcg/8HDBD/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/BwwQ/x03Tv84a5j/UZvc/1qt9v9dsv3/XbL9/12y/f80Yov/AwMD/wMD - A/8DAwP/Ml+H/12y/f9dsv3/XbL9/1qt9/9Rm93/OWya/x44T/8HDBD/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/BwsP/y9agP9YqvH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csfsRXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH8/0iKxP8SIi//AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/Fyo8/zpvnv9WpOr/XLH8/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH8/1al6/87cKD/GCw+/wMDBP8DAwP/AwMD/wMDA/8DAwP/AwMD/xIgLf9HiMH/XLH8/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/hNdsv3BXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1uv+P8wXIL/BQcK/wMDA/8DAwP/AwMD/wMD - A/8DAwP/Fio7/0WFvP9csPr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMD - A/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPr/Roa//xcr - Pf8DAwP/AwMD/wMDA/8DAwP/AwMD/wUHCf8vWX//W673/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLH+E12y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9Xp+3/HTdN/wMDA/8DAwP/AwMD/wMDA/8DAwP/DBYe/zxzpP9br/n/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W6/5/z11pv8NFx//AwMD/wMDA/8DAwP/AwMD/wMD - A/8cNUr/VqXr/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsf4TXbL9wV2y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/VKHm/xMkM/8DAwP/AwMD/wMDA/8DAwP/AwQF/ydK - aP9Xpuz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRi - i/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1en7v8oTGz/AwQF/wMDA/8DAwP/AwMD/wMDA/8TIjD/U6Dj/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/hNdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1al - 6/8SIS7/AwMD/wMDA/8DAwP/AwMD/wsTGv9Df7X/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/P9Egbj/CxQc/wMD - A/8DAwP/AwMD/wMDA/8RHyz/VaTp/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLL9E12y - /cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9arPT/GS5A/wMDA/8DAwP/AwMD/wMDA/8WKDj/Up3g/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Tn+L/Fyo7/wMDA/8DAwP/AwMD/wMDA/8XKz3/Wavz/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvsTXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7/yNB - Xf8DAwP/AwMD/wMDA/8DAwP/GzNI/1io7/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9YqfD/HDZM/wMDA/8DAwP/AwMD/wMDA/8hPlj/XLD6/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw - +xVdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/P8zYYn/AwMD/wMDA/8DAwP/AwMD/xgsP/9YqfH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9ZqvL/GS9C/wMDA/8DAwP/AwMD/wMD - A/8xXoX/XbH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7FV2y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Roa//wUH - Cf8DAwP/AwMD/wMDA/8QHir/VaLn/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9VpOn/EiAt/wMDA/8DAwP/AwMD/wQGCP9FhLz/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csPsVXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1am7P8PGiX/AwMD/wMDA/8DAwP/CQ8U/06V1P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Pl9b/CRAW/wMD - A/8DAwP/AwMD/w0YIf9Wper/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+xVdsv3BXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/J0pp/wMD - A/8DAwP/AwMD/wMEBf8/eaz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJf - h/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9BfLD/BAUG/wMDA/8DAwP/AwMD/yVGZP9csfz/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLD7FV2y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/0iKxP8EBgj/AwMD/wMDA/8DAwP/J0pq/1yx/P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx - /P8pTm7/AwMD/wMDA/8DAwP/BAUH/0eHwP9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPsVXbL9wV2y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9br/n/GC1A/wMD - A/8DAwP/AwMD/w4ZI/9YqfD/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMD - A/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1iq8f8PHCf/AwMD/wMDA/8DAwP/Fyo7/1uv - +f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yw+xVdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/0J/tf8DBAT/AwMD/wMDA/8DAwP/QXyw/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/0N/tf8DAwP/AwMD/wMDA/8DAwT/QXyw/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7FV2y/cFdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfv/GjBE/wMD - A/8DAwP/AwMD/xowRP9csPv/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMD - A/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/xszR/8DAwP/AwMD/wMD - A/8YLT//XLH7/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csPsVXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/02T0f8EBQf/AwMD/wMDA/8DAwP/Roe//12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/SIrE/wMDA/8DAwP/AwMD/wQFBv9LkM3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+xVdsv3BXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/LFN2/wMD - A/8DAwP/AwMD/xYoOP9csPr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMD - A/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPv/Fys8/wMD - A/8DAwP/AwMD/ypQcf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL7E12y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1qt9v8OGSP/AwMD/wMDA/8DAwP/OWya/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f86b57/AwMD/wMDA/8DAwP/DRcg/1qs9f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvsTXbL9wV2y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/SYvG/wMD - A/8DAwP/AwMD/wcLDv9WpOr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRi - i/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1en - 7f8HDBD/AwMD/wMDA/8DAwP/R4jB/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y+xNdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8vWH3/AwMD/wMDA/8DAwP/HjhP/1yx/P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/x87U/8DAwP/AwMD/wMDA/8tVXj/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLL9E12y - /cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/xcr - Pf8DAwP/AwMD/wMDA/84bJn/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/Om+e/wMDA/8DAwP/AwMD/xYoOP9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9bsv4TXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9XqO//CA0R/wMDA/8DAwP/AwQE/0+Y2f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Rm93/AwQE/wMDA/8DAwP/BwsP/1am - 6/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1uy - /hNdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0uP - zP8DAwP/AwMD/wMDA/8NFx//Wq32/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1uu+P8OGSP/AwMD/wMDA/8DAwP/SYzH/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH+E12y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/PHKi/wMDA/8DAwP/AwMD/xszSP9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/x03Tf8DAwP/AwMD/wMD - A/86b53/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsP4TXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8wW4D/AwMD/wMDA/8DAwP/KU5v/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/K1F0/wMDA/8DAwP/AwMD/y5XfP9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12w/hNdsv3BXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/yZJZ/8DAwP/AwMD/wMDA/80Y43/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJf - h/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f82Z5L/AwMD/wMD - A/8DAwP/JUVi/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbD+E12y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/IDxV/wMDA/8DAwP/AwMD/zxyov9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/z51p/8DAwP/AwMD/wMDA/8eOVD/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsP4TXbL9wV2y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8cNUr/AwMD/wMDA/8DAwP/QHqt/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMD - A/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/QX2y/wMD - A/8DAwP/AwMD/xoxRv9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12w/hNdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/xszSP8DAwP/AwMD/wMDA/9BfLH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9DgLb/AwMD/wMDA/8DAwP/GS9D/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbD+E12y/cFdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/HDRK/wMDA/8DAwP/AwMD/0B6 - rv9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMD - A/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0F9 - s/8DAwP/AwMD/wMDA/8aMUX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsP4TXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8gO1T/AwMD/wMDA/8DAwP/PHOj/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Pnan/wMDA/8DAwP/AwMD/x44T/9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12w/hNdsv3BXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/yZIZv8DAwP/AwMD/wMD - A/81ZI7/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMD - A/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f82aJP/AwMD/wMDA/8DAwP/JEVh/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbD+E12y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/L1l//wMDA/8DAwP/AwMD/ypPcf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/yxTdf8DAwP/AwMD/wMDA/8tVnr/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsP4TXbL9wV2y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f87caD/AwMD/wMD - A/8DAwP/HDVL/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRi - i/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/HjhP/wMDA/8DAwP/AwMD/zltm/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12w/hNdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/0qNyf8DAwP/AwMD/wMDA/8NGCH/Wq73/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1uu+P8PGiX/AwMD/wMDA/8DAwP/SIrE/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbD+E12y - /cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/V6ft/wcL - D/8DAwP/AwMD/wMEBf9Qmtv/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/Up3g/wMEBf8DAwP/AwMD/wYKDv9WpOr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsP4TXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/Fik5/wMDA/8DAwP/AwMD/zpunf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f87cqL/AwMD/wMDA/8DAwP/FCU1/1yx - +/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12w - /hNdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8tVXn/AwMD/wMDA/8DAwP/HztT/1yx/P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH8/yE+WP8DAwP/AwMD/wMDA/8rUnT/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH+E12y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0eIwf8DAwP/AwMD/wMDA/8IDRH/Vqbs/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9YqO//CA4T/wMDA/8DAwP/AwMD/0WE - vP9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9bsv4TXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/Waz0/w0WH/8DAwP/AwMD/wMDA/87cJ//XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/zxzpP8DAwP/AwMD/wMDA/8MFBz/Warz/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1uy/hNdsv3BXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/KU5v/wMDA/8DAwP/AwMD/xgs - Pv9csPv/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJf - h/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfv/GS9C/wMDA/8DAwP/AwMD/yhL - av9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/W7L+E12y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9Kj8v/AwQF/wMDA/8DAwP/AwME/0mLxv9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/0qOy/8DAwT/AwMD/wMDA/8DBAX/SYzH/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvsTXbL9wV2y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+/8XKzz/AwMD/wMD - A/8DAwP/HDVL/1yx+/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMD - A/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/HjhP/wMDA/8DAwP/AwMD/xUo - OP9csPr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y+xNdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/z96rf8DAwP/AwMD/wMDA/8DAwP/RIK4/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/0WFvf8DAwP/AwMD/wMDA/8DAwP/Pnao/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL7E12y/cFdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W674/xUn - N/8DAwP/AwMD/wMDA/8QHSn/Wav0/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMD - A/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9arPX/ESAs/wMDA/8DAwP/AwMD/xMk - M/9brvf/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csPsTXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/RYO6/wQFBv8DAwP/AwMD/wMDA/8rUXP/XLH8/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH8/yxVeP8DAwP/AwMD/wMDA/8DBAX/Q4C2/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+xVdsv3BXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csfz/IkFc/wMDA/8DAwP/AwMD/wQFBv9DgLb/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMD - A/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Egrn/BAYH/wMDA/8DAwP/AwMD/yE+ - V/9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLD7FV2y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9UoeX/DBUd/wMDA/8DAwP/AwMD/woS - GP9Qmtv/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/UZvd/wsUG/8DAwP/AwMD/wMDA/8LExr/U6Dk/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPsVXbL9wV2y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9BfbL/BAUH/wMDA/8DAwP/AwMD/xMjMf9Wpuz/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRi - i/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1en7f8UJjX/AwMD/wMDA/8DAwP/BAUF/0B7 - rv9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+xVdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/P8tVXn/AwMD/wMD - A/8DAwP/AwMD/xszSP9Zq/P/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9ZrPT/HTZM/wMDA/8DAwP/AwMD/wMDA/8rUnT/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7FV2y - /cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1uu+P8dNk3/AwMD/wMDA/8DAwP/AwMD/x87VP9ZqvL/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Wavz/yE+V/8DAwP/AwMD/wMDA/8DAwP/GzNI/1uu - 9/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPsVXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1en - 7v8UJDP/AwMD/wMDA/8DAwP/AwMD/xowQ/9UoeX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1Wi - 5/8bMkb/AwMD/wMDA/8DAwP/AwMD/xMiMP9Wpuz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw - +xVdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1Ke4f8OGSL/AwMD/wMDA/8DAwP/AwMD/w4Z - I/9Gh8D/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9HicL/Dxsl/wMDA/8DAwP/AwMD/wMDA/8NFyH/UZze/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7FV2y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1CZ2f8OGiT/AwMD/wMDA/8DAwP/AwMD/wUHCf8sVHf/Wary/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Zq/P/LVZ6/wUH - Cf8DAwP/AwMD/wMDA/8DAwP/Dhki/0+X1v9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csPsVXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1Of4/8WKTn/AwMD/wMD - A/8DAwP/AwMD/wMDA/8PHCf/QX2x/1yx/P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csfz/Qn+0/xAdKf8DAwP/AwMD/wMDA/8DAwP/AwMD/xUnN/9SnuD/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y+xNdsv3BXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1mr9P8nS2r/AwQE/wMDA/8DAwP/AwMD/wMDA/8DAwP/GzJG/0qO - y/9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJf - h/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/S5DN/xszSP8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDBP8mSGb/Wary/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL8E12y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx - /P9BfLD/DBUe/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/xszSP8/eaz/Wavz/1yx/P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx - /P9Zq/T/QHqu/xw0Sv8DAwT/AwMD/wMDA/8DAwP/AwMD/wMDA/8MFBz/QHqt/1yx/P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csf4TXbL9wV2y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Wper/J0pp/wQGCP8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8JDxT/I0Fc/z11p/9VpOn/W7D6/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMD - A/8yX4f/XbL9/12y/f9dsv3/XLD6/1ak6v8+dqj/I0Jd/wkQFf8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8EBgj/Jkhn/1Wk6f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12x/hNdsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/So7K/xowRP8DBAT/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wQG - CP8QHSn/HDVL/yhMbP8yX4f/IT1W/wMDA/8DAwP/AwMD/yA7U/8yX4j/KU1s/x02TP8RHir/BAYI/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DBAT/GS9C/0mNyP9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH+E12y/cFdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7/0J/ - tP8XKzz/AwQF/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DBAX/Fik6/0J9 - sv9csPv/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv4TXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+/9JjMf/KEtr/wwVHv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8MFR3/J0pp/0iKxf9csPv/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yy+xFdsv3BXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/Waz0/0eHwP8sVHf/EyMw/wYKDf8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BgkM/xIiL/8sU3b/Roa//1mr9P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLH9EV2y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csPv/VaPo/0qOyv8+dqj/NGKM/ypPcf8UJTT/AwMD/wMDA/8DAwP/FCQy/ypPcP8zYov/Pnan/0qO - yf9Vo+f/XLD7/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvwRXbL9wV2y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRi - i/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/A9dsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLL8D12y - /cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv0PXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x - /Q1dsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJfh/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH9C12y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9etP0LXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/zRii/8DAwP/AwMD/wMDA/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Aldsv3BXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGKL/wMDA/8DAwP/AwMD/zJf - h/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XrT9B12y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f80Yov/AwMD/wMDA/8DAwP/Ml+H/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9bsf0HXbL9wV2y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zRii/8DAwP/AwMD/wMD - A/8yX4f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/16y/Qddsv3BXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/z11pv8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJA - W/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJA - W/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJA - W/8iQFv/IkBb/yJAW/8iQFv/FCQz/wMDA/8DAwP/AwMD/xMjMf8iQFv/IkBb/yJAW/8iQFv/IkBb/yJA - W/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJA - W/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJA - W/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/IkBb/yJAW/8iQFv/PHOj/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csvz5XbL8BV2y/cFdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/LVR3/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8rUXP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12x/O1dsfwFXbL9wV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8tVHf/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/ytRc/9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH93Vyx/QNdsv3BXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/y1Ud/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/K1Fz/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csvzR////AV2y/cFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/QXyw/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylO - bv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylO - bv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylO - bv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylO - bv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylO - bv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylO - bv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv8pTm7/KU5u/ylObv9Aeq7/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/Mf///8BXrH7qV2y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XrH7rf///wFjsfWDXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9jsfWH////AXWv - 4UFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/3Sv40X///8Bg63SA2Gx+M9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9hsfjTfq3XBf// - /wH///8BYLH5TV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/2Cx+VH///8B////Af///wFksPIDXbL8w12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsfzHZK/0Bf// - /wH///8B////Af///wFgsfk3XbH8+12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbH8+2Cx+D3///8B////Af///wH///8B////Af///wFesfqHXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9fsfqP////Af// - /wH///8B////Af///wH///8B////AWyv7Alesfu/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XrH7x22w7Av///8B////Af///wH///8B////Af///wH///8B////AWWw - 8xdesfvTXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1+x+tlosfEd////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AWmw7x1esfvPXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9esfrVarDuI////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AWWx8xNgsfmzXbL8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvz/YLH5t2ew8hf///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AW2w7QVisfdvXrH78V2y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL86WCx+WVpsO4F////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wFosPEfYLH4m12x/Pddsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH88V6x/IlgsfkV////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BabDvHWGx93tfsfrTXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/YLH43WCx - +HlksfUV////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AXWw4gNur+kdYrH2U12x - /HVdsfyDXbL9g1yy/IVdsvyHXbL9iVyy/YtcsfyNXLL9j1yx/JFcsfyTXbL9lV2y/JVcsf2XXLL9l12x - /JldsfyZXLL8m1yy/Jtcsv2bXLH9m1yx/Z1csfydXbL9nVyx/Z1csfydXbL9nV2y/Z1dsv2dXbL9nV2y - /Z1dsv2dXbL9nV2y/Z1dsv2dXbL9nVyx/Z1csf2dXLH9nV2y/Z1csf2dXLH9nVyx/J1csf2dXLH9m12x - /Ztdsv2bXbL8m1yy/Jtdsv2bXLL8m1yy/JldsfyZXbH9mV2x/ZldsfyZXLH8mV2y/Zldsv2XXLL8l1yx - /JdcsfyXXbH9l1yy/ZddsvyVXLH8lV2y/ZVdsv2VXLH9lV2y/JNdsfyTXLL8k12x/JNdsfyRXLH8kVyx - /JFcsf2PXbL9j1yy/I9csf2NXbL8jVyx/I1dsv2LXbL9i12x/Yldsv2JXLL9h12y/Yddsv2FXbL9hV2y - /YNdsv2DXbL9gV2y/XVdsfxlYrH2UXav4TF/rdYD////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAQAAAAIAAAEAIAAAAAAAACAEAAAA - AAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BXLL8A1yx/QNcsf0DXbH8A12x/AVdsvwFXLL8BV2x - /QVhsv0HWrT9B1ut/QlgtP0JXbb9C1yv/gtdsvkNXrT9D162/g9bsP4RX7L+E1yw/hNesf4VXrP+FVyx - +xdbsvsXXbP9GVuw+hlcsf4bXbL7G16z/Rtdsv4dWrD7HVyx+h1csvsfXLP+H16y/h9csf4fXLL+H12y - /iFdsP4hXLH+IVuy/iFcsv0hXbL7IV2y+yFcsfshXLD7I1yw+yNcsPsjXLD7I1yw+yNcsPsjXLD7I1uw - +yNbsfsjW7H7I1ux+yNbsPsjXLD7I1yw+yNcsPsjXLD7I1yw+yNcsPsjXLD7I1yw+yNdsvshXbL7IV2y - +yFdsvshXbL7IV2y+yFdsvshXLL9IVuy/iFbsv4hW7L+IVuy/iFbsv4hW7H+IV2w/iFdsP4hXbD+IV2w - /iFdsP4hXbD+IV2w/iFdsP4hXbD+IV2w/iFdsP4hXbL+IV2y/iFdsv4hXbL+IV2y/iFdsf4hXbD+IV2w - /iFdsP4hXbD+IV2w/iFdsP4hXbD+IV2w/iFdsP4hXbD+IV2w/iFbsf4hW7L+IVuy/iFbsv4hW7L+IVuy - /iFcsv0hXbL7IV2y+yFdsvshXbL7IV2y+yFdsvshXbL7IVyw+yNcsPsjXLD7I1yw+yNcsPsjXLD7I1yw - +yNcsPsjW7D7I1ux+yNbsfsjW7H7I1uw+yNcsPsjXLD7I1yw+yNcsPsjXLD7I1yw+yNcsPsjXLH7IV2y - +yFdsvshXLL8IVuy/iFcsf4hXbD+IV2y/iFcsv4fXLH+H16y/h9ds/4fXLL7H1yx+h1asPsdXbL+HV6z - /RtdsvobXLH+G1yx+hlds/0ZW7L7F1yx+xdes/4VXrH+FVyw/hNdtf4RW7D+EV62/g9etP4PXbL5DVyv - /gtdtv0LYLX9CVyt/QlZtP0HYrL9B12x/QVdsv0FXbL8BV2x/AVdsfwDXbH8A1yx/QNcsvwD////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wGaqLQDeKzaC3mu2hlsse09XbH9b12y/IldsvyPXbL8mVyy/KVcsf2zXLH8wV2x/M9csfzfXbL87V2y - /ftdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9+12y/O1csfzfXbH80V2x/cFcsf2zXLL8pV2y - /ZldsvyPXbL8iV2x/XFqse4/ea7aG3is2guYqbgD////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AX+t - 1w2ErtJdbK/rpWew8e9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9nsPLxbK/sqYOu1GGBrdUP////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BarLxDWmv - 7mdmsPHdXbH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/ZrDy4Wmv721qsvIN////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFkr/MNYbH3WV+x - +tFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/X7H61WGx - +F9kr/MN////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AWiw8AlhsfdPXrH7yVyy - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XrH7zWCx91NnsPAL////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bg7HRA2aw8i9fsfqxXbH8+12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsfz9X7H6tWaw8jODsdED////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BZrDyD2Ox9XVdsfztXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsfzxY7H1eWax8g////8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BbrDqKV+x+bVdsv39XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f1fsfq7bbDrLf///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wGIq8oDY7H1SV+x+d1dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1+x+uFjsfZPiKzKA/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wGArtcFZ7DxYV2y/O9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL88Wew - 8mmAr9YH////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wF8r9wHaLDwcV6x+/Ndsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsfz1aLDxeXuu3An///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wGAr9YFaLDwcV6x+/Vdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12x+/dosPF5gK/XB////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wGIq8kDZ7DxYV6x+/Vdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbH89Wex8mmMsM4D////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BY7H1SV2y/O9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvzxY7H2Uf///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BbrDqJ2Cx+d1dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1+x+uFtsOsv////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BZrHyDV+x+rVdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/X7H6u2aw8hH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bg7HRA2Ox9XNdsvz9XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f1jsfV7g7HRA/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AWew8i1dsfzvXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH88WWw - 8zX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AWew8AlfsfmvXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9fsfq3Z7DwC////wH///8B////Af///wH///8B////Af///wH///8B////Af///wFhsfdNXbH8+12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbH8/WCx+Ff///8B////Af///wH///8B////Af///wH///8B////Af///wFkrvILXrH7x12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9esfvNZK/0D////wH///8B////Af///wH///8B////Af///wH///8BYbH3V12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/2Gx+GH///8B////Af///wH///8B////Af///wH///8BbLPwC1+x - +tFdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9esfvVabLyEf///wH///8B////Af///wH///8B////AWqv - 7mVdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/2iv72////8B////Af///wH///8B////AYKt - 0wlnsPHdXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9msPLhfq3YEf///wH///8B////Af// - /wGFrtBZXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1qt9v9arfb/Wq32/1qt9v9arfb/Wq32/1qt9v9arfb/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/4Gu1WP///8B////Af// - /wGZqbYDbK/ro12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9rr+yrmam2Bf// - /wH///8BeqrUB2iw8e9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Z7Dy8Xet - 3A////8B////AYCt0hVdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f91r98f////Af///wFssew7XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/arHuQ////wH///8BXbH9a12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgN - Ef9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12x/XX///8B////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv2N////Af///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL8k////wH///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/J1dtPwD////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csvypW7L8A////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8tVyx/AX///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/cNdsf0F////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsT - Gv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsfzRXbH8B////wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH84V2x/An///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/O9csvwJ////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv37XbL9C/// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x - /Qv///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9fsv0L////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/W7P9Df///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yv/Q3///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgN - Ef9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9es/0P////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbX9D////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw/RH///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvoT////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbP9E////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/161/RX///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csP4V////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsT - Gv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbT9F////wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+xn///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9esf4Z////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/P9brvf/WKnx/1al - 6v9UoOT/T5fW/woQFv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8HCw7/TpbW/1Og5P9Wper/WKnx/1qu - 9/9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbT+G/// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPv/WKnw/1Og4/9Mkc7/P3ms/zJgiP8mSGb/HjhP/xYp - Of8OGiT/BgoO/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8GCg3/Dhkj/xYo - OP8eN07/Jkdl/zJfhv8/eKr/S5DN/1Of4/9YqfD/XLD7/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x - /Bv///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csfz/Wqz1/1Gc3v8/eKv/JUdk/xcqO/8KERj/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8JEBb/Fik6/yVFYv8+dqj/UZzd/1qs9P9csfz/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9cs/wd////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH8/1io8P9Mkc//NGKM/xw0Sf8KERj/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wkQFv8bMkf/M2CJ/0uQ - zf9XqO//XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbP+Hf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9ZqvL/S4/M/y9agP8WKTr/BQgL/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8FCAr/Fig4/y5Yff9Kjsn/WKnx/1yx/P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yw/B////8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH7/1Gb - 3f83aZX/GC1A/wYJDP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/BQgL/xcrPf81ZpD/UJrb/1yx+/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csf4f////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9br/n/S4/M/ydL - a/8MFh7/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wsUHP8mSGb/So7J/1uv+f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL7If///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+/9MkM7/JUVi/wgO - E/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wcNEf8jQl7/S4/L/1yw - +/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx+yH///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/1CZ2v8qT3H/ChEX/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DBQb/CA0T/w0XIf8SIS//BAYH/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wQEBf8TIi//DRgh/wgOE/8EBQb/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wkP - Ff8oTGz/T5fX/1yx/P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv4h////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/VqTp/zNhif8OGSL/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/BwwR/xEgLP8bM0j/Jkhn/zJgiP8/eKr/SIrE/02T0v9RnN7/VqTq/wsSGf8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8HDBD/VqXq/1Gc3v9NlNL/SIvF/z95q/8zYYr/J0lo/xw0Sf8SIC3/CA0S/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/w0XH/8xXYX/VaPn/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W7D7I////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9arfb/P3mt/xUmNv8EBQX/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BAUG/xAc - KP8iQVv/PXSk/02U0/9Vo+f/W6/5/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9br/n/VaPo/06V - 1P89dqf/I0Je/xAeKf8EBQb/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwQF/xMjMv8+dqn/Wq31/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12w+iP///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/P9OldT/IkBa/wYJDP8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wQFB/8TJDP/KlFy/0WF - vP9UoeX/XLD6/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yw+v9Uoeb/Roa+/ytTdf8UJjX/BAYI/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BQgL/yA8Vv9MktD/XLH8/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csvwj////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1mr8/82Z5L/DRcg/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/Dxsm/ylOb/9HicP/VqXr/1yx - /P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsT - Gv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/V6bs/0iKxf8qUXL/EB0p/wMDBP8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/DBUd/zRjjf9YqfH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL+I////wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/02U0v8dNk3/BAYI/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMEBf8ZMEP/PXWm/1Si5/9csfv/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/1Wj6P8+d6n/GzJH/wQF - B/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8EBgf/GzNI/0yR - zv9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/iP///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W674/zpwn/8MFh//AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwME/xsyR/9Fg7v/Wavz/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1mr - 8/9GhsD/HDVL/wMDBP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8MFRz/OGyZ/1qt9/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csf4l////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Vqbs/yZJaP8FBwr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/FCY1/0B7r/9Zq/P/XLH8/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1qs9f9Cf7T/FSg4/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wUHCf8kRWL/VaPo/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W7L+Jf// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/TpbW/xYqPP8DBAT/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8MFR3/NmiV/1eo7v9csfz/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLH8/1ip8P84bJr/DBYf/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwQE/xUnN/9Nk9H/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /iX///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/Roa+/w0YIf8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wUHCv8nSmn/Up7h/1yx/P9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/1Sh5P8pTm7/BQgK/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/DBYf/0OBuP9csfz/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsP4l////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfv/P3ms/wgNEv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/xQlNP9Ghr//W6/5/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD6/0iKxP8VKDj/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8HDBH/PHSk/1yw+/9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbD+Jf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/PHKj/wUICv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/BgkM/y5XfP9YqO//XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/WKrx/zBc - g/8GCg3/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wUHCv85bZv/XLD7/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1ux/if///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/PXWm/wQGCP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/ER8r/0eIwv9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgN - Ef9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csfz/SYzH/xIiL/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BAUH/zpv - nv9csfv/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9bsv4n////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/Q4G3/wQHCf8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DBAX/I0Je/1al6v9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9Xp+3/JUdl/wQFBv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8EBgj/QHuv/1yx/P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLL8J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/S5DN/wgNEv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8HDBD/NGSP/1uu+P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1uv+f83aZb/CA0R/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wcMEf9IisT/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y+yf///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/UZvc/w0XIP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8LFBv/QX2y/12x/P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH8/0SBuP8MFh//AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CxQb/0+X1/9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvsn////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/VqXq/xQkM/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8PGyX/SYzH/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/S4/M/xAeKv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8RHyz/VaPo/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Wqz1/x46Uv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8QHSn/TJLP/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9NldT/ESEu/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/xs0Sf9ZrPT/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+yf///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD6/y1We/8DBAX/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8OGSP/S5DN/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/02T - 0f8QHCj/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/K1Fz/1uw+v9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPsn////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH8/z12qP8FBwr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8KEhj/RYW9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsT - Gv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/R4nD/wwVHf8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wQFBv87cqL/XbH8/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7J////wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/02T0f8MFRz/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8HDBD/PXWn/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8/eq3/CA4T/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/ChAX/0uQ - zf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+yf///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1eo7v8YLkH/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8FBwn/NGOM/1yx/P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLH8/zZok/8FCAv/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8VKDj/V6ft/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPsn////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+v8tVnr/BAUF/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DBAT/KEtr/1uv+P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9br/n/K1Fz/wQFBv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwQE/ypQcv9csPr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7J/// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Eg7v/BwwR/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/GjFF/1io8P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1ip8f8dN03/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8GCg3/Qn+1/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw - +yf///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9WpOr/FSc2/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/DRgi/1Gb3P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Up3f/xAdKf8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/xIhL/9Vo+j/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csPsn////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfv/Llh9/wMEBf8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/BQkL/0OAtf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Eg7r/BwwQ/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DBAX/K1J0/1yx+/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLD7J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/So7K/woRGP8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/y1Vev9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/y9b - gf8DBAT/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgOFP9IisX/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yw+yf///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Wq32/x87U/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/xUoOP9ZqvL/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgN - Ef9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9Zq/P/GC5B/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/HDVK/1qs9f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csPsn////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0F8sP8GCQz/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wYKDf9Kjsr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/0yS0P8IDRH/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wUICv8+d6n/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLD7J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1ip8P8YLUD/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8uV3z/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/MV2E/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/FSc4/1eo - 7/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+yf///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f89dqf/BAcJ/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8QHir/V6ft/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1mr8/8SIS7/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wQG - CP86cJ//XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPsn////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9YqfH/GC0//wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/P3mt/1yx/P9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Q4C2/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/FSc3/1io7/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/QX2y/wUH - Cv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/GjJG/1qs9f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1uv+f8cNkz/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wUHCf8+eKr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+yf///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W674/x45 - Uf8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwUG/0aHwP9csfz/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/So7J/wMFBv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/GzNI/1qu9/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPsn////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0uR - zv8IDhP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/x03Tv9arfb/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsT - Gv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1uv+f8fO1T/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wcMEf9JjMf/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7J////wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8uWH3/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDBP9Fhb3/XLH8/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/SYvG/wMD - BP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/K1Fz/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+yf///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9WpOr/EyIw/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8YLD7/Wavz/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1qt - 9/8aMET/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/xAeKf9Uouf/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvsn////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/Q4G3/wQFBv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/Om+d/1yx/P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csfz/PXWn/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DBQb/QHqu/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL7J/// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH8/yRFYv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CxQc/1Wi5/9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1en7v8MFh//AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/yE+WP9csfv/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - +yf///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1Of4/8PGyb/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/ydKaf9csPr/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csfv/KlBy/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8OGCH/UZze/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsvsn////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9Cf7T/AwME/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMEBP9HiMH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/0qOyv8DBAX/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwME/z94 - q/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL7J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csfz/J0pq/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8TIzH/V6bt/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9YqvH/FCY1/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8kRGD/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y+yf///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/VqXr/xMkMv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/K1J0/1yx - /P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgN - Ef9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/y5Yff8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/ESAs/1Wj5/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsvsn////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/0uQzf8FCAv/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwQF/0eH - wP9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Kjcn/AwQF/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wUHCv9IisT/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/W7L+J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f83aJX/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/w8c - KP9Vo+f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/V6bt/xEfLP8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/M2KL/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1uy/if///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPr/IT9Z/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8iQFv/W6/6/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+v8lRmT/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/x45UP9csPr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9bsv4n////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/VqXq/xMjMP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/OGya/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/PHOj/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8RHyv/VKLm/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W7L+J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0+X1/8GCw//AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/BQcK/0ySz/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0+Y - 2P8FCAr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BgoN/0yRz/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1uy/if///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9CfbL/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/xEeKv9Vo+f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9Wpuz/EiIv/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8+d6n/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9bsv4n////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/MV2E/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8dN07/W674/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsT - Gv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/W6/5/yA9Vv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/LVZ6/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD+Jf///wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH7/yJBXP8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/LFV4/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8wW4H/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/x86Uv9csPv/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12w/iX///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1mq8v8YLUD/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/zxzpP9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/QHqt/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8WKTn/WKjv/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsP4l////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Vo+j/EB0o/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMEBf9Jjcj/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/02T0f8DBAX/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/Dhok/1Of - 4v9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbD+Jf// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/UZze/wgO - E/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8JDxX/UJnZ/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9SnuD/ChEY/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wcN - Ef9Pl9f/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12w - /iX///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/06V - 1P8DBAT/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/EB0o/1Sh5f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/VqTq/xEgLf8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DBAT/So/L/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsP4l////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9Hh8D/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/xYoOP9XqO//XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1iq8f8YLT//AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/0OAt/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbD+Jf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/QHqu/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8aMUX/Wq33/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9brvj/HTdN/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/89dKX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12w/iX///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/ztxoP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/HjhP/1yx/P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgN - Ef9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/yE/Wf8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/N2qW/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsP4l////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f83aZX/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/yE/Wv9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8lRmT/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/zNijP9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbD+Jf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/NWWP/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8kRWL/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/J0xs/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8xXoX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12w/iX///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/zRjjP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/JUdl/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/ylO - b/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/MFyD/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsP4l////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Y43/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/yVH - Zf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8pTm//AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/zBcg/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbD+Jf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/NGSO/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8kRWP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/KExs/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8xXoX/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12w/iX///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/zZolP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/IkBc/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/yVHZf8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/M2KL/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsP4l////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f86cJ7/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/x45Uf9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsT - Gv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yx/P8iQFr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/zdplf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbD+Jf///wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/P3mt/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8bMkb/W674/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9br/n/HjhP/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/88cqP/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12w/iX///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0aGvv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/Fik5/1ip8P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/Wary/xkuQP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/Qn+0/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsP4l////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9NlNL/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/xAeKv9Uoub/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1al6/8SIS//AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/0qO - yf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbD+Jf// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/UZze/wcM - Ef8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8KERj/UJrb/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9TnuL/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wcL - D/9Oltb/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12w - /iX///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1Si - 5v8PGyb/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwUG/0uPy/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/TpXU/wQFBv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8NGCL/Up7h/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsP4l////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9YqfH/Fys9/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8+d6j/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0J9sv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/FSc3/1en7v9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbD+Jf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLD7/yE+WP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/Llh9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8yX4f/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/x44T/9csPr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12w/iX///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8vWX//AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/x86Uv9br/n/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgN - Ef9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPr/IkBb/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8rU3X/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsP4l////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/P3mt/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8SIS7/VaTp/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/V6fu/xQlNP8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/PHOj/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbD+Jf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/06V1P8FCQv/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BgkM/02U - 0/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1Ca3P8GCg3/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/BQgK/0uPy/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12w/iX///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Vo+j/ER8s/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/87caH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8/eKr/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/w8cJ/9ToOP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsP4l////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W6/5/x87U/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/JEVi/1yw+/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPv/J0tr/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8cNUv/W6/4/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbD+Jf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f80Y43/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/xIgLf9WpOr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/V6jv/xMk - Mv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/MFyD/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12w/iX///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/SYzH/wQGCP8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8EBQf/SYvG/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0yS - 0P8EBgf/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BAYI/0aGvv9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csP4l////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1Wj6P8RICz/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/y5Yff9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsT - Gv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx - /P8xX4b/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/w8cJ/9ToOP/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W7L+J////wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPv/JERh/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8VKDj/WKjv/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9Zq/P/Fys9/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8hPlj/XLD7/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1uy/if///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/z94 - q/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BAYH/0mMyP9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/TZPR/wQGCP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/O3Gh/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9bsv4n////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9RnN7/DRcg/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8qUXP/XLD7/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH7/y5XfP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CxQc/0+Y2P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W7L+J/// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/W6/5/yE+WP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/Dhok/1ak6v9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1ip8P8PHSj/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/x44T/9br/n/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1uy - /if///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8/eKv/AwQF/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8+d6n/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9BfbL/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMEBP87cqL/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9bsv4n////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/U6Dk/xAdKP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/HDRJ/1qs - 9f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9brvj/HjhP/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8OGSL/Up3g/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/W7L+J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/P8pTm//AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wQF - B/9JjMj/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/TZPR/wQGB/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/Jkhm/1yx - /P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y+yf///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/SIrE/wYKDv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/IkBb/1uv+P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgN - Ef9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLD7/yRFYv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BgkM/0WE - vP9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsvsn////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1qs9f8ZMET/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wQGCP9LkM3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/06X1v8EBwn/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/xYq - O/9Zq/T/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL7J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/PXWm/wMEBf8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/HztT/1uv+P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx+/8iQFr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wME - Bf86bp3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y+yf///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1am7P8TJDL/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDBP9FhLz/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Ii8b/AwME/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8QHiv/VqTq/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvsn////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/OGuY/wME - Bf8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/FCU0/1qs9P9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9br/n/Fig5/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DBAT/NWWP/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL7J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1al - 6/8TIzH/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/80Y43/XLH8/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/N2mW/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/EB4q/1Wj6P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx+yf///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/OnCg/wQGCP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/0+Z2f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/UZze/wkQFv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/BAUH/zdql/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPsn////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1mq8v8ZLkH/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8aMUb/W674/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsT - Gv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W674/x03T/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/xYoOf9YqfD/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7J////wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/RIO6/wcMEP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/zRj - jf9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/zZolP8DBAX/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wYKDf9CfrP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+yf///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+v8mSGf/AwME/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8HCw//SYzH/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0qPy/8JDxT/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8jQl7/XLD6/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPsn////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Up3f/w8cJv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/xEgLf9Vouf/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1Wk6f8UJTX/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8NFyD/UZrc/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7J/// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f88dKX/BQgL/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/ID1W/1qs9f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1qs9f8jQ1//AwME/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8FBwn/Om+e/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw - +yf///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W674/yREYf8DAwT/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wQEBf8vWoD/XLD6/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+v8yX4f/BAYH/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/IT5Y/1uu9/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csPsn////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9ToOP/ESAt/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BgkM/ztxof9csfz/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/P89dqf/BwsP/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/Dxsm/1Ke4P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLD7J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0WD - u/8IDhP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8KERf/RIK5/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Ghr7/CxQb/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/BwsO/0OAtv9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yw+yf///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9csfz/M2GK/wQFB/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/w4ZI/9Lj8v/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgN - Ef9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9MktD/EB0o/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwQE/zBcg/9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csPsn////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1qt9v8jQV3/AwME/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/EyMx/0+Y - 2P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Qmtz/FSc3/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/yA8Vf9arPX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLD7J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/VaTp/xUoOf8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8WKTr/UJna/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9RnN7/GC1A/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/xMjMf9Vo+j/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+yf///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Pl9f/DRgh/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/xUnN/9NldP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Pl9f/Fys9/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wsTG/9NldP/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPsn////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/0eIwf8IDhP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/ER8s/0eIwv9dsfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/P9JjMf/EyIw/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wcMEP9Eg7r/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsfz/P3ir/wUICv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8MFR3/PHOj/1uv+f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1uv+v8+d6n/DRcg/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wUHCv88c6P/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+yf///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx+/82aJP/AwQF/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wYKDv8sVHf/V6jv/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1ip8f8uWH3/BwsP/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMEBP8zYoz/XLD6/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPsn////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/W6/4/y9a - gP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BAUG/xkwRP9MktD/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsT - Gv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/06V1P8bM0j/BAUG/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8sVXj/Wq32/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD7J////wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9arfb/Lld7/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CxMb/zZo - lP9arfX/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/Wq73/zhsmv8MFR3/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8rUnT/Wav0/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+yf///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1qt9v8xXYX/AwUG/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8EBgf/HDRK/02T0f9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/TpbW/x04Tv8EBgf/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMEBv8uWH3/Wqz1/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPsn////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/W6/4/zhtmv8GCg3/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8IDhT/MFuB/1ip8P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Zq/P/Ml+H/wkPFf8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wYJDP82Z5P/W673/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH7J/// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfv/RIK5/wwUHP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMEBP8QHyv/QHqu/1yw+v9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+/9CfrP/EiEu/wMEBP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wsSGv9BfrL/XLD7/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - +yf///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/P9Qmdn/Fys9/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMEBf8aMkb/So/L/1yx/P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLH8/0yS0P8cNEr/AwQF/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/xUoOP9OltT/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsvsn////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH8/1mq8v8rU3X/BQcJ/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMEBf8iQFv/T5fX/1yx - +/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csfv/UJrb/yREYP8DBAX/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/BAYI/ylObv9YqfD/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLL9J////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH7/0OA - tv8PGyb/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMF - Bv8hPlf/R4nC/1uu9/9csfz/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH8/1uu+P9Ii8X/IkFc/wQGCP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/Dhkj/0F8sP9csPv/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1ux/if///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/VaPn/yZIZv8FCAv/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8TIzL/M2KL/1Gc3v9arvf/XLH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgN - Ef9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx - /P9brvf/Up3g/zRkjv8UJjX/AwQE/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8FCAr/JERh/1Sg5P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsP4l////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9csPv/Q4C2/xMjMf8DBAX/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8EBgn/GjBE/zVlj/9PmNj/Wavz/1yx/P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfz/Wav0/1CZ - 2v82Z5L/GzJH/wUHCv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMEBP8RIC3/QX2x/1yw+v9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbD+Jf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Xp+7/MFuC/woSGP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BAUH/xUmNv8sVHf/R4jB/1ak - 6v9Zq/P/XLD7/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csPv/Wavz/1al6v9IisT/LVV5/xUo - OP8EBgj/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wkQFv8uWH3/Vqbs/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/iX///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9OltX/IkFc/wYLDv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8JERf/Fys9/yVFY/8wXYT/PHSl/0mMxv9SneD/VaPn/1en7f9Zq/P/CxMa/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wgMEP9Zq/T/V6fu/1Wj6P9SnuD/SY3I/z11pv8xXYX/JUZk/xgtP/8KERj/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/BgoN/yA9V/9Nk9L/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9bsv4l////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+/9FhLz/GjBE/wUI - Cv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BAUH/woSGv8SIS7/GS9C/wUHCf8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8EBQf/GS9D/xIhL/8LExr/BAYH/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8FBwn/GC1A/0OBuP9csPr/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH+Jf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1qt - 9v8/d6r/Fig5/wQGCP8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wQG - B/8UJjX/PXWm/1qs9f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/iP///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1mq8v89dab/GC0//wYKDf8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BgkM/xcq - O/88cqL/WKnx/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv4j////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1qt9v9Fhb3/JUdl/w0YIf8DBAX/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMEBf8NFx//JERg/0SD - uv9arfb/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLL8I////wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Tn+L/PHOk/x46Uv8NFx//AwQF/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DBAX/DBYe/x44T/87caH/Up3f/1yx - /P9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx+iP///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9csfv/UZvd/z52 - qP8kQ2D/ER4q/wUIC/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/BQgK/xAdKf8jQl3/PXWm/1Ca2/9csPv/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9bsPsj////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH8/1Wk6f9Gh8D/Lll+/xgsP/8OGSP/BQkL/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/BQgL/w4YIv8XLD3/LVd7/0WGvv9Vouf/XLH8/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL+If// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9arfb/Up3f/0mMx/8+d6n/MV6G/yVGY/8aMUX/FSY1/w8c - J/8KEhj/BQcK/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8FBwn/ChEY/w8b - Jv8UJjX/GjFE/yRFYv8xXYX/Pnan/0mLxv9RnN7/Wq31/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/16z - /SH///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD6/1io - 7/9ToOP/TpfW/0qOyv9Egrn/CQ4T/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wYKDf9Egrj/So7K/06X - 1v9Tn+P/WKjv/1yw+v9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsvsh////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XLH+H////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yx+x////8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgN - Ef9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9ds/0d////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XLL8Hf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1yx/Bv///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9esv4b////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XrH+Gf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw+xn///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9fsv0X////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsT - Gv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLD+Ff///wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/161/RX///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9ds/0T////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL6E/// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw - /RH///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgNEf9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dtf0P////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8IDRH/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XrP9D////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/CA0R/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/1yv/Q3///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/CxMa/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wgN - Ef9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9bs/0N////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/wsTGv8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8IDRH/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/X7L9C////wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f8LExr/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/CA0R/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/Qv///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/1uu+P9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+ - s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+ - s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+ - s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+ - s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+ - s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+ - s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/CQ4T/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wYKDf9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+ - s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+ - s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+ - s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+ - s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+ - s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+ - s/9CfrP/Qn6z/0J+s/9CfrP/Qn6z/0J+s/9CfrP/Wqz1/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/ftdsv0L////AV2y/YNdsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Xpuz/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/1Of4/9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvzvXLL8Cf///wFdsv2DXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/V6bs/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/9Tn+P/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH84V2x/An///8BXbL9g12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1em7P8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/U5/j/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/NFdsfwH////AV2y/YNdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Xpuz/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/1Of4/9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsf3DXbH9Bf///wFdsv2DXbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/V6bs/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/9Tn+P/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XLH9tVyx/QX///8BXbL9g12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1em7P8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/U5/j/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yy/KlbsvwD////AV2y - /YNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9Xpuz/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/1Of - 4/9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsvydXbT8A/// - /wFdsv2DXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/V6bs/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wMD - A/9Tn+P/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL8k/// - /wH///8BXbL9g12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1yw - +v9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ2f9Qmdn/UJnZ/1CZ - 2f9Qmdn/W6/5/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /Y3///8B////AV2x/Wtdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsf11////Af///wFssew7XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/arHuQ////wH///8BgK3SFV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/3Wv3x////8B////AXqq1AdosPHvXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/2ew8vF3rdwP////Af///wGZqbYDbK/ro12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9rr+yrmam2Bf///wH///8B////AYWu0Fldsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/ga7VY////wH///8B////Af///wGCrdMJZ7Dx3V2y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/ZrDy4X6t2BH///8B////Af///wH///8B////AWqv7mVdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/2iv72////8B////Af///wH///8B////Af///wFss/ALX7H60V2y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/16x+9VpsvIR////Af///wH///8B////Af///wH///8B////AWGx - 91ddsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9hsfhh////Af///wH///8B////Af///wH///8B////Af// - /wFksPILXrL7xV2y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9esfvLZK/0D////wH///8B////Af///wH///8B////Af// - /wH///8B////AWGx+Etdsfz7XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsfz7YLH4Vf///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wFmsPQHX7H6q12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/X7H6tWev8Qv///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AWaw8yldsfzrXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH872Wx8zP///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wGEqdADYrH2aV2y/P1dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/WOx9nmHr88D////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AWSx8wtfsfqtXbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1+x+rllsfQP////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BbLDsIV+x+tVdsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/1+x+t9tsOwr////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFisfZBXbH8612y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/PFjsfZN////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bi67FA2Sw - 9FddsfzxXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/PVmsfNniqzIA////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wGBr9kFZrDyZ12x/PNdsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/16x+/dosPF5ga/ZB////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AXuv3gVnsfFrXbH8812y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x+/VosfB7fK/cCf///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8Bga3WBWaw8l1dsvzvXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/PNosPBtga/XB////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wGMsM0DZLH0S2Cx+d9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/2Cx+edmsPRVjKzJA////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFvr+gvYLH4vV2y/P9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL8/WCx+b9vr+gz////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AW2w7RFmsfOHXbH89V2y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbH872Sx9XtpsO4R////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bhq7RBWmw - 7j9hsfjFXbH8/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsfz7XrL7rWSw9C2HrdED////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BcLDqD2aw8mlgsfjhXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12x/f9esfzFYLH6R2Ww9An///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8Bca/oFWaw8nVgsfnhXbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbH9/16x+8lgsflTYrD4C////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BbLDpEWiw8GFjsfW/XbH8/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/YbH4t2Sx9UtjsPcL////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bdq/fB3av4SNksfWFY7H1xV2y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/2Ww8+dmsPKRdK/kKXOv5Af///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AXSw - 5AV5rt8Za6/sXWCx+JNksfW3XrL7112x/fFdsf3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y - /f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv3/XbL9/12y/f9dsv37XbL8712y/d9dsvzPXrH8vWKx - 96tisfaXb7Doh4at0D19rdgL////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BeK/fA2Gy+QVdsf0FXq/4B2Cv8Aditv0JXLH9CV2x/gtcsvkNXrP7D1yw - +hFdsv0TXbP+FVuy+xddsv4ZXLH8G1yy/B1dsv4fXLL9IVuw+yNdsfslXLH7JVyw+ydcsv4pXbL+KV2y - /StdsvwtXbH+LVuw/C9csfwvXbP9MV2y/DFdsfwzXbH9M12x/DVcsvw1XLP8NVyz/Ddcsvw3XbP9N12z - /jddsf05XLH9OVyw/TldsP05XLH9O1yx/Ttdsv07XbL9O1yx/Ttcsfw7XLH9O1yy/T1csv09XLL9PVyy - /T1csv09XLL+PVyy/j1csv49XLL+PVyy/j1csv49XLL+PVyy/j1csv49XLL+PVyy/j1csv49XLL9PVyy - /T1csv09XLL9PVyy/T1csf09XLH8O1yx/Dtcsfw7XLH9O12y/Ttdsv07XbH9O1yx/Ttcsf07XLH9O1yw - /DtdsP05XbD9OVyw/Tlcsf05XLH9OV2x/Tldsf05XbP+N12z/jddsvw3XLL8N1yy/Ddcsvw3XbP9N12z - /jVcs/01XLL8NVyy/DVdsvw1XbH8NV2x/DNdsfwzXbH+M12x/jNdsfwzXbH8M1yx/DNcsfwzXbL8M12y - /DNds/4xXbP+MV2y/DFdsvwxXLH8MVyx/C9csfwvW7D8L1yw/S9dsf4vXbL+LV2y/i1csvwtXbL8LV2x - /C1csfwtXLD8K16y/Stes/4rXbL+K12y/ildsf4pXLH+KV2z/SlesvspXLH7J12w+ydbsvsnXLL7J12x - +yVcsvslXLL7JV6x+yVcsPsjXLH7I1uw+yNcsfshW7H+IV2x/iFcsv4fXrL+H1yz/R9csfodWrD7HV2y - /h1csvobXbH9G1yx/RlbsfsZXrP+GV2y/hddsfsXXrP+FVyz/hVdr/4TXrH+E121/hFbsP4RXbP+D1+2 - /g9dsf4NXrX+DVuv/gtes/0LXbP9CV6y/Qlhtv0HWrX9B2Gx/Qddsf0FXbL9BV2y/QVdsv0FXbL8A2Gx - +QN4ruAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - - - \ No newline at end of file diff --git a/windows/WebUIWrapper/Program.cs b/windows/WebUIWrapper/Program.cs deleted file mode 100644 index bfcdb8312..000000000 --- a/windows/WebUIWrapper/Program.cs +++ /dev/null @@ -1,92 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using System.Windows.Forms; -using System.Runtime.InteropServices; -using System.ComponentModel; - -namespace WebUIWrapper -{ - [ComImport, GuidAttribute("79EAC9EE-BAF9-11CE-8C82-00AA004BA90B"), - InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] - public interface IInternetSecurityManager - { - [return: MarshalAs(UnmanagedType.I4)] - [PreserveSig] - int SetSecuritySite([In] IntPtr pSite); - - [return: MarshalAs(UnmanagedType.I4)] - [PreserveSig] - int GetSecuritySite([Out] IntPtr pSite); - - [return: MarshalAs(UnmanagedType.I4)] - [PreserveSig] - int MapUrlToZone([In, MarshalAs(UnmanagedType.LPWStr)] string pwszUrl, out UInt32 pdwZone, UInt32 dwFlags); - - [return: MarshalAs(UnmanagedType.I4)] - [PreserveSig] - int GetSecurityId([MarshalAs(UnmanagedType.LPWStr)] string pwszUrl, [MarshalAs(UnmanagedType.LPArray)] byte[] pbSecurityId, ref UInt32 pcbSecurityId, uint dwReserved); - - [return: MarshalAs(UnmanagedType.I4)] - [PreserveSig] - int ProcessUrlAction([In, MarshalAs(UnmanagedType.LPWStr)] string pwszUrl, UInt32 dwAction, out byte pPolicy, UInt32 cbPolicy, byte pContext, UInt32 cbContext, UInt32 dwFlags, UInt32 dwReserved); - - [return: MarshalAs(UnmanagedType.I4)] - [PreserveSig] - int QueryCustomPolicy([In, MarshalAs(UnmanagedType.LPWStr)] string pwszUrl, ref Guid guidKey, ref byte ppPolicy, ref UInt32 pcbPolicy, ref byte pContext, UInt32 cbContext, UInt32 dwReserved); - - [return: MarshalAs(UnmanagedType.I4)] - [PreserveSig] - int SetZoneMapping(UInt32 dwZone, [In, MarshalAs(UnmanagedType.LPWStr)] string lpszPattern, UInt32 dwFlags); - - [return: MarshalAs(UnmanagedType.I4)] - [PreserveSig] - int GetZoneMappings(UInt32 dwZone, out UCOMIEnumString ppenumString, UInt32 dwFlags); - } - - static class Program - { - // constants from urlmon.h - public const UInt32 URLZONE_LOCAL_MACHINE = 0; - public const UInt32 URLZONE_INTRANET = URLZONE_LOCAL_MACHINE + 1; - public const UInt32 URLZONE_TRUSTED = URLZONE_INTRANET + 1; - public const UInt32 URLZONE_INTERNET = URLZONE_TRUSTED + 1; - public const UInt32 URLZONE_UNTRUSTED = URLZONE_INTERNET + 1; - public const UInt32 URLZONE_ESC_FLAG = 0x100; - public const UInt32 SZM_CREATE = 0; - public const UInt32 SZM_DELETE = 0x1; - - public static Guid CLSID_InternetSecurityManager = new Guid("7b8a2d94-0ac9-11d1-896c-00c04fb6bfc4"); - public static Guid IID_IInternetSecurityManager = new Guid("79eac9ee-baf9-11ce-8c82-00aa004ba90b"); - - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - try - { - Type t = Type.GetTypeFromCLSID(CLSID_InternetSecurityManager); - object securityManager = Activator.CreateInstance(t); - if (securityManager != null) - { - IInternetSecurityManager ism = (IInternetSecurityManager)securityManager; - ism.SetZoneMapping(URLZONE_TRUSTED, "http://127.0.0.1", SZM_CREATE); - ism.SetZoneMapping(URLZONE_INTRANET, "http://127.0.0.1", SZM_CREATE); - ism.SetZoneMapping(URLZONE_ESC_FLAG | URLZONE_TRUSTED, "http://127.0.0.1", SZM_CREATE); - ism.SetZoneMapping(URLZONE_ESC_FLAG | URLZONE_INTRANET, "http://127.0.0.1", SZM_CREATE); - } - } - catch - { - // Okay to continue if adding URL to trusted zone doesn't work... - } - - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new Form1()); - } - } -} diff --git a/windows/WebUIWrapper/Properties/AssemblyInfo.cs b/windows/WebUIWrapper/Properties/AssemblyInfo.cs deleted file mode 100644 index 5573fc093..000000000 --- a/windows/WebUIWrapper/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ZeroTier One")] -[assembly: AssemblyDescription("UI Wrapper")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("ZeroTier, Inc.")] -[assembly: AssemblyProduct("ZeroTier One")] -[assembly: AssemblyCopyright("Copyright ©2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("98eb6dae-d218-4a8c-9935-a0ccdca3e936")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/windows/WebUIWrapper/Properties/Resources.Designer.cs b/windows/WebUIWrapper/Properties/Resources.Designer.cs deleted file mode 100644 index 463c7ea32..000000000 --- a/windows/WebUIWrapper/Properties/Resources.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.34209 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace WebUIWrapper.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WebUIWrapper.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } -} diff --git a/windows/WebUIWrapper/Properties/Resources.resx b/windows/WebUIWrapper/Properties/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/windows/WebUIWrapper/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/windows/WebUIWrapper/Properties/Settings.Designer.cs b/windows/WebUIWrapper/Properties/Settings.Designer.cs deleted file mode 100644 index 8115e0155..000000000 --- a/windows/WebUIWrapper/Properties/Settings.Designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.34209 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace WebUIWrapper.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - } -} diff --git a/windows/WebUIWrapper/Properties/Settings.settings b/windows/WebUIWrapper/Properties/Settings.settings deleted file mode 100644 index 39645652a..000000000 --- a/windows/WebUIWrapper/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/windows/WebUIWrapper/Properties/app.manifest b/windows/WebUIWrapper/Properties/app.manifest deleted file mode 100644 index 4e1881fb6..000000000 --- a/windows/WebUIWrapper/Properties/app.manifest +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/windows/WebUIWrapper/WebUIWrapper.csproj b/windows/WebUIWrapper/WebUIWrapper.csproj deleted file mode 100644 index 44fef2632..000000000 --- a/windows/WebUIWrapper/WebUIWrapper.csproj +++ /dev/null @@ -1,144 +0,0 @@ - - - - - Debug - AnyCPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241} - WinExe - Properties - WebUIWrapper - ZeroTier One - v4.5 - 512 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - x86 - pdbonly - true - bin\Release\ - - - prompt - 4 - - - WebUIWrapper.Program - - - false - - - LocalIntranet - - - false - - - Properties\app.manifest - - - ZeroTierIcon.ico - - - - - - - - - - - - - - - - Form - - - Form1.cs - - - - - Form1.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - False - Microsoft .NET Framework 4.5 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - - - - - - \ No newline at end of file diff --git a/windows/WebUIWrapper/ZeroTierIcon.ico b/windows/WebUIWrapper/ZeroTierIcon.ico deleted file mode 100644 index 2d190c474d350ed516428a9437a9f8b7e27d084c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370070 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 bFb9|e%mL;AbAUO(9AFMG2bcq<=fM953V?CP diff --git a/windows/ZeroTierOne.sln b/windows/ZeroTierOne.sln index a2c65bd97..68596187a 100644 --- a/windows/ZeroTierOne.sln +++ b/windows/ZeroTierOne.sln @@ -5,8 +5,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZeroTierOne", "ZeroTierOne\ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TapDriver6", "TapDriver6\TapDriver6.vcxproj", "{43BA7584-D4DB-4F7C-90FC-E2B18A68A213}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebUIWrapper", "WebUIWrapper\WebUIWrapper.csproj", "{04832129-0F0C-438B-ACDF-8BB7F99AE241}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI", "WinUI\WinUI.csproj", "{4CCA6B98-5E64-45BF-AC34-19B3E2570DB1}" EndProject Global @@ -339,83 +337,6 @@ Global {43BA7584-D4DB-4F7C-90FC-E2B18A68A213}.Win8 Release|x86.ActiveCfg = Win8 Release|Win32 {43BA7584-D4DB-4F7C-90FC-E2B18A68A213}.Win8 Release|x86.Build.0 = Win8 Release|Win32 {43BA7584-D4DB-4F7C-90FC-E2B18A68A213}.Win8 Release|x86.Deploy.0 = Win8 Release|Win32 - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.CD_ROM|Any CPU.Build.0 = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.CD_ROM|Mixed Platforms.Build.0 = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.CD_ROM|Win32.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.CD_ROM|x64.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.CD_ROM|x86.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Debug|Any CPU.Build.0 = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Debug|Win32.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Debug|x64.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Debug|x86.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.DVD-5|Any CPU.Build.0 = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.DVD-5|Win32.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.DVD-5|x64.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.DVD-5|x86.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Release|Any CPU.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Release|Any CPU.Build.0 = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Release|Win32.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Release|x64.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Release|x86.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.SingleImage|Any CPU.Build.0 = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.SingleImage|Win32.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.SingleImage|x64.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.SingleImage|x86.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Debug|Any CPU.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Debug|Any CPU.Build.0 = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Debug|Win32.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Debug|x64.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Debug|x86.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Release|Any CPU.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Release|Any CPU.Build.0 = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Release|Mixed Platforms.Build.0 = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Release|Win32.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Release|x64.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Vista Release|x86.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Debug|Any CPU.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Debug|Any CPU.Build.0 = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Debug|Win32.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Debug|x64.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Debug|x86.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Release|Any CPU.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Release|Any CPU.Build.0 = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Release|Mixed Platforms.Build.0 = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Release|Win32.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Release|x64.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win7 Release|x86.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Debug|Any CPU.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Debug|Any CPU.Build.0 = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Debug|Win32.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Debug|x64.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Debug|x86.ActiveCfg = Debug|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Release|Any CPU.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Release|Any CPU.Build.0 = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Release|Mixed Platforms.Build.0 = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Release|Win32.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Release|x64.ActiveCfg = Release|Any CPU - {04832129-0F0C-438B-ACDF-8BB7F99AE241}.Win8 Release|x86.ActiveCfg = Release|Any CPU {4CCA6B98-5E64-45BF-AC34-19B3E2570DB1}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU {4CCA6B98-5E64-45BF-AC34-19B3E2570DB1}.CD_ROM|Any CPU.Build.0 = Release|Any CPU {4CCA6B98-5E64-45BF-AC34-19B3E2570DB1}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU From e4d1aba3f82c1265579b0b9dfba22903e34ae7d1 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Nov 2015 16:19:24 -0800 Subject: [PATCH 296/314] Use new OSX tap version, and update OSX install scripts. --- .../com.zerotier.tap.kext/Contents/MacOS/tap | Bin 50496 -> 0 bytes .../Contents/Info.plist | 2 +- .../tap-mac/tap.kext.old/Contents/MacOS/tap | Bin 0 -> 81240 bytes .../Contents/_CodeSignature/CodeDirectory | Bin .../Contents/_CodeSignature/CodeRequirements | Bin .../Contents/_CodeSignature/CodeResources | 0 .../Contents/_CodeSignature/CodeSignature | Bin ext/bin/tap-mac/tap.kext/Contents/Info.plist | 2 +- ext/bin/tap-mac/tap.kext/Contents/MacOS/tap | Bin 81240 -> 50496 bytes ext/installfiles/mac/launch.sh | 10 +--------- ext/installfiles/mac/postinst.sh | 6 ++++-- 11 files changed, 7 insertions(+), 13 deletions(-) delete mode 100755 ext/bin/tap-mac/com.zerotier.tap.kext/Contents/MacOS/tap rename ext/bin/tap-mac/{com.zerotier.tap.kext => tap.kext.old}/Contents/Info.plist (97%) create mode 100755 ext/bin/tap-mac/tap.kext.old/Contents/MacOS/tap rename ext/bin/tap-mac/{tap.kext => tap.kext.old}/Contents/_CodeSignature/CodeDirectory (100%) rename ext/bin/tap-mac/{tap.kext => tap.kext.old}/Contents/_CodeSignature/CodeRequirements (100%) rename ext/bin/tap-mac/{com.zerotier.tap.kext => tap.kext.old}/Contents/_CodeSignature/CodeResources (100%) rename ext/bin/tap-mac/{tap.kext => tap.kext.old}/Contents/_CodeSignature/CodeSignature (100%) diff --git a/ext/bin/tap-mac/com.zerotier.tap.kext/Contents/MacOS/tap b/ext/bin/tap-mac/com.zerotier.tap.kext/Contents/MacOS/tap deleted file mode 100755 index 48bf9625551ea8af1d97fe3a0868e499ab55a48c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50496 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 diff --git a/ext/bin/tap-mac/com.zerotier.tap.kext/Contents/Info.plist b/ext/bin/tap-mac/tap.kext.old/Contents/Info.plist similarity index 97% rename from ext/bin/tap-mac/com.zerotier.tap.kext/Contents/Info.plist rename to ext/bin/tap-mac/tap.kext.old/Contents/Info.plist index c20eefa58..45c2839ad 100644 --- a/ext/bin/tap-mac/com.zerotier.tap.kext/Contents/Info.plist +++ b/ext/bin/tap-mac/tap.kext.old/Contents/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType KEXT CFBundleShortVersionString - 20150118 + 20131028 CFBundleSignature ???? CFBundleVersion diff --git a/ext/bin/tap-mac/tap.kext.old/Contents/MacOS/tap b/ext/bin/tap-mac/tap.kext.old/Contents/MacOS/tap new file mode 100755 index 0000000000000000000000000000000000000000..6a9021a74a74119b23f03eddab261cc59fdf3c00 GIT binary patch literal 81240 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 z)RXyI!RCFBundlePackageType KEXT CFBundleShortVersionString - 20131028 + 20150118 CFBundleSignature ???? CFBundleVersion diff --git a/ext/bin/tap-mac/tap.kext/Contents/MacOS/tap b/ext/bin/tap-mac/tap.kext/Contents/MacOS/tap index 6a9021a74a74119b23f03eddab261cc59fdf3c00..48bf9625551ea8af1d97fe3a0868e499ab55a48c 100755 GIT binary patch literal 50496 zcmeIb3tW`N_dmWMAR@Ztz0_RqnwJ(t#XBggtAgSMwJaBeMNn=6t7xIDg1N3FmX>9j zm;7jENok5&3TlF8ispsPip*>&Q#4I1i~sw~%=7H-1Dc=j@ALnD{=fgreZAQ8oS8E- zXU?2CbLPxE%gH}}{kyhG3zM6rYHianz}D z$DganHW<>3>1lRaWqo1ZJa7AG4heU&lM|BZh#Cx0sc9*3iPJ=)vc9UxJmV&H3?B*S zn4K>Pr+zMWp?(GjjSrGi0VBk-kAMoC`bkYlyn?T!#8i7n?^j=#;EU>)9#KuTkHHWf znHFhJR@N65#q;`tclr?i;QFGH5)zUUId%2^=0@`zA5sMIk@`lcXhzC{yr!n6%2@UK z*2VM8W)3ut{3+|BanR$>UKQ?BD-!0FRX{LKVhi@z!O`=?L90+s4C5utrj)#mu4cC4G;^4hW4zuAG?JC}$2 zlse)mr1{`a`n1FY;T3OVjM_`7kKiK-Jd(g82|SX(BMCf`z#|F#-!Fl1z2!&!!mC=n zC8I)bG1>Iyj0)&3l;cl@60Ed3i*^gB%*IfQ?qZSdUPB~Vb@%iO4{M)46r*mHMI}_#__2gj!-6Lr zC>(hzMOG;lQ)iKn2A)bePg@ukZnK=zTTy|;8L`1Qd#Ls;rmK3V<_EJ{?ILk#zKv7! zdBChF{cvr^#Kd%0^gmD@4`RR)N-YT)&_>Bo1|`TUK^kPxk7emfxD4_chH)V-tQn=K zvKW$pkN`pp^p?U9tF9oZs)WX@X2}F%WY|Z^Uzn1=5DS`>c{H%5?Sd*sRx#3KwE_!F zcM2Gxokws~f~vtB@d*%`&-e_@58}F2GoNA4A5yovvxM;~Z4wizgI)KoEU`ru!_Yaa&w+fc|(MbHrA{wY*#9?|p$r-_* z(e$FRB}N{s!y1x+qP_p&e5MJdw>r${nq|&fl;rJ${#8QCl_-lr*0L%xD%o_0?WnL1 zfDg+;3Oa`_EiVJkjm5&lKF=Q#^WP_*%mb^`Vyb|RK$cVgobxT=us)$>paWN=uu6T^ z$n+M|Elg^gCG@hLx;nkReWGX0!$b-BlJZw#Mpf#IhIxWbmA;6!v#O$D)HxN%J(c>% z<%1%&eN|Oeyh6D?*k5}-1$C|uMSAmSX zqCkl)2uG4HRX|oms@L|a%vX)_WAwB>SWOk?c|Ms`zr|Fh&aQ)}Bf2V8IR!R+3oJ)a zD>w5Xg;JBAtJK+z@D1Kj9>Zh_!q~f%(;gdXWqNBm6x}41A|jNu3`L@@%&PY>7gD6a zqW3{NE=zP(?OfEm3LqnNCs*`GBlky^4|uCb4HW5^QkL`ej4xW2P_)5i=6jmf2x7{` zfpfGQ=3_nxnN(TAe2`E2g#pl2@^+Q$m5)BhJu(EXxikHi2Fp@gZ>iL~2M`}@fi1F4 zMic|}ROsFHEValsTuzxJQhLiNKIl27iS6URpfzl017ks?Iue+SznLx=<8;D{GBXL_ zqj%4uZveBwy;Ec_h_dQ~x-Z zq)bJ&)x>Fzdlm_U^vhgCy{du`bKH~ciPU+X_^dsV6YYGQwkO*85ay(sJ(1@t4Qo~7StEFFnanx+iuEYQLQ}0G z#-h7MVo~olU9*nHEXXLc+_9XnWuxc5M}zY7Ap4MEgh4ISLz}I7 zsSKO0ZlF-ir$8~E!Ymp0ET&4U>0aTLW_3-KU|pEBKxcbTCeS>ewM(5-XR!%KYHCeS z=d$2B%SrgKR`(}@CI(Fi3J)4TPH(8FmiU zrL%M;M_Epx^#B2s6O+b+qo zBkLutKB9}dTe2jP>OP58Mk~jdNw6?gW3eviY)kYhnKxX1FLY67yMv&d0?CxFptp|I z=*@))Zi6$7@rkO_<@?#dRimVuo3R=shS~B{6vX;v(FwoB*}f$E{=PSeRW8I}9Tp1_ zK*{(zpwFSD8@P3TtVOqzN!vjV*_S1*X`e?1!yJGV2QGoul|o-nvI@W# z(&ivdw~i(3rNsftoYR<&WYFFgkgN-`6bL!8e0>h~9<;z)2SOrzIXPj`y~S!!?+QO< z{==23(XCQvF^P5smj8I1Cew0IltrrpsVBipbf>^juHJGdNWH59wlEjl1jfI+CozuR zly_rdmVAj4K_EVMQF%dmwC z|8OD3;{No3fr~3hIE!_6$h&6FxHYu$cQZK?Epf(DyX_ z$HI`D&{FlT4Ac`^KpRx17Z%+abH*9aKs0oOBh_;p^;pBtNL4+HEJ&!BJ2B+Ym7=rI z{P41B)jZ))%~n(cBAYc-s>)sqGBQe8X>^}NTa$krsLw&@0W!m$)82oGk57kOoo2YW(Oe&nhZs{Go%6Klc*4Ff%!gZOdvMc@Nf8#9ttckWg-ie<6Ej6%2H};01kNkr3QWZxBIh#JE)>R)RmmdJl1MBNgG_UgN-%b2Vto-+w?(2-L; z`V~sJ7fDgA!a|qEg3dTC|@Hih1QI>U|xMu&Z7H7rm~vwOtyzF zd5-giOop9KOdQ_JCCIYsKB=WU0~;gLuwg)(Y~K4GU3^SG0CcLw;j7gzlOoDPw6b8a zZuJt~>Ma`W18BcKSEXVXNC3>q!J|ZR8qCE@apQT7$BWYT7JNxPK)C-u~ zwi*fMj8E_l*TsTw`!ESJWX@Pext8oSG_1~k8qZQsf?=kW-B1kKM97jeZ{qd&9;HAB znLFwcR=#Z7h;b$*L9)>-=Zh~EWHz43u@X%&?Z-}7vf~}ffrtk4Q@+K!BS;0xg+kLk zqnP&RELS!Ga7^K(TEll*vY(S`^gRvQ+z@N+P-|cWRc*U$}P0Y0y79x4)E1*|DHLO}~{t`^^(elTYvYbNF4&!Onohj1MiVw4x zZ)?nYm=F6NR^7g{&Y|W?^L+A1Rq7Q54x6GH{a-3l!SsO~EphBeCQxFTiM{+S>JA(| zrzHUXj>5evkd16L_o^BA0c$p<^U#4n;1FE-U{DoJqY>~le` zqY0}czx;1NHXc$3)LEO61co71+84|I0BJH3Wj~vSocXWZyF6mczRA`)c(iN;Sv)oORrWlrb_N{ktH>CzA)kvn+?)QWLrx{{~P8ijPmZ}~`=1~%uMm{3Vf z2s6T2WQroCkha$WnV3!7ktUUJI*&A8Eh85A_J(FW=4l1aq%0NP`p5YmLdc4&qvd0= za@?M&mo1l=vohn?tr>0Lv&Vx%y^My2D?ZQjW_e`a)LAA)o)60-*9zwy7}xSqSgJ*x zEGUpo5jk~M7bH8@>Cegqv%Gy&u8FM0+joJIqz zI!!w#8f{H9>@@y>8zbzwAMSwAa51FiG#S*pbnA)ZKE>*64Jd(sDB;8=@IrxStp$F7 zygbCrU}ms|A~(6g zOG3{FFAiNV;D-Xj>hl1q6x0blkM%DAqr>AmH$to{3A1GT<2$J8wA8ba7&_^B5VtHe zf|;1UnP5*P+a8+W)tfZMEos0zK_ zilNBYK%?~5Psz*ZlFiCQVV%w)X<03qAQU5E$<`vNyfZI4|9(Yf>aL)c`ZbLTG0n`T z=(67YDFGxZdWQgpeWcRi7UU3}b*7JGD5;2r#lOqN+DIwF#N3O)Ghgh>@T8po3$F%3 zQ6XFVnr97%c+T5nUnR`hr??lK@RxpN=BNye!$^k16<9z4D{JU2%Mv#>XczIVvMmFh zFP-Ee0^uCb^vNfVs6i|uHJ$&mEZYCj`Pw9+wT_-d77Bb+jqyRt6$tveNO_?cm^qW+ zFlpr|EY5^jB$k*Y?~9J)ctu1!6O|QJO`vU+2I6qu|48SxES`oSAUj7L2yL}xkjZ7| z9J&1CaNb&3q`L)1;S}GZtIz73w#0Uh`yQ-H`l!%b`XaYt%7>>wu>mY=x5`T}h)3LC z>rX*6R;{QnjJhh_PZ7pAr4ubkddu8Eg#4jo2tK+$$4X*M_(3fQifwVEM|{PC-{1*4 zGE75YCJrD6Sv`M3Y?A2>b5Mr{nCH>_gNxn~#L{9~zz!+H%Y@p}p^{j-%1?uRtL`fN zxx(*jS&FgP+-^!E6belU!U)V^+&Ndb;r`VvM0FUSV#J@d*6^$FtqQNyl7i51YN)G- zhV|23Rp(HAfzx^lO^6D`;F4=SQLDGO9n(iq0ChCD=wC<$)mc;V%~Qdjb&OVTbvvlH z`snHGZDv4><&M=<5))*>*q-tETLNIYy{KZjQo)lj5EPopnJB~t#f`PBF zsgw+Ra98v>r`{|E+Yy(ut12JMm8JxaDA&xaen=_OT?PR(3(>>Sl72y*)C*^DoNZJ}aAZhYbb^TZ z-7AnfWLdqj9rcBtR!s z1iNMBQ^77vw108#KLal`2Ih2bL$VN~fa>*J*qx_a)A>D&0jK~Lh9Y&6GxL3CPJ#ou zKw)KIE|-wQ0U_w4#st7*ve{o0#42|l>qsBme+V3`R#}eW#vzmo<6Fcu1QQy&Y)@># zJK+?VlGy&+QBm5Va6jEeb@mqOm?Kv&)WlVW4P#rRD}~yq7VC;^?Gcq;qAQZNP1V;o zbi@~16UiCjicI$y%;X;+1NL2=)smjrc{(g#SSN1zEH|N3mUFg3=rXFAPSsekW=ZOQ zQocf=ZYAy4H6Sd+(WKm-(`0jQ7w4v;T^qBw%65nIc5hO3bTLNJE-jb$SufdoP4^{+ zva-@GJZ2S~*MALw5CL1qV_+9%M5T?;DI0tZe#hNr>R}@`tFAIQBmRbX6B#B+k%&|@UWZxzEL3A z9_;@u;T4w9tB8J-LBFVaq?cGu+DzDevum!U#2Vdd9BwWkMWc{TI!qgGagav#8`epk zLko~O<08IQ>ZSC46zo27Y2CtVWbS{En z?jkjW9GJ<2%uFH_`~}k3q7z=yZ?LSYWgxVxDpdbIs%p=XRP~iil!RA_DSi3AstVnA zRMk3Od^nk^ivEy(I>>M6Jtn`T&JQEM#~E?G!HoF-Tz*Ti3%sxVav;e6sQecH`|>-= zc(}-?x{#k%$WQ143|J|t*55dJ!tSRr-9Cn)IZ03`C;Eb#sF#)EBrxpVPjb>jS`~s}TX7$w)J97uN+E0o2DD^rYC6vf6ZVw&fyFNi#^lDODU41iS5zFC zw}vUjO@|^~F>!(%1P+DAchc4l2A6JUBb7Y0oOqC!GmhgMifSPGD4y$VQ+3K5Sy6K- zhus~>D6=BKO)AMR)IdA)!DpV{au7YtV;9rmF46HdB#o83$Top-Q;Z%92U+Rw3j2y` zDx?K&0UeL!)O)W3@rpUv{}d{7mi^^&SYIala85i=5X%c3`d`6TxJDp!T;ZJJd95Fh^gs8!fEb2Yj-mvA1JHiDYCQ?^BEQ8;duBCDP)pZl$=tSbhJ_c2za_ zBR(WATH>YiR>gU0wftrndmp>M;G;JWI7@?vk2-rezV$f+qFeDpM;oQ;E$;as0NwjC zT??d3+wEWwJ8ZSfX<*8!pyCoI8pQ;2);IHjXQVo_un~t|4+ud5Z@0+3zsN*M>3rDU z9|(^}Rcte7oVS|4!DdQ-VTj0-RU;Z^W>xy zhLU=h`=s1EE;vVh4MVGEG;*ubNT6kQEwv_lBJ*$S0u7L=43^KY$RGY55>@)chh zv0bP>Yxh+w`%Iwrc1sZvs6-!OU27OW^0z&xX*9$~;(_{Y@4xeXUQdUzO8t`JVKhJf zXXP~z1r&{p0ODyvMSx>3LJNrR?|WzrAY)hv5<@ue3M?G@O*;-peG%`o@%m^%pynxdA%Jna>)4(J5nnrh6ewxc9Xml1fWAI~?WAmOI6Kbd;BU zem%zgI`=oR`BKcUB4XXvn)0z3EDCG}R8Lf9w79AMs9kCOO1Tu>7*v zNe`+!hxAitvxYS@AEW`Wgf+87SNWpTZdH0*IVk&SuYwPhq zdd%N{;6Ii6?Z`iHyvxD)=g%!{^N5HkkR$(Ll3>j9nTXXCqv5Zd;8G|XP$&B;(_4p; z*(VyOd^sM*_P>Z%({M61*@i$c zjW@#KLMT%FKr7ErX+9wq!9ypAlcJ8XotPn`2@1=}Z=3;y!#2?tw3Jl|110(Ia((h8 zS_gi#|Hu#7@0mCNm+iNWrZOrON>rPj3$Q8~J4IEEU5T9Rw``=V&1W_~WG_1~+JCT@ zc75e)?dX5_u>Spf_1W#8{XF6SJ%0pq-#lPMJ7^+4>TFVU-`^p`N*g8UE$)4hSLEIa z-^}##KC<=2JfMM8E{k^Zdh39CNMHqv+<$LN70@A)qkMTh1?%Py$mUJ38ihVEdC`3e zFkmInc%L(!I8Kq)H(F2Up=~zeOmT~BtudKxOYs7T{i4J@IEbq9kMWhS#}_sA;QvE22TA)2{GFS!>=P zkxuXW5xLd@vbr*S9$7-+)sjrKDH6)0m@Td{5T%7rkXv`$Q?Hi zSSd=Xv&Nzfnp;fGfvpl-by);*5~CwWWim%)a?}?b4Ujm>$0Z(HErfJLw>VqO=u7rN z)^}T7YJd&xedYtyoZLo?7g6T8kHBi?yxxh@naH=-kN3Yw=-ly?7cTf~d~tN64G}9S zX-f6;H&QOL3!?p?;;O1WfoOxyvE2{ZYnME-qOMQ}rZLPO6=l+mSo%Dmf3}*}TWyS` zB*t=MFWZ)#!<$Wo@P3Jr7)$6iycCAm9laEW!>x&)A(ml2MZ=o8qM@Q;EfDBZ4YyPx ze5j$8Va=plVWKjq;}yIJO8N_75D|GUbPgY^-mSw;P2Pi?daOyD?BI@VC!F2VD`?nd zSDm8iLc0k%J1TeM500-{)}(*(c#}MF1(l1G#8efg;o^Zy7A(fke3f?7`>88fw@Vo{ z`g=rI+USVxs|H7O-+CO;eFp}`UqO7SDz0JTDW)H8+ z{a3`Iak8TOW_VO(uzG*+fU+QS+25emEiMdR95SFxnORI?l`75ntW=& zLf01H5SsGnqNmsbQ)`Gohqx5d5fi8=ydl4wz)S!o?yo@D3IajV^jJo=zdn+wNxHX( z>v}wq_>mJ$Tdd(*EV_4icLgc-#Cajspje1v6~-P{hEN0XY~O!D2q8q;>x4AFRerjTs)(XU_X*YRTd=qgmqerSxH#tp7;tqCIk$}7oG;Bc^@>8C zyCj=vI+PfA|m#rI;vi*=q6^E5HN{ zrSOM;cp$x2q7!!vfR^H(fhRapFSOtrmkQW%VCnB!$H=VVT=97%qi4|X^jNx@am>22 zM2jreZ@jZF|5O3Hm`jEMA!=_jH97TM0jNp}&6EaNSFnN(_kNhz*q7sNhUp|{)*{WS z$1ty}#s(-8v@F44@Uu>$X|dZa(lPFE!H`r&owFU^`)NE8ZaB!)6BQqzAs4;4YRxF!N)WSuw3Nz3@jGeU)M zcj<+!?kEYDSSXsUoUWsBjS?G5X?=^pfGO{DRCEi7>skOGI^Sa2$D%}2;?2^rh1A1(ff^wJNC+{WX6?&xIX+X$1KqOb9sPhDdQS%wZ4 z%WucfOS*%7G@!ty9gnnLipOTPBZpWevg-cba(zrnKq5|OW^h6?eH0!EZyqvE@Re7Z&@780yB1$a-0NX4aP1iPt& zc-@EOO*4*OQVGwu4sJ#v`@x=A!NIr&nR>i^i&$cOb5%W&=;I2ln9-{*1Q4K26|r|T;9rZFZs`7)+bg}B8aFek=*L=baD zM{OmzyHy9UI40OK+*=3%?v^}d<@k4?gFU9-4?@5Zx1i8A8V@gqiKDwA3uA#}_LIdc z)W;oVo=Yuy8GsHjj@crRjae%HM3q>9z_+L3cYV+iiwUn^9d;a%Gh*2|Q@)gs2&#h~ z&@W~MD(_1=^2?dMh%z)^%FKhv#u3}Hc`P%h`_Po(zvLxdx0!-NE3sREXqfruuNhO! zJJ2)6>WR(D1tA7Fyj(e7XH1a*V6g4VIgYB|t-F9XYBAt&4%NGto+AaNE6Bc%WrSkV z?LDU(*GoYJKFFe%XVMpm7w1gWFLgEzEn8_WGW``wY!}&cppuD&mFP{i^u(7qpejC+ zRmgmy7;E?iN{g|qC?p=qq64+;ETkzT^hB0CMc9=7S~CZuUZkr)8<2R04K5Uy(jX*Y zbHt=%lY4xNkBFRcg!^XFl&la6P*J`UyN0#bcLtO^&<$WkI!h&)% zi1Zg)rrtHiT_1H!y??x?r}+{(s51Y7FZ;?*h;&JqhDv!!Si}Z1iB5{&6t8On)dl7lcXz%| zRK5Px3;#y_yB?-~@FLDHSU=c(VCH_*7|)RS7w>OAcqyB6jTyzBtrbQ_XBC;lA_Y$H7Uj@Q%Y)FQX-WyMx_~}yJ{k*CZ(jIcy~MF zF_Cfc#%N7ik|rv}NNlGjMa?j#IkU>sG`!;W(HdUJk){SgOfy1UQ%x}rjoIZGm6SY3 zLqFiHiAhOH(3nzLeu_6E&TZD_^F!Ukl`VQVBNSO2Hp5) z!gPLeaT?=)_*AeRl1i0HE~UdKPvDufj^k4zpbx$4h>s7syfu8n=(yG4lPvIDauxB( zZOLH-4(#cp!O1dxGRfH_*g?RK9Oic7Fd4_z^hw6G--r2>Npw#?m|EM5=jRFdU}`ux zL7YM}n8Ppua|J9BP($7|KA8e?tcLGlJS|MXJRQd?1k}ff27o^=9N zr}+0$N}d(;lR3;ADd0ouM_vf0_X*=r(vM7${-4s1k}?w3@JP;|kATSn#tIlA;3NUV1k?){C}4qr`2yw%xJAHq06en9La49}^P~cMB>=y~w^7?#g^Y)~8*#LoOiupQS;M%^N zex<<6L|pEWz)M6t?l*xa_v7@fJbC?rWO(oyE$}>HKj`frHDr)0#($H9M|1i^f?m~w z<39*oiVu3%5&VnzU=M*yapw?$OYvxj~BQ~;IRUi&I?`?cwjIuzg*zb`N3v^OXmo5nV9uo)OSYU()q$K0@sN8 z?n(JWc>VR%ynLQm?>Z6gu2QXv=lS^A6jr}BkmJt^TskjF61a3;vPj_4xyf3AOXn&d z3tT!+`9h)(;`M(g@Ceb~4Jm&x&#wiCgZe9--!v9@peWywaM)-~6sPYi;Zr$2THvZk zjvFOBg5wzi&lLGqfolc+CgHHr1)}~6*&Dv4afGDEATA}e3t_MLV;gV z;J+yF+X`HTb<44RZw1~|fwxuQ{tA4c0w1Zs!xi{c1)i+HUsB+!75Ik={D1;4Rp3_@ z_+15FyNR< zR^UG>@Ja>l)zn#jjTQKl3S1MRQoVyMQkZ~~1dJ81SilkiO9dUIS1ZNMnNb%1XHt_OS@`m+J> zWG@Z}4dyUu7>5T0Y=!+J(ajeyaJWjf5%^~8s|Yq71z!*F8O+ar0oL>7Fl8i%wL>`k zY8;2twJOzS(4FQhfrr5jepO;VRXqfW0PixCrI;17D1K z4gj`A`vlj6zXHGt@JH|~;DvxaKu7SWP!5j+9t55XcnI+2u^jq!SE&vI-;H#Fsqkk$ z1FT(-!$ktttgEBxIS%{`ye41(7>o8U0WJ`*RKRGo{{zxr0AB?CP>x_zz{`M}(cd2dzY#DJ z{1Lt!{1F_9daeNO6Yw$2x1WHA4`;7Wbqhql%Yly@!eW-)IzOpW{Q|r)M5Ve4*dFuz zSHLcfRH|!$KOz4*;E1O<+ylL@0RA5Ih+tkf4!;%9AN5drI`s1fU|+zSfWJY1e*+8w z-7Ua?@hnE#ZNwP-Y%uVr0Pg@6A-xi?3VhxLOom<%{HQI5B?9I^K9t@8`F{Yq04I1B z{Qe0T0DcK>Mn4H^R0hMdz3JXEu9!}rPS~hEk*2gH1Kq+L;;RemotDO)6<^( zUUU;QYDTqme|u_=gt$b}if?azf7(E|fDJQEMw79pF(El^PPOtw{O-%eLonDgA#!?B z3hP-71rH9Z#-yYPYe5GENlrmism=iO0YDdQZ;D9pOl*(||Ns~fM^jWrA&J31(MNYJ?PhM?f!u`H`sTw)w<=(A_^bQ(SMKyiY; zez*i~NR2h6MJLTpGWMQ3gDwzV1{d@V(Z&Q*I=)k* z1P6+`sbI7*UMg5)xh=bNpibj@8)}k~eX={ZC!0p)bobTL1Te7I zAarqYabf<@5vHu8?nBD^6_*ee^$^6fQ!s6GabZ17aY=EUVTHYMQs3z~bY=RhB=Tik zrW)h%q72v!oAn?*{i2iDv^LPo9{bio4Ff5_8@nI5e_V9D@xFZ5u-;T_&}qUwP@^4Y z+yga~Rw@1hpRAwvQBV8wQ;jYAyse%kd#=^9{e z=MLJFoqH&!%U!gmNID^>$m(xTk+j~PB1(;);Iu&?o{{A2=!rzdQYTWYO(UKzjR42w zW>p4x=czJCE2P6d!ZFdojdx6zw+_yUaG{+O_)6rM#=T$16t=)RCL|^$CEIs3)pBZV zo0Vako@(^mk~t<`#XAk<)5OqMaYfnAQ-2iL(;`3{mNk zhGbKU(J(76CCwBWuc9RpZwq5}#^YRLN|H+KQmMD{a|+%(o`w48O>JcIU3HQ zf)cyRgvitxL_!-(=|y1~7yXj9pS+ij7~e+Xm0_s}+r3FhOnl@t#uimh0+m?BPA`@5 zPZ?wr1!GR>vC%2<#zd(u_RhM5#K*IalQa!e=cF0sMiSCY5=|m@WYTjA_9Bs~GD@1^ z#2Y0zH%BSF6{!wNai~5uDJBj3A1(}X!(r|b14y7jjgz@nWU!&i;w znb{NlzJPcXvSZ1d3;7X~#QrRXlO2@R$@8u`YkV@bQB@7q= z{(A$WtUcLY(4LkOH7hPgqD(PjcZq4nTB4DRN;M@IlJS!gNht{wDv~l-*Dw!hQb=j` z+EJ1?vuD})G$uqPBqIYb87mPWhyle2Bt|CUw+o_@5~EWMh!#gqO-+i&+xTg5q@=Wq zH{fRuR0c8z2K;6~bP@!K{UUyMA}Iywc;uFXxl0V^>lhvrlT+Z5qN~jPXWL!zEUYj~ zr!Qg%ri1kdFp+V}>m{uazqJ9Y%8ZgBIVnCaY7U8APD(Mx7-6@fz%+scU^kVx#v?ax zf+xh#zx6IqsoLVGMO6!b^g(1@<%-kabh=Q0$4;Oje7wpPfPa<(_~Vbtc;Q5~qLGWr zn`g0aT~ty+cQUeRaro5zzRbQ~WzF*M+Q^Zm4f3%YxvUQUyf zgQp(eqx!j9<{aHO>w}G1>)Zd_X;b*^zRSLzH21B-X|vxl7rv2Hx5=sQyWhO7>HF6? z&3V_+Hz8A!ZXW&!k{lZ$4M6o4{wU1@e^cYC%&Ukm$XhTBKieCo0;*l}hpt zJyAY=kqV<9(7nd^;~MZuFKSB zy1KadsO?HkyBKS^xw^Qk9EnhB-GcgQ+68WI+6Asx*VS@$adq`;wZKKKLb{jh0v8vRW!7kq$!`W-+tjv;>qf)*)IkM3^Q>83gFM>J-@J0rFQe}~tm+l~9oJNEn`KZCk# z?EJu=_iyuzUOD;b6L0;Pd92m+;1=-%59f7g)$-~K+o!CXK493plN$IA(#-0V(6U9| z!BLOJb+CSZuH>-=M@Ok|Oh_yF%5!8)`iA$mZN79mLURTce3hf8B8M;)|=+`;^_=|5CTEH-Bh4UaO|;hAu8uZtmJz0NPfR(AKS)wn=8A zE+uipR?MpN_pKQ@-2?x1XISWb&nepOM9|8uqqe=a?Yh?MS}kfBo0gW`_vxpjQsTQu zlKyqaOnf>8YSbM`+WJJVrWV|w)Qhw}9`X!x^>A~AHajafhSEhfxKG-Q^%sx4v#j@1 zOLw&N3jSne*ZH43lfNzU&)T`K`0Y7!pkHBFpXtGA8?H`nmHgw@Z$`$qXgjl;;nZiZ z?!UHrNwRUlnkGLy;nUR8ZOa#bd8bbr?%ipAk87&A&3De)w(H}4qrcnId`Q7#vi|Lil z`lp$GdHK6_S}p(j$zfr?xc@q3PFA;HdTp2(g8%0BxaHfsBjaz^ey@$z)z)laWmugr z=Lc_q`GvK!_!#h1u{P&5E_tgJtN{e%!5BRw6`?u8fRj<_juyvE}X=nS_`+91V z_cqRaW!Sjz!tGB7?Wp|ohvYA=Yz)!OYZWph?6n}v;k2oBeHI42)MJVHL+zxi&${_7 zjoq=V<+sMvs%cY&X&#`UvT9PP$u`U01^uzj->Q_Z9L zn#iaqV{#fV6N55F`b*SM8(8b6Vl~8`B{3RdS`8vh2`G>ljh}2wjK=Y3QevtmDTaPu ztgBN)+)?C|a{IJuCe!b6v0viC28r#BQoAdrCNp2p^?DPbfiHJG^I>j-(*3tmS6@3Ft^Rz@X#dg;1Mj9+%_y#YHKWf$ z>p0Dq0f#?4@aAZ*8C6~GJ+s-p&WlY0Cp`9K+LybnZTk(|cs8lsrC(0%PX11<`@Z9` z8wu&Z{`7Ivrduw~Yt!>s`?FuE&&@cqp?B4BOf z+XFgG(=6#R{Z73FC%^q=+npU7% z^CsUXw9P!c>b%my^6Jg5(Jn6DUUo;%SEn6QOs{)s=HId|dEuR~snzIJHp(8r!wa^5W=cKfo#-G^OAcwO$; z=t_%;XTJBSeMlHcR}XmAuG&D!-nh89`C~29O1Rc#Q9I$rBt@krI~XfMwf@}@t%{3= zzSu43h>zB|H(YdmN~6KgCO>w<7}Wm5F4MK%WFDD2<*HRV`BF7{UkhAlsF^)&h@n*D zudb6l{Y%?ZViESVvtZHLoI03D+}z?`z0$OL|KDj^oqWgInc5~Kt@h+gdTYHT!PKgy zZD{u?UFuObxs{HI4Wz^xe9e(@zeGI$`lnr0&6c>;Sw6LO_?1}WPaP(wt(cx{I-OY3 z{QD6f*1whZ;)k<6e_xh5eQbxoCHDfqu6t%_^S3q}kJQYWIJ)upFFoDPjk)y7@DHYJ z{P@`9v96~|%U#Z{sY)!FooyL+@3($EA4^TO-QKxx&-9kf_cthe{fXs=Zm#b-aJF$l z*L@z=FAADIx2fA8kNAwUkN23b-Y{gX_kg#T4F6_(-@LG2+HE~B;_L0RCibhmoBBo* zxACv6s`?!n{8QteR=A~XTC^qU7p_i)Ji`?Xe?Dzpn4T*Veu zYtH^J8f8~c$A!XSqr5H-rdZkl*QwgiSq`iIi_0k4|{_Z&Z@n;gAiT?27Ya55( z?eE$Cm&7i|JO=dldoy)+=S5!)>~(9R_pv?CdoG)B@y9OtKSuQSDxPw^s?KlM%ZKIf zxTJdSZnqm}=Iz~gFSyRvD0U$I&Z!0y}~1^vaRW8z2~Mh{B(BJlxw5^ zSbAXJk%?0cRagGH?h-X*+W2pp`+JrDlDB`}u{ZbJ`6gj(qAIxI`7viRkGmEai=G&~ zyM6=xxu*&;LORSp;vU%)tS--%iM7zM}xJO+Pf~e!;THkkp4>l-1yJhhr%(1{{ z3zFV(b-@TBJmKD@el6E0FcDvHDCy$1F5YdrHWtd};r>)DH+K&hRp+pXo2I>&+m*A^ zJCB|-cy;%(vo5^V?6o^Rcdp7>iNHu?{z=0YpP9wY)bz`H@__q2tHmDE z#kG!Vuh#}$(v6SSu3JzK%)7f{Gxf9ZMqY^i`|2AzU5gxtn!J%0eYI?Ji&ecNE#yYc zctkVdJtidoFT^y+Awfs5-}3Vd@T1)pP(R;Z0@Vijw$wH!zo3?PBRgN?;-=xQnI>fP zD9M-b`k#kQY^~gmUkleX-{Cb&-BaCfO4Yi% zIR2Aq%a)X^hGCixm8Ukn@vV00qQ!kT=V`~fy!Ti370)^wmY($T_I@Gb^5%ULi>j6u zW<0&bbfI?i(22pnes`+NYTpxi4S!o(`Q(M)QafkvJvU%O=dG5L-_}~u?(y>Ng~m$5 zzpnX@b9rUpcRjvnpfkU-HtdJhYkkZqtyVnex_#BmhO6uR+FDBTcd5zbt6nif za?fP-TzOCJ6<_u8fx}OooblPz`3b*y?>qeGxW_!^1st2!d(E(x$NxHfZH#-~jpFV} zack-~bo=0|%(1%NQ-9bPr}N+cV_|m38)vF!OPi@eEW@8Vtn}kM`AI*+LNE4B|36vVd(c|m%B`#RDQ%~99oDs5)JAmLIgUgp3TzHm4<_B$A@Ed8 zZMG*{^V*p!hZ>)$XuQ35*FU~}X49O&xy{?=Ja6?Z)%u+;XzcyL;a~Gh#=WBHRP@p= z@9wVe8<*AHI=b71*R8iM{#|dbr~1muFNc=>)h1!os5d{@yzBG6@4er@%k-Y}drWTe z)mz!eH+6jP@(Z~OwT;#;oL{gYvB8+VbtY`NqJ49G>gBJy{q>Eu=d!IE@3eWpxcdssdwQQq%+m;EV4?S1%W6Gb`FV6b= z`m0N_4u9YKg>JM_qP)x z;-cN(7+Q9r=V4>BCyzAQ*dTIe_uCbgdP^@3_}$}V(xUbubq+Q!uAja*r?5@_-qsCQ zAG@|>?Kdw>uG(0BYNL7H-&I$Z4!_*b>#ongQhMy`dU(XMDPDcT(!S}GIL9z=^Oi;@ zC+wIIzp1?9@CSE)*1X)Ts8iY{&rnN;!E>hk9`S>2()vHg44?AKh|oRP&!m2Q!R>_~ z#=iae#>b!EHe*%%+Dli{x&;p`iyT;6H_zYHVO8L2)7oO~uOko4UdGL&GP+!&)%)*8 zm+Rawy4>sZ?Qds}t9`U>Y5Hp8C%>JYT%JF_dE255CwIQvsl4)=GPMfTUo`381=Swe6pWgSIU&d$r+Gxga=LWu7oG^F1;pUK+eM)9M zw_4@ha@4W@U;J_9&cT5xyYs)b`EPB!?t|y1ZSmf=`bp!CAJp2x{^cKh>GI{~Zw9BD zUK}$d`^^ZSiyw46J!9I@9=fEXtDao<=KRpdUj06<>gq_{Z=;U2sXy_2o7z9N+4)lW zTVLuvPaO2)%lY?)o_+3U-h1wS6MA>rxMip@DSUnG;-AM3JbLTQl|Kf(bGbw2$9-p< zJM`mSKXb9)2L1Ohdu)9C@{Z5@jr^|cc>RyIuR68xQFNIfasAUwe-vG&bEHSnQofph! z7Y2GPw?;SIocZ3UR%rnKzJatsv+t%n`y>GZo`+Q2B xR#X1C^mY5rb>7`I(W?JxiRQzm^S57}{nF^pUyM(kdHKU7;y%YC@L!U^{{v?2psfG^ literal 81240 zcmeFa4R}=5wFW%FM5BU<6&0zH6_2&Y8&sVzu9M z@AEMaWbOaG_F8MNz4qGsoU>{76Hf&KfnoT65dI$!2;>8NYb^c@&vMi5LG-TKOvC^E zzx@>0Pl5du*iV7|6xdIJ{S??wf&CQNPl5du*iV7|6xdIJ|6>$*=A(CZ>&8ET{XQK4 zfl2fR1OpQ9WMYP2tRxVag>si%X6mrsfm*J#G*-DJ=2a>!ofV!v%ZoE~@!-A|ydhR!T{BOsrMEE-^+%&}<81quwk@OThrhnlHSIgO9Fv@^!sRW zAdrJfUz-~UU|1=?($b2uSechpT3S>%tI&(jLEU!|eRPItBfByXILynI5b;>Ju(rk~ z4`>54%q1c4BOdnWCrN4P+=d350hr##d?0R}Gi0Cr`P*RnDEyBB$3DPib)fx`rcVq* z_?-{9uix>$0!JgvxIeAL`BPKh*hF}EBAV+&cRAtyM0i(Ie;{@Spp!j1`O2O>dz^4z zBHYK+;{X$ZL}+#*+LtKlcZQF4W{u9?)9HkF^d6fC_p{8QfUJ2hYPN@W9DyDa;T=wR zXCl0_Y5mx%e!If=lm7G5`d`~UDiQ5JxC5>FYUW?{TPdBJ20%U+8@!K^gY==;aLiBJRykN9W`EOqwrYRU z`pAKJP3~wA%s|HjNk2u4bhnfnsiPY1jX#tNg6G}RHaaWsu{KlAbc$%x`r&poDfAu4 z5)js+$I)Nj)Ca<0u=$CS;fZ*z6YqCQb~;h8u&+J5&G2)Z6HX?=Neu4mzS=83jrvV} zL%>()=ux6QBy*DD5XuIdoGb*}L%EcG;j*6}E?qvo`YoZNDS^CO+a_iW$_l}FR7)6= zIy_O5>y+$rqW#U`4}e}%TR|(xi^)_pIy+hTk3D-@!XLQpO$o#gm_F_@dcz89 zBD%A=Fx(#AO7`@gX!BwRBk33><=ec2G^I7%MGRY{gRM@uI}z?~T3_(>Qk@fH6RC8S zxnSs;RP3DSw&eEzkx7sKon|2g$O@g%Ov<*0sb?WA+t^c3dcxeJ1`@3${7aY2DyiWr zH_jx(XER6dExuIf-L!U+s3!1WL+HY+d*|5X3lk-~n$}HnMviu-Q;*&|%jTF0!Va`} z`Hg+INLQ}(^g9>?vD-OyO7-~PI^o7|MiSx1sS~P$jo&<#q2UO{zRXZQLV3$x$NIw9 zF%o+iD@@Ny{9)2WNh)K~U79o%jpi+T9CdnHBng8Qs`m%t!=VO9tDeP@(@lc?>cc&I zn%6c*UvG)N-uU6Lm|JEh%Cv`X;bN5t-;#)Sx0c-2v@V}q!O{VV&rL2yUC2iKd|!c} zzrf{M-~?ZR0)K%sO@Y{f8^XO=z1jF1XbJZ=hyUCX{_~VTEa-GYL(mRs4^UAgb5Pz6 z;+Gg>OZY+HJ*gv(3A);Z4r>W-lu+KX+XeT2Q7!$6X}Qju&iTWgi*nn~&z{XThtZl! z{-U44<(0xXo$bzr`OYQ7ouk?>%xz@R3$sZG=ho}7P$a*J8ZF`1o6$M{u9m+W*#=g$ zDd;@!v5lCgiC?ocWCT%)NjqqEY;~y7iH#nw+*iwjvQ;LCTUFMD1+Cuk zNRUMwA=H+^;Ba~$zHiCLDz`-7l z<`8K|X^JA22fJqILLr7j%KSws*1T`9Roy?=wd~>{mQ4^l5@09M>4oSMO-^Vw31gex2a8$Lq{}hT^z+Ufk`CzVO{X!NBfbonj~sH zzZHeG%fGf_k((gBhsfKpCP)@d1O`>k+Pud%HocM6_#xKfwT*wtYLqaw!aJfB-oZqF zr#al$67GXmINA(7*}s$WnGCVdOQlb-U*AA-Q}-}*Bo`n`H}@ zT!n(#)Xz*)GS#xtRL@E@$~>-?(rN-FgiTy#T&BjQ2`pGxPP?uAPcl@^>0%pEmKS25 zxSN{RKgQ^R-M7JdGG02kaPyS7$rKzo$u}37fg~4vqD>}vSVJsNqf0CJ{FfB$8W?{1P z6e^ryhGJCGG-PiG6_KRWk>e*6UZm_oVebiKll;92M_oq=z)MBgFjuyyh-9Z$&IuTg7b_1XgG z;jL5xX2ss>O|qHDLlfLL_w$ zxhxyqqN`N08Y2g<60l?6bPjRCZOONHus}Zxy|{c^JK)gB#a@uTzcrt>R_+B+bdr_463NTkpn{e^pLg5Z=J3dIFL0Qz>_VA1HQ|F%!GzBsyz|iYRNN08s3_SZbsXp2ty`? zU7g9GSN4l;j>QX5HiOASB@4@E$h5=)B7oCJ=ORq`3M99`YY>2nnS^Fxq^pH)o1w;G z8|-^E3OBD6Q*EmjOa4e20J7X_=?HAyWHT}$NsuD&Aa;_mO)qwrlWJ3!O@Cd2lq1e~ zSrt`bHOerOc7HP4>Z@74sqStOj7D_@tsAXEe{iG_vVk)mMxR|?86+Zqd}r@7{w+P^+MA$cr*wV%moWj2Cuk0mGL{3i* zS~AMc39nDi5bE@|j+g`D0ZX!ygCe1iLO&3a;Rw^<4kVAj2sq2b>p7lZAttI>+*O^> zp*;^8%!Wjc4SjnjM~{%B2ju8!4kuf}Nk2J4(vggJ*^jb(b8xqP3?Q!ACSZiT8;jLzAiox8*lCrJ$cocyx0#8#PY5B`PlRy1V;dB>Av94Z_ z_T5!^;s6|5te361+5056p{l4oxt?=#q)(js$!@M(c_VvH^v> zmVz)IX`f=b9PXUYU2z-R8z!sbf1#+`8YGO^CclNmru8I+v9h4Ga?Rew=o_Hz&g4Q2 zCs|@zK`tF-R{skYJH^@x$yjQR(XwLWlS!kiJ>?SLPBe_!+A3iU+>iC zb2EQP`}t;re!khDN86HbB#AlQ-O;wDwfWjBDNG4Tu0wW9_@ybs;^Qzr*|DR|mXeq9 z9(z6km+3@o*PpjjnLZb)BTnbOrnYP&v9bruTRubP1BaDdh(??Iatu4!qYPE#vR|38 z!HN3+ z!*`Bki6~kf=|pcc1977FNFdvZ-Y7p~&mu3#JEMz(;24uXl{;3_Wqig_@yXA>I(jJ;}HJB+8b0Su|`CQy1#y#`WYK zIca{Fzv?OWb91Lt0(!xFidxtT1!5ttVvz4vwCZWnQ=myXaVo^d+L4I&C6~43wEbW zg>!EU**qW1Jr0EYPqGX$M*(fKgy>O)Xx(oAHLVdIs8cU?m7$$|XuqT(j0W@eWMWiEQ z89&|MC#(tUV~v}M!8hL4guE(mPgk@a<6wFU8#kig#N9V}&+0iLnVL=5mU1FA^K#@DVZ&K!7l;Q!B|5 zf}m)-#cb(#gI~LxoN88kqilR_xsfQxwU72j^1aujCu8}tr;o!~9a$W=EKpNNHqXXn zWM45ccVvq>2{?j~A~)obg$<@d9@&xm9+|tIH}ws7XU^K>s4;thTq+@WfUZB$H(vQM zFdZ@!PS;AL5R@0x7u5Lw>U$f0%-h5LvwX6ZQ&_^3Q)C?VRslsuB}zsn;`xcC!xLBKI#=y*mi9UEq=PjICoHTjyY?x-0zMHqi%r8jl;B%& zF^t<<61)=xuQJ}E>%T6EXueYk4tpG>G$ADnf){h^OoDd`!IO#jw#3rz#8u+d%wYO# zMgxk#&jf+Z#)>j-)+V)rAd_~Sz|Ma?Bi$w=oloIS29NyMp@^g%;U$~>y=RsUw zk;%J^Y>IVehz0A6HeRZY2JH6ke-ZAl#~}@*3D-MJQ`=oQ$;i5Y;Ab%X9Wy6C2$ z7fT|@+^uv!&!3PI2HmH_v=F*?3*9MNJ}IZc2maeGFOV+j(s4IBe&58zjJ75z+xbxn zWl>N}&(&Ts(Jfh}Hudj`!M}rILF}`Ou~$*Q=?TyA zR^gsFZvVV1=W*}i$mHGT@H@BzgiZA4q|Rvf2!u|CEIKEW$xaFc8%(wG+e1Mhz%12M ztvKF<33TtB)?c12{_<>ieR1H1JAYV$(dvb{q4V?PB+piyg^F;7VNAE;?sjwdy_WEM zxZ3oi-ZZ2-JfvmZ5d`|2$Y=!G zLvVfv0{3vs;&biO%OR%PhjKH7y4iQtcNP*`b4YGnF(6e$wfy{9kO!XY!XP^ckvDO; zulg*Jcgc9<=%EQk;nZc%J%5%dvIClmX4QvW?byh1(g>$bN+ShPa!MLG*Vo98+(wMv zx9aX#DI=Tyo-aumvt!zsz-+=5_nmeUiFdNo$!;;-GHUizmHvd3Fk~4d-hx|aH1lQz z^B%|1&(6f6;}T1^Bqlz^GoZ)i3_7&Ve*+v?Dx3Oz9!yZ^|B|o3^M&9<3VOjjZ~|^(GC`+6cX-cbU>dp}LQ{4X=Y!9~chzRn zc_@A;txp2`>VIyC^<{F?kIZR|o8`%Sgu%GtG91z=w@fiGMDuMF{%6q+ub`m4rS7*! z2DEsI*P`BAwJmDYw&&Ar`pl?RzO#ZRmFOu`hK-(&z^Md{Qzl0`*&HZL zkmkK7LI%MTi<)fGv;Ek({LA5T*PQWSkmUF>y=i*%F-?NWo|!^}PJP8Q0bj4h{Bm$T=;&~w3_4cQP>lksvf zAmQ>C(-7(HAvjoR1`Jg48QQ&luy%JF?fTEQTWH(eC#8P>yCG2O$1F71h;oJco*pH= z;;7J`L;mpR>7`M&Z2bJzoQJ^*Khr{}bRX-ug+3=NTjR0pb8J`L_Bb!(6T~1jEbS9E+#clI`o!F`wdX&tVZZYMz_Z^ZC?S%Ys}hTt$KPA{S3i z>bmLc9Kn?SwWeKSicuwXJxfF0*3Y$=W2Isnr0@}_Y|wQn%${w3KHXM_8syGZ_cFw~ ze}k!(eqr4{ali*jc+0c*JSonK$4W^4&~zQ17$FVuM72GKLH?3E;CW9*#m?Np1p1}L zOtM-uRiC+j2AxReS;K*o#vPGwHa=n|9rOUVhgcOeR3kC)6MBsGuW_w8Nh5d3Zem=C zKk2l1yCwQIH~j7$_y59purC_Rao(|xT*IO!=M7&MRQm2C8C-(Rmr&~n?TE`~5LLN+ zCQrvki<^eOwM74>4+tcY7wA35tv)n*H^SkMJH+G_Z{aDa`8YPlOpiUz|MT-6*N0Pa z2O#=B?g8w?!N<+s|xN%S+lut7sX-#b-b*jjb>YZzGQ`T)l zuA|{b*+@P{mi}OzlwW}I_r~DKs!Bw0+klV1VSi?}Pgr5oDc{=??NzGu2~{#*3Q%vl zyUs%b_z%Jf=lCwnFaJ~HBmLaBmkmw@|2T=4tz|!;#^es(b7k6wWov~ah{;ZltZwQ* zXwiRTW)LTzVB-;PBVj3hfNCwFtSO&~#mWVV;I_Cy(0)w2;mL+=R0hET{8puMadNcRsxrjXh{fx3DFS(PsiY zw6~Tb1}9wK-4N~?xgq@0XEuaigM;Sv0G@Vij=tIweHDXt)-|om&DsRUb1G1<;N?nQ zhK5_h$Zs>HTBeWaZhT{R^YonV0m&POG5Ox>AxPj*>yZ(h)q>49w&SHeSZiXJvgLs? zWoH^@^G?o|o(J&<7@J<3+H(2SM%ul8wv=4?6leMtN|xN3C-OVs%t(G887ZmoN(PcQ zrl)c)p-wJgvfQ7WEI~}2e7h1eLP{AfJfbAdLbg6hh`DC>nGq{(&}WncyAUpcm|+Ah zMsC469BMMb6>i_)lCL~z7agkhi82hD`FJKGaq}il2Hw=km#1NeQ#IiFZxCc}A11!E zJ5e32%f#qs028B;jhN{Nj+p7^B?WDged^lyU|m<1d*5s4)JfIjun*j9AJE;5gt2XT z%Mw5eSH|&NG#-0iek!PhDaa>Y<%G>lwS#fi*Akd=py+IQT<-)ax2>sd7)O`#)P`{P z`86a&w>giba|~8|vZq)2vYVa}h$XWiG*Gk%26{G2HsxH4i9(sV&A+q5uzj5eW;@oZW_Kmqa${b zlm_uS6D3=`X93`v6!!e%Hyl*5_asHQ_w)CzkvU_}EzQ=3moepjP=Mvml!gF>m^v zV-l(`|NabG$ZFeFm6$dh%N~{)w8`@B?Cir0yKpxO26~~GH_O!8%mAj={YpY&lmpvA zHQx63lQelVGR3)npg1)B&qfJv7fAlLDy+@Xt}3Sx0wQmTfEcG-K2e)xFv+tgETA=9 zmRqmcIGjqGLQOXE<^^r=4O-Eg3(yyz;JV>) zPKypkF*|@0fV{;Dnv7}zILK8EEU570b(_UU)VMCO$th?d5nb}Gx+=CxT!N)VQ<2(l8!}fUbig_rtPqvq$ zKA(Dw`1i^B@!x_k{Z$ZNSkBw+B!zzIPFZfxGYNLS!_wVeg?WyH5|(r4IZaGhe8#S= zN8oVu&|BRLvok5@S|XT9{1p`d>U2{D{HJEK>e;MuHWJXTnyKc2o?TUmlI>N_EuwHt zJ}vEA#Jbf!VTRhr3$aT;OR;!OtgP;wU{zW5g35|utTtFzR^Lz=tgeYw)>oC4R|d-} zD(Wj68csXJEqh`061*79W}xcA>IK&Zt7_|mV;aU(91`GPG#xm&wyv@!IJU03A~+^~ z@*#nP%NNu(RHA_XY~OWd<=0fk*!SGZU~N2B7mo$!mo)@yYJ&^s#;bz!E6XY>>wy4% zwoZ9%d_e_D#DeosmBj|jFR!h;HprKV1*__77Y5@EmGuqivGSZCaUIxRbq)JhoIr-! zU`=Igac%uI!G;(Rb?M;YQe9gfTM(?TERWYWRM*x7D=K4^<*~|&alx{=we>O3Dit@6 z*5&n;WwFX&LoEql5b}-DBnM6NV=9zKsd!h`*Msipv8;SPnd0${Tu3eJ(X4F2g4%NS z>=n1{Q!ED3r7Xrid^Nldd^mf3EG)aGGI)AL<)YJ#R0JRw=LE~=m(`bnIK+8THN>l7 zadiyM&I2bQ9kJ6u<@&Okd6gg;%P+32IVl#5*DR@)vl?!X@uRVeN2Cu2Cuc=%R#B1~_YlNqZAT{JI@}?{V zDXPmFPOGVIXjo8LADXvt$!Qgp=ZbuuQ80eO_<}PgWtLT!?hE61MIS2|I%DYN*EH;- z4$F|m^XhBkb*y_`4D~sA@dp&a9Bhc!)j{GKf<@D(O)o79&%B^CJnJjP;WL7D^|i6u z^4bM5k6FiKlo1}c1g3?VDVA+SE939-;{$;gK5w$J0Xy+{Ro$pS;0|1gZlwOy-z3_< z_+1US=*U3ec`Qry!vld$P=4JouaAP>Jr?jf4C;Ou+Uux?(|)HQeFk@KzF)z(K;Vf} zeFpT&!>&AnQ#9#OtX>d_EYshrav66z)FW#6LXVwDUF~%RdRo@^@?g zw-w%?@LDZDPs>l$@}JlI!xZlRytWTnBc5*qvi(N@H=zCd0b#*qF9Ez4@hdbQ0%ZBW zVE+FQ=|2U00x+Vm>o^m?T;X$gV3YY}3g5#cos8EiJO=PF#FNJa0>1`)8Ib)y3&{TO z1AGYaC7Qla(+dIN*BNmPAn?h~S9p-Ze&{Bqzo&4!!dDe;QTTg>Uj=0U=Z`XUIa1*P z3U?oE@cJ7d@oESBDa!u`;3I(N0R9N@vw&{_4hLkpzaND;gE(K4^(5dLz?FbM0elQ_ z5#Tn!GC+>|azNHQ3-C{fAFk;KYI@(1n9E52B_PZH1d!$D0+KHm0ltRxVH$r5`j_bs z1O6WAw*#&LJPoi1@OZ#YfV=VR9P|4C{|xvdUe06q`c4oH000R92+A;2ww*8mdVuK{)fUIy3&I0^72z+(Z~KfE#0Kc60F z|9{I11h69*@k2n?PXMysV!&qsF9&43ivfvu2$1zo0VMs71SCEO0CK!Lu@z@Ke*o+R z>;PnY4+66O-GHp$3iu4-X9E5l@L)jJ-;6br@RxwyNRMg!B83Mj?8937Ch}hc>;?P- zAnW~5;cSIbK$bfXkmV+7dbYwh4-Eu1BmG6d-vj;%knP;5@Fu{Qk^T+9=KwDSWceaM zj%P9;$MadhjfiJ!e#aqZTo(ee{^1ILd9aD!0m$|)17v?=6!zwt_U{B-jr4AG1FAW5yYWxI1)*A`P@&^O5{41vg0zW|fSwQwT{ohQx z=PEn^@OI>H8)w>keVoaE91x_+ZUtn1jpkQtexc?ct@-_@n)-h`)ztqzAnSiulTH4+fQ-Mb@gFHXRpAi|*N!#i?+0Z0yENXa zaen=a^p7fh`6Lrxr*N^tD*;)5rp7PO_!NyFpm4<(P5mVbPgNKIWc?4vnEW0<#^2QV z?FvUJ3@H53XjA@1z#NpnPUBZ=yjoDIl&Us8CGrvKs#rrhi27eCU{L;3`0-KcewEg>y9h3XP8gWIrbWvY&$h+0O@)%sAdrxE+w~y$Z;FegSwp z%H0LH7BB(GabF9_a+hj;!6c(^PS*52XPbK6XPfkw5NG+HX}nh9*$VR%_Mc_+{6@g_ z=Gdk~9pQUll6T){_W<4o{NB*`iwYkG{2tQp z()hK2w<2Dy@sPrE6rKtAedK>m*Z4SvqXAhTFQ^oH{0WfdS1Wu_)4!?l>lA(ika$)p{Hnss6;4+; z29WK2PUA-?Ja?Lr-wA;1|1Xh1;Ag;ZD_|0^4e(LG8vySDJQtAsIunrX9inj8m(933 z0VzLg0Ga;?Aj^MC)9W?8Qq%u&p((cl@K>l;2e=h*CSV8Psepe3oEOG-3jognd<8HF z$nv|3O!^xN9|dIoJ%HKxcQxR%h<~OC7vwL&KJS7+;2y+h0usMd09PSC=X^tl5fNbyWkm>)mkm>iQh`)~X8GxkE zxqw;de>@=RldI`F&ok+712X;Ab4~pf=Nda^86feS14w>M(D;&o)XR=3tONWne5PQ5 z!ubj-6wU!e|Jh$tI9uT?g~bY|D+HURJjf|9q;QJDNeVH&rC*p4QVz?r#K$Tet?5C9 z$0;18aHPU~K;l1KZ&nz>U^pH=otZKq%1 zPK7%Z_9;v%Yy%{IYZR_h_^85_3Lge!`wuAGq5bwLOe*YB$hU&xUp7xs2sbP2P`F-U zo5D2;d9fJ(vL98rQsKi2A5eI|!h00nsqi+1wl7|f zIA37_=x`tCHcsJK!21!WTrfQdh@#n)2gWH6g!!62Tw$)lY=r<)Z=1qyg|B}GJ{2_B zh6)$j_0 zAJFh7gxfT{6X8EFi~-Ckh7Ul~zk_w|BMq-X_(%|d_`i?vziBu)ArJ^@csjzDF?;|9 zaw)!5qUrR9)@hi2(Hk{PALVy6OrPa_3?CQ>@E+tN8s?S5Ra%C=v5lI}J8$&o5}(_U z-mBr~5zac&q|={vgof$QJXOQNP#|yt!x%5`1bki7>2r)}m_EoB4Syj5e`FpG)6rMw zmjZ!#8qPMAuudMf9i=ErvHL0q zVftH-INX$7(7EVftRrJlM2DU+NqU)0f(+Vft1d z)9{wlv4&}w{?*(=OxLY~U>o(?@+U`eeU6OPHu(o)65^FwYP8WiIi7pLO-udbxw$C$+Q#8!;i&+}JJP0||aKQ3`=$tW6qz2H__)d=bK9Kwq}cbBgCQy&w8vvZnLg;!+Ls{Gv+3Jkz*d!#vaY zu7-;yLw{@dPK1AL%V0m%$uMYH0U7(Vrq>{S*kJ|-p0ymUVV<{~reU7DT&Q85#ayLf zp2fU@_JkMEU2#p{iGFX=Fwbyq*D%j?eyZX5DBni?09x}B#t7(thTATMZYLcO<`w0~ zNKb@mD{j|x`Z@l_epwgcU$Y&Qy9ez&qx9#i3g6N&UsCvyhWX|~(ttRJP$sBhzMgQR zhWReT3pLCa8D62`V(|JKwmiZK4d)|#uZFwP?kWvq+5|RfnD0Tn0eB)?e&6ziSNOvB z`NI4RhAsaGU-}`w^e=#Jw#?^!={rFyn;rnKZTR1O<;VESpXCeZ`N|*d3m5sy%<_e= z@r7^jg}?0!-|Y)O>eU^L%A4@rA$Y3&(unZ~MYeLe4GD&-ucy`@(I;A0N83tY`j33+ zH~7*MzVPk7@M>TAwZ8B}zB0e`g*W=jtnsC{`@%2!!f*P*eZFwNFPshiZpVALFZ_b9 zuVZ}aqkZ9j^M$DlN=vW2Wc*p?HbSX;D`b2@Ij(7x%DtU%b#?JXTq7vods(@y5?)wb zKBUr%>#Jjx;o=GL>e}i-+r=%P>Z)r?=hjt)i_a=8>f#Hli_b1Ct**koBRk&kV71S(S6t9-Sv{B)jty4y>~h?lsfpKl z>>Yf_liX%qS-@DvkGF#sz!2BiR`RzQSH-gB71xU9q5YP`oFB zmWD}J56Yv-A|bq*wl9e`C2>WoV($_<8NHfoYp#3_LYWK34~qH)XAGKER4{nf;0+eJ z4W6yjniHq=8}Z6`<(U+PdfV#2{Ie@6rQBXhRMwahRzl5)2R7vmIYZuFP%LssHn5%@ z+N{e5s;oe%Rbo}8n0BRd@yVa)o1XsUipm88%T`n_j4w$o#Y=FN75=oU`m%+UnBHE$ zB7**en%dgB%-Bdy#=bQt4FO3t!shQ_V2V$r2x}(AV$eyrb!Hhd>vA`V1vsGrOUsv( zmDa`UD@zwu*T>>z3j(EcudA%D4M0yWs%j|Zt-jKl+KNh>P>)-4ix8`>qLSkvd0R9+ zUTQ9hy2%x|OPN*@+HPT4!!;~|V5z+-=f>swp^X`(ZDUmn%H~OztXNfFS!vNIU4ZL< zwiGUkW=x-7QNN(F#+H)npEgnh&f0K2)|9daH%j`Z^vi^WvA8YXP+JwlQfUT*(Z-;5 zaouxaWer1vWPpt}Ctg#H@PgWT0a@^XIn=GpVEG`f2`U1T%yDZ81{eCnN(U(iGH4b; z7`sM<1X5sO*%B{OgDa4A*Vq~ep$3;Lb0=5pddXfzFRi|OQFWD;B$3J+;tNabaJ#s+ zej#U)bczhGE+XvL%kr?mh0Dsi0B34>DJ~WVfXf2hysfP_!PtDNYte3!wHV?WNBM@D zI(*DH1~gZ90IMUGcR^{{zUCOZ} zr{!?ClW@0M6tfzQlNlEcZ*0i3u{h1cef05XR5z5C)m)3~-5{9`*3CSd8XV-t6fLcZ zFPvLxEf`y3V&#(RSX!+!p>S=%S(n?A0g=6i#as~FuwBY3xxQgBG?2=m3_1bx-PWGS ztJvxNh-M0_*=b9jX;ZIFY2YkgXdlqTSw^*_w_z7-w|m!AWG`%Ie1RulKD100%V0k; zuU=)#R!WyC*BbDT&P{X&BI6jCY{uuNrw-6dP933}?vBV!aV5}8u?C@+A~L6gGvXu@ z4a=q(u!x+A)q~Z1=)qS2NoLJtX+%h_(#j>}3*rscv}iP0R~&x~woqBcg6bNtkm0Al zcIlPl&!CjsnJXKb@e`TkF{}7usOU>)UMNfVr8A>~B2!GLbXM8C3`qv-YZlg4ps6aD zW~EnR+KtEN5gJ4mA|}-=h6%t$%AYa*Ec3_-D(dq+Dlg+Fu)3R?B2h6T{pm%{z_tg| z$5_o+Z7v>vma%rkY6guO%5{gB);24;CT}=%nF(x}YC!Dw@YORiv~Gr%*7!bm;A!RE zY2Xch5Ry!uS6NdDRZt0Qss@s>2%04`_GkF!QRtWrlgr|<-K>cVY1DJN4cxAt zS-G$-b}gB*uY(X)mFq8RD#*HkOSsm(9&hP9bz#{RfuMB zO=+mCKBK;K5lhp9c1Y9DC5KL!5pQ{dT;-r-|u^6GP3p$p(Ti9FA}T!(fH zU=sgJOJ{{=&(cIcnB$KitZ}p%z_p(Mt_8`jv=m1_F^vGEw^xU|N&L;e!a&9~$s}Y4 z8co3b#X%AFS9l$PCZ@O7@l}&?rZ&Pju1dK-iFot7O-?@UdDx%7J$v87=9QMt#c7-OOK&fKp~=H_NB3uk&V=;#$cG62mzGYS zcFD!zqG?v<>R1}T0s{gXpZ#wpPCoeCB7fQElKMcP4{+5@xEpt5AV3)}#()0C=zlhK zEB>qKAvE}J(v9-0EH0?Z)#d=M(n&w>J-_tJXC=Cd9iXXN-grfk>k99_HbDT@ifRE#f>I zabCb1V2N4nz!ijzAUaxqeju=hYzup{Lw_{^)j zfQ`KIGi|*3viw`@%kn(};RSoCBN%1*n}Gp%lULPgdB-mUUjhNeZ>%jJ!RLP?c$<0p z*Lu-BUKmwnc_8JT_)ZqbCu8wyHp6Cpp_?h4cYMgUFZiH5UPEOH>T9S_kncNIEOK4W zwueOj8TN+2Dlpc`VpQL)jf%N=-e0q?S683nPEW z>ZMiLjgiSn4!6a|t-67+M6@k3d2Rel$WNMY-cv4#PIKWm^o^LkqupG-=eCoJOE2DY z+sVH8o?A%)x@fsQ`73_CkS`$Ig4YiM?~sdkfrI(F6ca_{&0w5L^DcuiB)2npu)!Ld zAexLg&4x;R8R|}_nUrr2ceDRUVrggcJn56~0>u0N&}V_$r+)@jp}1d#@m+ZSx!IcY zN330uRM6$1yOEG7i3L)AESZS+N1pbo z?v6MgP{*<+YJ|oLx1aC|Jm*t&g3*nAJJ>0SWhN)IC*GMl{cq8 z1_#2OfY8Ty{l0zkW6!ruE~b)MaQHUtXIrArHhwsa?+@Kdiu6>YPLhKDI1iMgOweZQnp}kWn*}w@muoAskiXSskfTL zZ?=Tr#M@54xQeD{q;TB+m#jt!Q(gW^)a9R``~K97H*<%#VUCSL100SDV|R#M z^8sUjIu!XE!=TIaZdr@g+>fip&RB){NL_p2#p$}%UmXj)sEMg)w&yw4kUquMar@?y zjP$NS1tPLK)hOyzqv#=gpbr)MBdhaCYc>zfgEt#1lU|0^mHtTs`!R{J(xWStDU`qi zbXe_-{9sZFBO|R?I8ppI`6ytrsXr?|tan)NJQ)zgKX3U7q6LUeDz?ytP%9f?5Va-y z@wo}X*y|YOjs0)1cQcl@CC8yJHIXn2+-+MXYs}#;5Jr|zBej1u$dcD<-$uihv*?CU zod}v)IwD-aj2Sb4s6cDU{|pg#MVb1n8_%{tO2At*a1{`caSX8VLaA0IHa(dJqJ&KT z>MtbAdh#1K6|8sK!g!x~8<{fS)btAkx}GAR`S4GS=IDzp(HHgO7V9ZKVj`z;!)&mV zDsSwOqmtr$<1xmi7W0k32_h`7Q{I|lG1u97jxSVY8kH61S9ciletMJsb(!?|_Cxsf z=J0DR;n(zy@N{DJ%)|U$#R0A6*kR3eIPIQZ>ku39i*}OF_;UIr2W#<2VW5X=DMr;X z*xUurjDm5(Yudw)vO_5jmi4rtXG9>lrbr^XMsS!3O3;?GL@x~MEFsZ&O+%&{evLk^6r+G@Y}CF{!Y4C zBTC|X2&a(!0YBLv5VE_v^_6fs*$wSnl`Sl|%aHK_%w9i!DEa_2Ynu#ZkoC_UqZzWx z2^qu>WDwh1!rQSSUp{lU&i+IQQ!Hxdq9Ng<4!TK6^COxeOYi}Koo8S}NAI*;;j%kF zvGmbGzAq!-EWHgyikuCJ@NLezMEFi;t*;I2`_beD;giX?8-aDB2rmj7*9Clg4!Exau9% ze@WUhP3!B_4!g0hQMxp4z(m(+060q_ z((O+Cewbj?0ocD#$fJ;xwbLObA|7N|2V4p(lb83B;2pq(9~8k%?e2NVMaXkAefp*q zzq=t?mS4mLj&KP=D=cew=MWM_cp-KrZK21qAaBr8klz%X5rY9BT(SnWDY=$P(Nuv8UXQ8dl{u0Vf4-bsv2HNB@ zB3hPj%OdkO7MZu3!&X@oT2qMAIlB1?P=T+BBL~5~o8czdl!)Fe*t%`eS?%g0H6g6g zb>g4>Gv~(jjcCfVq&=V15Uij@J-%g@uCQ+IT6>GpJD5Sfgg{JV29a?1`o%xZk*`*?GU zI8T;7MbF8)mhe-S|NR@JRnXqpi9`_UvDoAA9I>Hch43RF_lty8A;5TFLuWogQc?;CQ_UDyD*CB zts~x@it#ir{S69%c`K(on~E^;!cIp~OY}F^QG<@UDO8@{BN1O2$$CcOz)&rimhf{^ zhQ;A5up&4gzU#J@lIQXsd)_!A>G=b$7&A2>*#5lp0*L>BEOFRL=Q0yN@ukS7Tly6p z{8=*@U10@j=eQn#pr5ivOC6^w68=$ADvdb!da)s8EX+*1O*Y^9e#$U=>iBc%^=d=g zNw`fD@uX9-O}u4r?G`nM-zs$4;J7oCZOu9Hd>~GbZ73*HZ-7^|cT%J^=O2Z(RDmhw zd28X6&E)8P#uxxCp?cri6MqzK{laZ)Y~~)*$1U;p(0rk>=Y6=bubV`-2YBWLCepe* z0+P2cFUH@I%%?tiB8U)wku121TUkQVK{!NbYZUH7r`5QV=t~^sv{tw|$2sDy!k&BG zTU=*b>zLI#BAaWd)4IgOz9q3}BQg#JH?TN1BUopGD-isn3En2XJJEZP#JAU=-~$N0 zXo4#doQ@R?sjKX|j|z~XXh$Nt4ZeM;{)7<34$7|wT8n^ALjF>F)~CzLt<1OLa>f)D zmnSD7l@jx73EVo7W1^Qev7Eu8=H(LrC_NG|0z?s2)>tp*^F+ytu6T9!g4;LuirX_^ zvbc#uk+@0V*3lkr3<9?kEp7~WxcTf)!6_Bj-jgk&RjWhIRrrwAK)r@xVNPO=)-yf& zl5Skzjie0chatZ>f?wUzK5d{YB&2E%D?4~-4g+FSCB)UQk((3n7I`osFmqu@b)&@& zv54bsSQC)bh7uj-yt#{JZkIVpOxgb0RZj5n&L>@LW(=V9{wDZ*<=|g-dA0!J0kM-WHNzJzC^oznV5!7|PfS zGpA5OGT1iLH}X6gfcZd^0s;VB;;W1ttb!c08S;0M6rDy6yn{om;kaC|4DGq++XX53 zSteYRhF2HjU4mDEgaoe#3|^4S668ZRx%S38Y2TD|8Z^3zMz=vD;#0JLfz&7QMcVDCnlvjq<~t>Ea8@Gr&}{b>Jjy#I^v|8Km$E;IffW3g(sC*Q}r-i%;*@*o+n zx*4;LBpCC(J-Ob^NONOyIQMaoqkkns^W zBaK?$b2HMYRsG8U32K=yqvPA?Mn?_D{WM;_OO6_|2XxjiNMff21~#o9KER&Q@?&6g zW+-f1^?1P*1x*p)-~Z;DdV;flce(d8UOp^ugW{egiZ55B5VDf@$ht_@+DN-dFwcY9 zvJB0pl6*IGY{>ZnTn|~^%BRa7);yYl>N0|n)Q!rJvme1pCyor5Gje(*%G&LYySHbP zKgTp68F3K^K90#9dEdsRS{UeCuyS878w!xN09g^-Z%AYt3yWukT&Ml%8B)-2<85e7 zR*A&40(@CGQVu`B@aKHy7>o$$5Sn6b=@xmXbd%~5Xit6}7|WHeE*Mt+V=5~l1?FBP zoEbZ?#3y+xvOPH;C#Z0JU=XcGZl%I|$|XeJBhN&#a2w;02se0NG36(D<)=Q3^3zt? z^3(Dj>4;=K8%g9PmhLLTu;Gi^F&zemLs!+aIJ9-1DRS0LcQ!_y&g3j*f-&dF2JxY7 zl`W8Wd}whmh8d&$w4SsgjBz?l6~oldU52Ua;lm!3sV{xT$JF&?>bIri^QbpRreajCIpp#(F7a?1~h|B2O4gLkk9NcVg*Q*x8-V(lv&+D~*|r)2%heylu+Grm>~argPpLg1}zL5zojI|9S6W}N9-{_dKv7yg!-^0R&AH?#cH zmcN*X&l-8ar^~Tv1aG6sqD09y7=~c5Y#fZFg2lMY6m?!oo~v9odk4d1>>Y@||LURT zazQGWaoN={_irB==62z;wu3Tv7c4yzPiAb_maRuobxvho3TFb>j7yoFF>52t1IPfJX~Du|UZ+7B(c6IwEf zlkOrMBRJ1RovviX$6EpS!oMvzm9_kXa~N#m?$g!V#-Mo>PXqlc`B(QT^6$IA_2csI z2Rl9f9f1d>1~p_kGPDnkm1&a zD^^&4*IF8L$=Q&+p5{zz&X|)4z+5%;(>VXJ{SJRT=~Kb(HN34K*xkgj?iD*w?qhfr z&i-_;3mNQs*xDz=u9%$N5biabbB|vs52&=*dx0tWFu)JSGRqtJeJ#;GxvYkk0zE&( zX2x_1fyHk*zSHZ{i^pI>rgyvOaJU zX9Z+v&olVrq1ol3nYZkrj9KoGY*|?rW_zRQ($R>IbUE%TtjZ0QI4+{w@J;xfhQy_V>Eyso*t9LV(!7=2sN8$ItS$mq>Q1taCWQmoHj zt$2?&Fm@QHfVqZ^t&y(vGCO^z0emzmGS(2A?rA<6gvrz%f(eEj7dbCtE%%)!d(PSj zdXb_jL~O-D8h7a%k`KJQXU{63bnA#S#-#F{1a&R~U3um^iBd2DO(pH6j6;2c{k=;_S>_*r}q! zG)T$yw4VP|!RO}66r=d$i}=uqA8y<89FFf~)5Tk!+3+S<#br{}ak3~w`oNMhb@S06 zZo#vU#EeOKk3+-ZL9WE2f&|VD%fX?Ee3A?4&I>5UJA%}%Z?;6=6lwb-@W<{`X7uKs zI}sat*Rw4t5+&%$sMb_vlrpIEhu*SJAEmTROq0+(+%R($xJzzqzJ;q55Ygr5L)z?; zu+$wCqy!{_iu#W-SeV3tx=2*T|D1^7dgg&T)<|fFi&t_rrYTj=Z|Rvub|qsJ zW&*|9DI8@)wg6W}QKo2e*6QScM_P0Xp zAx-w-Z9b-MgbPQV7As$!QT~F)Eu2;==NEDSGjN-f`B`=fYwL)sSSOwTBFA`=h~~$! zkwnftV^PQ$7myuU7|8UG$N9hUz++!Moi#{L`;-uuQkZ%MacFE&%fMJKNn}3d8CrQG zAMW%2+Q-RmA8-rHZN{fWbMU@sAJ=zW810iKFICzKM4s6iT$^qiBsZ5(C=s;J3qWwN zK1E7D%~qYI@XF!%3bzQ@E?kshJ(3m&R;o0lW6I-M^fovpa{e7}!Vo5Vx>PpVnWabC z&$%>X9l6F!>&{kHJ>bz$MxArapta?e1X_r9Q#<3jrnH0`Dk&Pp;P47QfHe^B!Eo^8 zq;xqB}g8i2owkDa^QXaRq+ zxeKXT2luB)X6uMkGxnNuJ^Nv&)1feG8ClKI@RxGv3iad^Lb^RPdk8g92Tiqypq3EKtQ%0L10GNv`F{?zpC@#k z_&EK{@%q_#bf)p-97{vTQg{R-AD_Yp9=R6^CvqPDf_6cz{}3affY7Hs=lh8A=U<%? zIm@+1d?wr?n|QvM5h*9P2rR%LEz7L1z9EqG8P&N_W<*kts2L}v1WH3*Q>O;V3@2^SZT!MOJ?J;QM z9QLPlZ_nYkANd2>JrO&%!JZ=JW5#^YqxT|IcqOQ{Pe9}u zMiM#g0ubUlG-5SlvL|TIc@Sa#lACa5nmkX8b)g2v=sxNRMV(1s@sqOLj1Oh1$~!m) zxkUup+^sVi7R*F&jmUV|=U_K%s^FH; zT`e9=KvR4F%Hi}a8;SBeo5DK2k(?9>B0%lbO&#fDB0qB zl>~H6w)i?pim~YDecKOS5`hge?$D?6)JJ1_^hCS#Wg#FhP2%f%jCKK`2FfmnE4#X& zETuwo|B5k+^n|v+ypp!ZbHvP!y2`X}yywYGJ{ha`2TNej7usS6GwjwG|$lA*Pq?xnQ^TSH@e zZ>?CUfXA~pgu6y=2*3214dK_|fW#xi(bt=!ueL;AB>_A$77yKKy+D5r9$^vb#huV+ zK(Y=ex?cFz5=M@hA|U@`0s~-I^u1gBtD|n zGo!f3%S*oU#HM@c80Ti|i=4FsB~zV-)HXXr+dK^d!1>TMU?5qYGKvln!o)N@`N`q% z=i8MT*Qc@g=0C9mpA<%>^MVYNQy4R5{x1%L0?K;~k0GTbSFIj~!uI*3wRWA;N>rKb zOCLw&b>MH#H_yD{4A8NDw;e14nKYhD$ZxSXqk`m|-i_+HMatnuJLgG@nGleo#ZX5n zbH^R6oDZ>e4si$eN4&xl;h3;aVTO_X&c?*en>gd1$VNftd0U2sZe=QRBaW$<_bu~43khatKNw8&l`n^rG@D-FrF&1=H1&y`s+Sgx zPMuUe4%_`TdCMM`k*`6**tWc74{B@*--xvQV&IO}lfI{~=x!EIeV3W?hakVJB{1bc zc_J0dU!W&!YIQ}xLGv^3lmPO36BB((5RaMiDZ!pSsLGM8hBl@kz;L<>5~(U z+AVZh6p^u_8D-l zpuBF5OPrpUiZh@sA}mH@MAhEvq-b>aPF9qA3ot=n<`m!rwNHtNCFgE2SIQ1^rC!9B z<4(P*1;JJQHOJMv+_{>kQw$kI`KpcF)ITEcd*aOeLreG%REW6RLw@wkH0aiM~t=L9W-Ymgken9-VZ(N20MEs{`muxMq{*BN-A9 z;)8kX{GE_oSYuaWC=XZ-0GjeCJ-k7vWTm9Z+pz4(hBb+_r(kMN?cp`#Loe=It>Iko z&*$^qv??ryr-2g2*yyNAOdF2H8tdZmZV_EB(MGqE1?owwqmV6Aa}5JnC2v={x>s4C zW#)KV2J^17P>p|mNhPgtu#H#9NGdMo6tGtOUk&{&KO;rB%b=sj1IoC;MjexjesPA_ zyA*ZXfZGn^S~krn^EoF(l=0}2kDZp%9+hPYVu$`2>d>j?QXUO;Rngvvc2qfqkfKhO zm&*hCYCE4!Eud_wmXS9p8lsW+Nz8AYQ9dz>)$zkQ+9vJQznS3~3Fl20t}}ADvUw7F z$38&h?tS*)W+Lxl_8!YiGCV;fLU2Y+?x_E^TCZYucDonB23k|CBYwguIfzB^YWK&r zD890n*8YR7aqN4wPl7VPSJhE9;Ri`D{G!-U7b6Z|4j96)np!Cvx&d|$YCQa$>p6Hl zH^X>Sb~nY|yJRSoxZU_ff#5=H=u1Pts{|?B1!a!D&!s)wL8S3+1u7b-Rd57oVnu|* zn6l2b5e#EUG=UwOXT2v%RbmZiK}Z4iLiCv=`C7;9 zI9-oP9Ek9RmF~;#Ud8g9zUwzHUD}3mum-TjGduz8P+qo*pboNzNs*#n!fu*XFW3&e zTm`LivYV4)g!AEfbP?#i0Rh;ef!=uUVY~*=k7I09kz2-|Y*XJfYc{Lm8h4=g0wfR- zn2c)4XL%`AiISJAoLfZId8wFiNTX$<{rguMY&y(`AkPU_l~pgOtO&+xgLP%~4V6Ln zi&{Z`0tsJ6Jq^;1pDll3^%A^9+h(Hr!s-Rr2Jvak;FyLn6^8`)H*he&Rva9Q?_CDR z#7{mXaIk#861iSGb!Gf49{ZhJ88lym4bCrX2-egF`QfCX`CcbFw;h+)#uro|I~K%O z^`wkoHZYstdkXR;*ukp$+J(V*LuGvfdaFDqNc;wtmk+37^nwqDUmL_%Sr^yVUlVM= zw{x#?Q4lh?^{Z>kV+(@#l4rcWp}Mvvh|fyl3*MC#9NpHK)^!WElF5X*egyPi&WgSj2x(b$Mm5VR3b=e132qn7g31 zA$A%lkB?%_s{{#IesOKhNwFY5Syx8-q7Xi88w=Lf_{UJ)5S$xtxYke|@9JhhuE^N0 zdk@yNc0}RB=Yi|5J;4Y)P#)6|yr#0grgA|LucNQ55neBXM3Lvno3ap}8LKX9IIX6- z0UzG056xS+(_#)IfLHq$#FdrM@b#;)!hG5b3Y12!K!ZR-@4bS>Yarlg&e4Y;9 zJ#*(Z>v^3RfpSY>%9vT?XQ7VBfIG(;xD~f_{J%ec(ZqhP@U){R35Zd+^x$=AyyHlY*@6!m6D>AKoPhlWz;spxlDEzs?LoWPyy*7W@ zlpm{b*99hij<$2P!uu7z`!UtnideOnj*F)u;7-Jj2wp@-^#H6aTd2>z0|O zJu6>dFER1qR~Yz_!W*>T?F#oLUpr=-`ae{7?pI8Fu)phQFyJ=~503J8;Y0&(JHx;& z1qKfGxBs-kaz0)oP)Q%JVp{1mHJX;Y?ABsR@kMmQ(=d~ zHifGcu2lGd!h00nrf`MAW`&Ikmnf{W>5A79g>?$M6}Bl{rEsOf2Nd3;aBGF3*A|7t z0)fC`S@@HK|M(q>|BR2*_z4=Hqwy&k|F*_wX?&f==V@HtK#cGLjmv!_gm2b(<2VHH z`!4>ozm*!lL*p-Ke5J+@!DF-h{T}~Wev-!D()a?6zpwEng$Up`9A#PlVU3@p@s~Az zp2iP5-;|%B@o^e2*SPg3@v}5+&-#^?Yux&2zNc~Pzxj#A?H-tyY*_!c>88KuH2$W> z-`2R@JAbHg>!&#!3}b!kzd2ds){k+X#;t#&MC0F5|HeYb55TiCWv2gsXFNL)pnULm zv&OeUKKT0y;|B%;_WO}5H9l&g$zP-KpvHfPcpmU;yV&G+X*{6u_cUIt@jV)E)Hrct zed~{zsB!C`xGJZj@tn*QI>xb+Kt4r66`>$m!{#@m!W^%}SSt-CdD z{Z1Vkw|=P}ja$E0F6IH-xBjU@ja$Fb0*zaL(d`W3=Scw~Ypzd+;ftAFYajX!$2$={^$JI0&%`x@V-^XH533$y(ejbFw%a0n=Wueb3^ zQ~wSvUwn>zBS!ZKY;LA1c_fxaJ^*_F^`PNU$6Ak8Dzk5{Urv*)a z35{ES{VI)HfBoAUxBk|B4Tldm{eSIbQ+}Mr@6_uR(=|Re&*ax=e5J;}ukmxicm95*@dGvftj7Da zy~&B{_z@(zjnT<-=uNtFTY*m)^EO2c3Iprok z&c^4Oc%jAvWhQ=wjn6UhS{v8$OErFvmcN;C=*(b+DgS-O(SPxYCjPLEk2dk&YP?(X zyENYR1(V;S@i|{K@qgHSt)G`~+MhGVD`$-yBFrpjCW>smzG)^O>Lv5kr;|;8mWCiYqhP`2hrAAK&ezg1ws0R zw)9~|J&)lYIKcFAreA0JG}H9`bUeRzGd+jt zi0?a4%Cx|`7O&rYrWY{1nCX>Ff1c@4rf+2Wn@r!s^kYmv z$@J4qA7T0>rcW{bAEsyG@2lhO@jj+6W_lshy-Z)pH2q74@$>_xZ(({X(+@Gdo9Tm0 zKhN|(n0||C`ZxdMGez(nXWN?J=0%h`ZlJwG2L>l z5O?5+k~6&8aMW<0;X%WrhA$enI6D5dhNFg6!wJJL8}7>saX0ciX!x4p+lB(`8ik*R zz6TszrT$O*MR$N(g;=xzyd69SZUevd2_e1%uEBnbI1BqW;`!MB5_cG8vA-t01^XJ} zA;WLqd9(+5IB1;x*D4J^#Po5!OlyC zxD(7T)XZM4d3(R+-{DW;^(8oyf}8OJ!FR!#>u{z7OCJ~FF7VI-A-)H$oGHY;;26GF zA^EBtq z*L)fIJOuk;d>8XDh0hh@5wMJOh_m7UBXHRe_Nw4Pd{01}hj@>I?Z}5XuSJNTfD-!- z;^Ro~r{Gp-;unw}@e1%~;DzAN!Hz-A682rYpf7=)xaAz&Z2;dueB#7MHQ)6y&A{-K z;mz1zkl(pzN8*U?y7d(po`3-m(_U*(zthYp(H;5+C;l7bl$b+0#2N3^+>CU74}C7u{R4Or^Z{@O(j(ryPLt-W^oRx2<4@pcz(0eX;304j^*Ib~hW-mEhJ-i*&NaNrkmm8DuwOby^G(D3 z;9p_C3HcoZ-!xo=`jFm&{E3HA&S$_Oq(|I|e4hpPykCgtz;5*a^WYV0gm?j@b@)Z_ z%qN974z?`RycO+o0y;Ze^S%p&cnSL13pE#@JxQ;|I4AzIU-MRsrkPB26j10yx{-H0 zx3GdN4GbJLmIjAx&8Y;R&9wR>fy`t0)y9>ftu;HiGCLrb4Xj?;w|wc^LAkWAZ$Jg1 zP$TN0%PV{Mq*@yhpB^%8_(E6KMjQ1)WxTAi%5;#4d_AY+UFYUj<;k;$ti`}}b7LDw z_mWm0(JGm&WTs1hmK`;c=`L2iOly=+w%)XLGi_c`;^TR#KDEtm$gRqBc}09vE(@;T zn82U4yeUDl`BlV%Te1BNXwE}-YDHMw_MLQtzlcN_0E=T56Y_=ESu|+Y8J`mb4^nv zPxZY#+FH+JtkJ@%H1E@1#4iSp?*`dim{-&~7*1=urEVkkB4%1?L`!wMA?tZwt^<9p z248=sxvMUx=jZa%a2^jZ{Ig!Jz2Q~7NeU1fjvI25WSvo^thpuJP(U$rV^fv0tx!?# zsiZp`XRB1`9Jo$l>XNqGbf?u?q4zW!EcBm7n|0WdOtVFLqBh2y?9{z{%?>2q$-O2# zHX9YPO?$4J=0o49HV;jWSe8+*>d|TRkaj$4??iJv%P5-Wd4OHTL} zWWKtW`CBoWx9;QkYth6LH-)_7COKR!h7-uJ?uoQ>@&!r0A5FZ~%!Io^qi(?tgtQlp zNSa{H)HLebxhd^>)~UI9lp2;4R8L}U$IQ3F%XLes78*N=nX#3Q-DU5?U`22OOkr8G zlBHd{^SEqNZp3yElUKPXOg0<~SY|RAyUxf$$*jfwO-4;mqa4P!#WK@*s#tBUG3O|= z$=o}~Emf07i*|yk5=XCeIw;)d zrGvuPy2<{XhC*PQF&*AraMeD43J@ov;)U} zt0tZDCfZGTWmD=fup8G5CFXkEQk3O}KaAah9$wa?!=3Qz+!i|-S-(zfhflfOS6^zWu8iw|;ijl?kZD+aAy=%vQ*aIN@Q)6)Qs8#WQwfh#O-&_P9AbB_xeFUL*~Ak&4^&MmKIz zYj508u2ibg0VWmFG;bA0ZP!!&dXkHq)0Ws$Cgke1D{yKfUZsv}(UTl>Mw*!DkVkDy z%L}nQ?gKJE;mB$uaOId6)EiDo&}xb6npn8;c%2)d`SppEY8yTWxB)tb^ynTjN-A&) z87tP*uP3rxDIi1}te;CpR@I?vE+=XVo~DMfVQYO#MM;!DS+lcQ?P`6v=EeB z{LrKGQ#YusD3w&jsrBUWrn(zuQpO3(It4h3IJHnx_a_QOhGZUO(Mj7h$l})7P620N^+Z?P&7)~MW!9w#AMqwc&!!KR z0bOf?@PxKDLUpTh@STZBlyUpHy3xkK6Jkj8fWD@0;zs5uVq^>QV_wmE1};vQc;{43 z)RXyI!R/tmp/ZeroTierOneUninstall.log 2>&1 - exit 0 -fi +export PATH="$zthome:/bin:/usr/bin:/sbin:/usr/sbin" # Launch ZeroTier One (not as daemon... launchd monitors it) exec zerotier-one diff --git a/ext/installfiles/mac/postinst.sh b/ext/installfiles/mac/postinst.sh index 987e131b7..47d9ddd96 100755 --- a/ext/installfiles/mac/postinst.sh +++ b/ext/installfiles/mac/postinst.sh @@ -6,10 +6,12 @@ launchctl unload /Library/LaunchDaemons/com.zerotier.one.plist >>/dev/null 2>&1 cd "/Library/Application Support/ZeroTier/One" rm -rf node.log node.log.old root-topology shutdownIfUnreadable autoupdate.log updates.d +chown -R 0 tap.kext +chgrp -R 0 tap.kext if [ ! -f authtoken.secret ]; then head -c 4096 /dev/urandom | md5 | head -c 24 >authtoken.secret - chown root authtoken.secret - chgrp wheel authtoken.secret + chown 0 authtoken.secret + chgrp 0 authtoken.secret chmod 0600 authtoken.secret fi rm -f zerotier-cli zerotier-idtool From 906e49ff7200f15d99d0bd2f9d87f484738929b0 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Nov 2015 16:22:41 -0800 Subject: [PATCH 297/314] Add make option ZT_ENABLE_CLUSTER and disable it in default Linux build. --- make-freebsd.mk | 5 +++++ make-linux.mk | 7 ++++++- make-mac.mk | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/make-freebsd.mk b/make-freebsd.mk index 1322dd53b..022540d28 100644 --- a/make-freebsd.mk +++ b/make-freebsd.mk @@ -13,6 +13,11 @@ ifeq ($(ZT_OFFICIAL_RELEASE),1) DEFS+=-DZT_OFFICIAL_RELEASE endif +# Build with ZT_ENABLE_CLUSTER=1 to build with cluster support +ifeq ($(ZT_ENABLE_CLUSTER),1) + DEFS+=-DZT_ENABLE_CLUSTER +endif + # "make debug" is a shortcut for this ifeq ($(ZT_DEBUG),1) DEFS+=-DZT_TRACE diff --git a/make-linux.mk b/make-linux.mk index 37e7b7ef6..339b548d1 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -29,7 +29,7 @@ endif UNAME_M=$(shell $(CC) -dumpmachine | cut -d '-' -f 1) INCLUDES= -DEFS=-DZT_ENABLE_CLUSTER +DEFS= LDLIBS?= include objects.mk @@ -70,6 +70,11 @@ ifeq ($(ZT_ENABLE_NETWORK_CONTROLLER),1) OBJS+=controller/SqliteNetworkController.o endif +# Build with ZT_ENABLE_CLUSTER=1 to build with cluster support +ifeq ($(ZT_ENABLE_CLUSTER),1) + DEFS+=-DZT_ENABLE_CLUSTER +endif + # "make debug" is a shortcut for this ifeq ($(ZT_DEBUG),1) DEFS+=-DZT_TRACE diff --git a/make-mac.mk b/make-mac.mk index 174216fb1..6ea238597 100644 --- a/make-mac.mk +++ b/make-mac.mk @@ -32,6 +32,11 @@ ifeq ($(ZT_OFFICIAL_RELEASE),1) CODESIGN_INSTALLER_CERT="Developer ID Installer: ZeroTier Networks LLC (8ZD9JUCZ4V)" endif +# Build with ZT_ENABLE_CLUSTER=1 to build with cluster support +ifeq ($(ZT_ENABLE_CLUSTER),1) + DEFS+=-DZT_ENABLE_CLUSTER +endif + ifeq ($(ZT_AUTO_UPDATE),1) DEFS+=-DZT_AUTO_UPDATE endif From 7a53ecac86a24db1ffae066355eef7f3fd59ba90 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Nov 2015 17:18:44 -0800 Subject: [PATCH 298/314] UI stuff. --- ui/zerotier.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/zerotier.css b/ui/zerotier.css index e5c588381..9f72024ac 100644 --- a/ui/zerotier.css +++ b/ui/zerotier.css @@ -37,7 +37,7 @@ html,body { width: 100%; height: 100%; display: table-cell; - border-bottom: 1px solid #000000; + border-bottom: 1px solid #cfcfcf; } .zeroTierNode > .middle > .middleCell > .middleScroll { display: block; @@ -72,8 +72,8 @@ html,body { width: 100%; overflow: hidden; display: table-row; - background: #000000; - color: #ffffff; + color: #000000; + background: #dfdfdf; } .zeroTierNode > .bottom > .left { text-align: left; From 37acd375d6e7476f4eb55a25c4ddb6ddeca9d6c8 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Nov 2015 18:10:40 -0800 Subject: [PATCH 299/314] Fix 64-bit int warning. --- service/ClusterGeoIpService.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/service/ClusterGeoIpService.cpp b/service/ClusterGeoIpService.cpp index 5e4780b40..f646fe994 100644 --- a/service/ClusterGeoIpService.cpp +++ b/service/ClusterGeoIpService.cpp @@ -44,8 +44,8 @@ #include "../node/Utils.hpp" #include "../osdep/OSUtils.hpp" -// Same as in cluster-geo.js but unlike cluster-geo this cache is volatile -#define ZT_CLUSTERGEOIPSERVICE_INTERNAL_CACHE_TTL (60 * 60 * 24 * 120 * 1000) +// 120 days +#define ZT_CLUSTERGEOIPSERVICE_INTERNAL_CACHE_TTL 10368000000ULL namespace ZeroTier { From a13a21377c2d028d81b5cb26567ebe23bbb2e891 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Nov 2015 18:18:08 -0800 Subject: [PATCH 300/314] Delete pre-build miniupnpc for Linux and Mac -- will add Make rules to build from source and include source in ext/ --- ext/bin/miniupnpc/linux-arm32/libminiupnpc.a | Bin 62698 -> 0 bytes ext/bin/miniupnpc/linux-x64/libminiupnpc.a | Bin 87942 -> 0 bytes ext/bin/miniupnpc/linux-x86/libminiupnpc.a | Bin 67782 -> 0 bytes ext/bin/miniupnpc/mac-x64/libminiupnpc.a | Bin 95616 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ext/bin/miniupnpc/linux-arm32/libminiupnpc.a delete mode 100644 ext/bin/miniupnpc/linux-x64/libminiupnpc.a delete mode 100644 ext/bin/miniupnpc/linux-x86/libminiupnpc.a delete mode 100644 ext/bin/miniupnpc/mac-x64/libminiupnpc.a diff --git a/ext/bin/miniupnpc/linux-arm32/libminiupnpc.a b/ext/bin/miniupnpc/linux-arm32/libminiupnpc.a deleted file mode 100644 index 4983f6280ac2d0b955033b76f25abc97b74772e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62698 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 Vbp^|TW4^>2hnb4yX_}<6|1XtcGFSir diff --git a/ext/bin/miniupnpc/linux-x86/libminiupnpc.a b/ext/bin/miniupnpc/linux-x86/libminiupnpc.a deleted file mode 100644 index 99cbef212b1e77d2bfe7e8763bc396669d5c8153..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67782 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 diff --git a/ext/bin/miniupnpc/mac-x64/libminiupnpc.a b/ext/bin/miniupnpc/mac-x64/libminiupnpc.a deleted file mode 100644 index 3c2e528d1d462f057e9edfeb824fd2a5e54c3002..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95616 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 HH01R^+(s$* From cf6164e8477aaa65edd07d136ef1991288feff99 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Nov 2015 18:28:55 -0800 Subject: [PATCH 301/314] Build libminiupnpc from source now, and update version. --- .gitignore | 3 + ext/miniupnpc/CMakeLists.txt | 178 +++ ext/miniupnpc/Changelog.txt | 667 +++++++++ ext/miniupnpc/LICENSE | 27 + ext/miniupnpc/MANIFEST.in | 5 + ext/miniupnpc/Makefile | 379 +++++ ext/miniupnpc/Makefile.mingw | 98 ++ ext/miniupnpc/README | 61 + ext/miniupnpc/VERSION | 1 + ext/miniupnpc/apiversions.txt | 167 +++ ext/miniupnpc/codelength.h | 54 + ext/miniupnpc/connecthostport.c | 264 ++++ ext/miniupnpc/connecthostport.h | 18 + ext/miniupnpc/external-ip.sh | 4 + ext/miniupnpc/igd_desc_parse.c | 123 ++ ext/miniupnpc/igd_desc_parse.h | 49 + ext/miniupnpc/java/JavaBridgeTest.java | 97 ++ ext/miniupnpc/java/testjava.bat | 8 + ext/miniupnpc/java/testjava.sh | 8 + ext/miniupnpc/listdevices.c | 110 ++ ext/miniupnpc/man3/miniupnpc.3 | 55 + ext/miniupnpc/mingw32make.bat | 8 + ext/miniupnpc/minihttptestserver.c | 655 +++++++++ ext/miniupnpc/minisoap.c | 123 ++ ext/miniupnpc/minisoap.h | 15 + ext/miniupnpc/minissdpc.c | 849 +++++++++++ ext/miniupnpc/minissdpc.h | 58 + ext/miniupnpc/miniupnpc.c | 684 +++++++++ ext/miniupnpc/miniupnpc.def | 45 + ext/miniupnpc/miniupnpc.h | 152 ++ ext/miniupnpc/miniupnpc_declspec.h | 21 + ext/miniupnpc/miniupnpcmodule.c | 695 +++++++++ ext/miniupnpc/miniupnpcstrings.h.cmake | 15 + ext/miniupnpc/miniupnpcstrings.h.in | 23 + ext/miniupnpc/miniupnpctypes.h | 19 + ext/miniupnpc/miniwget.c | 626 +++++++++ ext/miniupnpc/miniwget.h | 30 + ext/miniupnpc/minixml.c | 229 +++ ext/miniupnpc/minixml.h | 37 + ext/miniupnpc/minixmlvalid.c | 163 +++ ext/miniupnpc/msvc/miniupnpc.sln | 29 + ext/miniupnpc/msvc/miniupnpc.vcproj | 283 ++++ ext/miniupnpc/msvc/upnpc-static.vcproj | 195 +++ ext/miniupnpc/portlistingparse.c | 172 +++ ext/miniupnpc/portlistingparse.h | 65 + ext/miniupnpc/pymoduletest.py | 88 ++ ext/miniupnpc/receivedata.c | 105 ++ ext/miniupnpc/receivedata.h | 19 + ext/miniupnpc/setup.py | 28 + ext/miniupnpc/setupmingw32.py | 28 + .../testdesc/linksys_WAG200G_desc.values | 14 + .../testdesc/linksys_WAG200G_desc.xml | 110 ++ .../testdesc/new_LiveBox_desc.values | 20 + ext/miniupnpc/testdesc/new_LiveBox_desc.xml | 90 ++ ext/miniupnpc/testigddescparse.c | 187 +++ ext/miniupnpc/testminiwget.c | 53 + ext/miniupnpc/testminiwget.sh | 96 ++ ext/miniupnpc/testminixml.c | 89 ++ ext/miniupnpc/testportlistingparse.c | 151 ++ .../DeletePortMapping.namevalue | 3 + .../testreplyparse/DeletePortMapping.xml | 6 + .../GetExternalIPAddress.namevalue | 2 + .../testreplyparse/GetExternalIPAddress.xml | 2 + .../GetSpecificPortMappingEntryReq.namevalue | 3 + .../GetSpecificPortMappingEntryReq.xml | 3 + .../GetSpecificPortMappingEntryResp.namevalue | 5 + .../GetSpecificPortMappingEntryResp.xml | 2 + .../SetDefaultConnectionService.namevalue | 1 + .../SetDefaultConnectionService.xml | 1 + ext/miniupnpc/testreplyparse/readme.txt | 7 + ext/miniupnpc/testupnpigd.py | 84 ++ ext/miniupnpc/testupnpreplyparse.c | 96 ++ ext/miniupnpc/testupnpreplyparse.sh | 14 + ext/miniupnpc/updateminiupnpcstrings.sh | 53 + ext/miniupnpc/upnpc.c | 833 +++++++++++ ext/miniupnpc/upnpcommands.c | 1237 +++++++++++++++++ ext/miniupnpc/upnpcommands.h | 348 +++++ ext/miniupnpc/upnpdev.c | 23 + ext/miniupnpc/upnpdev.h | 36 + ext/miniupnpc/upnperrors.c | 107 ++ ext/miniupnpc/upnperrors.h | 26 + ext/miniupnpc/upnpreplyparse.c | 197 +++ ext/miniupnpc/upnpreplyparse.h | 63 + ext/miniupnpc/wingenminiupnpcstrings.c | 83 ++ make-mac.mk | 14 +- 85 files changed, 11889 insertions(+), 5 deletions(-) create mode 100644 ext/miniupnpc/CMakeLists.txt create mode 100644 ext/miniupnpc/Changelog.txt create mode 100644 ext/miniupnpc/LICENSE create mode 100644 ext/miniupnpc/MANIFEST.in create mode 100644 ext/miniupnpc/Makefile create mode 100644 ext/miniupnpc/Makefile.mingw create mode 100644 ext/miniupnpc/README create mode 100644 ext/miniupnpc/VERSION create mode 100644 ext/miniupnpc/apiversions.txt create mode 100644 ext/miniupnpc/codelength.h create mode 100644 ext/miniupnpc/connecthostport.c create mode 100644 ext/miniupnpc/connecthostport.h create mode 100755 ext/miniupnpc/external-ip.sh create mode 100644 ext/miniupnpc/igd_desc_parse.c create mode 100644 ext/miniupnpc/igd_desc_parse.h create mode 100644 ext/miniupnpc/java/JavaBridgeTest.java create mode 100755 ext/miniupnpc/java/testjava.bat create mode 100755 ext/miniupnpc/java/testjava.sh create mode 100644 ext/miniupnpc/listdevices.c create mode 100644 ext/miniupnpc/man3/miniupnpc.3 create mode 100644 ext/miniupnpc/mingw32make.bat create mode 100644 ext/miniupnpc/minihttptestserver.c create mode 100644 ext/miniupnpc/minisoap.c create mode 100644 ext/miniupnpc/minisoap.h create mode 100644 ext/miniupnpc/minissdpc.c create mode 100644 ext/miniupnpc/minissdpc.h create mode 100644 ext/miniupnpc/miniupnpc.c create mode 100644 ext/miniupnpc/miniupnpc.def create mode 100644 ext/miniupnpc/miniupnpc.h create mode 100644 ext/miniupnpc/miniupnpc_declspec.h create mode 100644 ext/miniupnpc/miniupnpcmodule.c create mode 100644 ext/miniupnpc/miniupnpcstrings.h.cmake create mode 100644 ext/miniupnpc/miniupnpcstrings.h.in create mode 100644 ext/miniupnpc/miniupnpctypes.h create mode 100644 ext/miniupnpc/miniwget.c create mode 100644 ext/miniupnpc/miniwget.h create mode 100644 ext/miniupnpc/minixml.c create mode 100644 ext/miniupnpc/minixml.h create mode 100644 ext/miniupnpc/minixmlvalid.c create mode 100644 ext/miniupnpc/msvc/miniupnpc.sln create mode 100644 ext/miniupnpc/msvc/miniupnpc.vcproj create mode 100644 ext/miniupnpc/msvc/upnpc-static.vcproj create mode 100644 ext/miniupnpc/portlistingparse.c create mode 100644 ext/miniupnpc/portlistingparse.h create mode 100644 ext/miniupnpc/pymoduletest.py create mode 100644 ext/miniupnpc/receivedata.c create mode 100644 ext/miniupnpc/receivedata.h create mode 100644 ext/miniupnpc/setup.py create mode 100644 ext/miniupnpc/setupmingw32.py create mode 100644 ext/miniupnpc/testdesc/linksys_WAG200G_desc.values create mode 100644 ext/miniupnpc/testdesc/linksys_WAG200G_desc.xml create mode 100644 ext/miniupnpc/testdesc/new_LiveBox_desc.values create mode 100644 ext/miniupnpc/testdesc/new_LiveBox_desc.xml create mode 100644 ext/miniupnpc/testigddescparse.c create mode 100644 ext/miniupnpc/testminiwget.c create mode 100755 ext/miniupnpc/testminiwget.sh create mode 100644 ext/miniupnpc/testminixml.c create mode 100644 ext/miniupnpc/testportlistingparse.c create mode 100644 ext/miniupnpc/testreplyparse/DeletePortMapping.namevalue create mode 100644 ext/miniupnpc/testreplyparse/DeletePortMapping.xml create mode 100644 ext/miniupnpc/testreplyparse/GetExternalIPAddress.namevalue create mode 100644 ext/miniupnpc/testreplyparse/GetExternalIPAddress.xml create mode 100644 ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryReq.namevalue create mode 100644 ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryReq.xml create mode 100644 ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryResp.namevalue create mode 100644 ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryResp.xml create mode 100644 ext/miniupnpc/testreplyparse/SetDefaultConnectionService.namevalue create mode 100644 ext/miniupnpc/testreplyparse/SetDefaultConnectionService.xml create mode 100644 ext/miniupnpc/testreplyparse/readme.txt create mode 100755 ext/miniupnpc/testupnpigd.py create mode 100644 ext/miniupnpc/testupnpreplyparse.c create mode 100755 ext/miniupnpc/testupnpreplyparse.sh create mode 100755 ext/miniupnpc/updateminiupnpcstrings.sh create mode 100644 ext/miniupnpc/upnpc.c create mode 100644 ext/miniupnpc/upnpcommands.c create mode 100644 ext/miniupnpc/upnpcommands.h create mode 100644 ext/miniupnpc/upnpdev.c create mode 100644 ext/miniupnpc/upnpdev.h create mode 100644 ext/miniupnpc/upnperrors.c create mode 100644 ext/miniupnpc/upnperrors.h create mode 100644 ext/miniupnpc/upnpreplyparse.c create mode 100644 ext/miniupnpc/upnpreplyparse.h create mode 100644 ext/miniupnpc/wingenminiupnpcstrings.c diff --git a/.gitignore b/.gitignore index f7a41b45c..0ddbbb882 100755 --- a/.gitignore +++ b/.gitignore @@ -44,6 +44,9 @@ Thumbs.db *.pid *.pkg *.o +*.a +*.dylib +*.so *.o-* *.core *.deb diff --git a/ext/miniupnpc/CMakeLists.txt b/ext/miniupnpc/CMakeLists.txt new file mode 100644 index 000000000..dacb1f692 --- /dev/null +++ b/ext/miniupnpc/CMakeLists.txt @@ -0,0 +1,178 @@ +cmake_minimum_required (VERSION 2.6) + +project (miniupnpc C) +set (MINIUPNPC_VERSION 1.9) +set (MINIUPNPC_API_VERSION 15) + +if (NOT CMAKE_BUILD_TYPE) + if (WIN32) + set (DEFAULT_BUILD_TYPE MinSizeRel) + else (WIN32) + set (DEFAULT_BUILD_TYPE RelWithDebInfo) + endif(WIN32) + set (CMAKE_BUILD_TYPE ${DEFAULT_BUILD_TYPE} CACHE STRING + "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." + FORCE) +endif() + +option (UPNPC_BUILD_STATIC "Build static library" TRUE) +option (UPNPC_BUILD_SHARED "Build shared library" TRUE) +if (NOT WIN32) + option (UPNPC_BUILD_TESTS "Build test executables" TRUE) +endif (NOT WIN32) +option (NO_GETADDRINFO "Define NO_GETADDRINFO" FALSE) + +mark_as_advanced (NO_GETADDRINFO) + +if (NO_GETADDRINFO) + add_definitions (-DNO_GETADDRINFO) +endif (NO_GETADDRINFO) + +if (NOT WIN32) + add_definitions (-DMINIUPNPC_SET_SOCKET_TIMEOUT) + add_definitions (-D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112L) +else (NOT WIN32) + add_definitions (-D_WIN32_WINNT=0x0501) # XP or higher for getnameinfo and friends +endif (NOT WIN32) + +if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") + add_definitions (-D_DARWIN_C_SOURCE) +endif () + +# Set compiler specific build flags +if (CMAKE_COMPILER_IS_GNUC) + # Set our own default flags at first run. + if (NOT CONFIGURED) + + if (NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS") + set (_PIC -fPIC) + endif (CMAKE_SYSTEM_NAME STREQUAL "AmigaOS") + + set (CMAKE_C_FLAGS "${_PIC} -Wall $ENV{CFLAGS}" # CMAKE_C_FLAGS gets appended to the other C flags + CACHE STRING "Flags used by the C compiler during normal builds." FORCE) + set (CMAKE_C_FLAGS_DEBUG "-g -DDDEBUG" + CACHE STRING "Flags used by the C compiler during debug builds." FORCE) + set (CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG" + CACHE STRING "Flags used by the C compiler during release builds." FORCE) + set (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG" + CACHE STRING "Flags used by the C compiler during release builds." FORCE) + set (CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG" + CACHE STRING "Flags used by the C compiler during release builds." FORCE) + + endif (NOT CONFIGURED) +endif () + +configure_file (${CMAKE_SOURCE_DIR}/miniupnpcstrings.h.cmake ${CMAKE_BINARY_DIR}/miniupnpcstrings.h) +include_directories (${CMAKE_BINARY_DIR}) + +set (MINIUPNPC_SOURCES + igd_desc_parse.c + miniupnpc.c + minixml.c + minisoap.c + minissdpc.c + miniwget.c + upnpc.c + upnpcommands.c + upnpdev.c + upnpreplyparse.c + upnperrors.c + connecthostport.c + portlistingparse.c + receivedata.c +) + +if (NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS") + set (MINIUPNPC_SOURCES ${MINIUPNPC_SOURCES} minissdpc.c) +endif (NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS") + +if (WIN32) + set_source_files_properties (${MINIUPNPC_SOURCES} PROPERTIES + COMPILE_DEFINITIONS "MINIUPNP_STATICLIB;MINIUPNP_EXPORTS" + ) +endif (WIN32) + +if (WIN32) + find_library (WINSOCK2_LIBRARY NAMES ws2_32 WS2_32 Ws2_32) + find_library (IPHLPAPI_LIBRARY NAMES iphlpapi) + set (LDLIBS ${WINSOCK2_LIBRARY} ${IPHLPAPI_LIBRARY} ${LDLIBS}) +#elseif (CMAKE_SYSTEM_NAME STREQUAL "Solaris") +# find_library (SOCKET_LIBRARY NAMES socket) +# find_library (NSL_LIBRARY NAMES nsl) +# find_library (RESOLV_LIBRARY NAMES resolv) +# set (LDLIBS ${SOCKET_LIBRARY} ${NSL_LIBRARY} ${RESOLV_LIBRARY} ${LDLIBS}) +endif (WIN32) + +if (NOT UPNPC_BUILD_STATIC AND NOT UPNPC_BUILD_SHARED) + message (FATAL "Both shared and static libraries are disabled!") +endif (NOT UPNPC_BUILD_STATIC AND NOT UPNPC_BUILD_SHARED) + +if (UPNPC_BUILD_STATIC) + add_library (upnpc-static STATIC ${MINIUPNPC_SOURCES}) + set_target_properties (upnpc-static PROPERTIES OUTPUT_NAME "miniupnpc") + target_link_libraries (upnpc-static ${LDLIBS}) + set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} upnpc-static) + set (UPNPC_LIBRARY_TARGET upnpc-static) +endif (UPNPC_BUILD_STATIC) + +if (UPNPC_BUILD_SHARED) + add_library (upnpc-shared SHARED ${MINIUPNPC_SOURCES}) + set_target_properties (upnpc-shared PROPERTIES OUTPUT_NAME "miniupnpc") + set_target_properties (upnpc-shared PROPERTIES VERSION ${MINIUPNPC_VERSION}) + set_target_properties (upnpc-shared PROPERTIES SOVERSION ${MINIUPNPC_API_VERSION}) + target_link_libraries (upnpc-shared ${LDLIBS}) + set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} upnpc-shared) + set (UPNPC_LIBRARY_TARGET upnpc-shared) +endif (UPNPC_BUILD_SHARED) + +if (UPNPC_BUILD_TESTS) + add_executable (testminixml testminixml.c minixml.c igd_desc_parse.c) + target_link_libraries (testminixml ${LDLIBS}) + + add_executable (minixmlvalid minixmlvalid.c minixml.c) + target_link_libraries (minixmlvalid ${LDLIBS}) + + add_executable (testupnpreplyparse testupnpreplyparse.c + minixml.c upnpreplyparse.c) + target_link_libraries (testupnpreplyparse ${LDLIBS}) + + add_executable (testigddescparse testigddescparse.c + igd_desc_parse.c minixml.c miniupnpc.c miniwget.c minissdpc.c + upnpcommands.c upnpreplyparse.c minisoap.c connecthostport.c + portlistingparse.c receivedata.c + ) + target_link_libraries (testigddescparse ${LDLIBS}) + + add_executable (testminiwget testminiwget.c + miniwget.c miniupnpc.c minisoap.c upnpcommands.c minissdpc.c + upnpreplyparse.c minixml.c igd_desc_parse.c connecthostport.c + portlistingparse.c receivedata.c + ) + target_link_libraries (testminiwget ${LDLIBS}) + +# set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} testminixml minixmlvalid testupnpreplyparse testigddescparse testminiwget) +endif (UPNPC_BUILD_TESTS) + + +install (TARGETS ${UPNPC_INSTALL_TARGETS} + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX} +) +install (FILES + miniupnpc.h + miniwget.h + upnpcommands.h + igd_desc_parse.h + upnpreplyparse.h + upnperrors.h + upnpdev.h + miniupnpctypes.h + portlistingparse.h + miniupnpc_declspec.h + DESTINATION include/miniupnpc +) + +set (CONFIGURED YES CACHE INTERNAL "") + +# vim: ts=2:sw=2 diff --git a/ext/miniupnpc/Changelog.txt b/ext/miniupnpc/Changelog.txt new file mode 100644 index 000000000..bef61f59e --- /dev/null +++ b/ext/miniupnpc/Changelog.txt @@ -0,0 +1,667 @@ +$Id: Changelog.txt,v 1.219 2015/10/26 17:05:06 nanard Exp $ +miniUPnP client Changelog. + +2015/10/26: + snprintf() overflow check. check overflow in simpleUPnPcommand2() + +2015/10/25: + fix compilation with old macs + fix compilation with mingw32 (for Appveyor) + fix python module for python <= 2.3 + +2015/10/08: + Change sameport to localport + see https://github.com/miniupnp/miniupnp/pull/120 + increments API_VERSION to 15 + +2015/09/15: + Fix buffer overflow in igd_desc_parse.c/IGDstartelt() + Discovered by Aleksandar Nikolic of Cisco Talos + +2015/08/28: + move ssdpDiscoverDevices() to minissdpc.c + +2015/08/27: + avoid unix socket leak in getDevicesFromMiniSSDPD() + +2015/08/16: + Also accept "Up" as ConnectionStatus value + +2015/07/23: + split getDevicesFromMiniSSDPD + add ttl argument to upnpDiscover() functions + increments API_VERSION to 14 + +2015/07/22: + Read USN from SSDP messages. + +2015/07/15: + Check malloc/calloc + +2015/06/16: + update getDevicesFromMiniSSDPD() to process longer minissdpd + responses + +2015/05/22: + add searchalltypes param to upnpDiscoverDevices() + increments API_VERSION to 13 + +2015/04/30: + upnpc: output version on the terminal + +2015/04/27: + _BSD_SOURCE is deprecated in favor of _DEFAULT_SOURCE + fix CMakeLists.txt COMPILE_DEFINITIONS + fix getDevicesFromMiniSSDPD() not setting scope_id + improve -r command of upnpc command line tool + +2014/11/17: + search all : + upnpDiscoverDevices() / upnpDiscoverAll() functions + listdevices executable + increment API_VERSION to 12 + validate igd_desc_parse + +2014/11/13: + increment API_VERSION to 11 + +2014/11/05: + simplified function GetUPNPUrls() + +2014/09/11: + use remoteHost arg of DeletePortMapping + +2014/09/06: + Fix python3 build + +2014/07/01: + Fix parsing of IGD2 root descriptions + +2014/06/10: + rename LIBSPEC to MINIUPNP_LIBSPEC + +2014/05/15: + Add support for IGD2 AddAnyPortMapping and DeletePortMappingRange + +2014/02/05: + handle EINPROGRESS after connect() + +2014/02/03: + minixml now handle XML comments + +VERSION 1.9 : released 2014/01/31 + +2014/01/31: + added argument remoteHost to UPNP_GetSpecificPortMappingEntry() + increment API_VERSION to 10 + +2013/12/09: + --help and -h arguments in upnpc.c + +2013/10/07: + fixed potential buffer overrun in miniwget.c + Modified UPNP_GetValidIGD() to check for ExternalIpAddress + +2013/08/01: + define MAXHOSTNAMELEN if not already done + +2013/06/06: + update upnpreplyparse to allow larger values (128 chars instead of 64) + +2013/05/14: + Update upnpreplyparse to take into account "empty" elements + validate upnpreplyparse.c code with "make check" + +2013/05/03: + Fix Solaris build thanks to Maciej Małecki + +2013/04/27: + Fix testminiwget.sh for BSD + +2013/03/23: + Fixed Makefile for *BSD + +2013/03/11: + Update Makefile to use JNAerator version 0.11 + +2013/02/11: + Fix testminiwget.sh for use with dash + Use $(DESTDIR) in Makefile + +VERSION 1.8 : released 2013/02/06 + +2012/10/16: + fix testminiwget with no IPv6 support + +2012/09/27: + Rename all include guards to not clash with C99 + (7.1.3 Reserved identifiers). + +2012/08/30: + Added -e option to upnpc program (set description for port mappings) + +2012/08/29: + Python 3 support (thanks to Christopher Foo) + +2012/08/11: + Fix a memory link in UPNP_GetValidIGD() + Try to handle scope id in link local IPv6 URL under MS Windows + +2012/07/20: + Disable HAS_IP_MREQN on DragonFly BSD + +2012/06/28: + GetUPNPUrls() now inserts scope into link-local IPv6 addresses + +2012/06/23: + More error return checks in upnpc.c + #define MINIUPNPC_GET_SRC_ADDR enables receivedata() to get scope_id + parseURL() now parses IPv6 addresses scope + new parameter for miniwget() : IPv6 address scope + increment API_VERSION to 9 + +2012/06/20: + fixed CMakeLists.txt + +2012/05/29 + Improvements in testminiwget.sh + +VERSION 1.7 : released 2012/05/24 + +2012/05/01: + Cleanup settings of CFLAGS in Makefile + Fix signed/unsigned integer comparaisons + +2012/04/20: + Allow to specify protocol with TCP or UDP for -A option + +2012/04/09: + Only try to fetch XML description once in UPNP_GetValidIGD() + Added -ansi flag to compilation, and fixed C++ comments to ANSI C comments. + +2012/04/05: + minor improvements to minihttptestserver.c + +2012/03/15: + upnperrors.c returns valid error string for unrecognized error codes + +2012/03/08: + make minihttptestserver listen on loopback interface instead of 0.0.0.0 + +2012/01/25: + Maven installation thanks to Alexey Kuznetsov + +2012/01/21: + Replace WIN32 macro by _WIN32 + +2012/01/19: + Fixes in java wrappers thanks to Alexey Kuznetsov : + https://github.com/axet/miniupnp/tree/fix-javatest/miniupnpc + Make and install .deb packages (python) thanks to Alexey Kuznetsov : + https://github.com/axet/miniupnp/tree/feature-debbuild/miniupnpc + +2012/01/07: + The multicast interface can now be specified by name with IPv4. + +2012/01/02: + Install man page + +2011/11/25: + added header to Port Mappings list in upnpc.c + +2011/10/09: + Makefile : make clean now removes jnaerator generated files. + MINIUPNPC_VERSION in miniupnpc.h (updated by make) + +2011/09/12: + added rootdescURL to UPNPUrls structure. + +VERSION 1.6 : released 2011/07/25 + +2011/07/25: + Update doc for version 1.6 release + +2011/06/18: + Fix for windows in miniwget.c + +2011/06/04: + display remote host in port mapping listing + +2011/06/03: + Fix in make install : there were missing headers + +2011/05/26: + Fix the socket leak in miniwget thanks to Richard Marsh. + Permit to add leaseduration in -a command. Display lease duration. + +2011/05/15: + Try both LinkLocal and SiteLocal multicast address for SSDP in IPv6 + +2011/05/09: + add a test in testminiwget.sh. + more error checking in miniwget.c + +2011/05/06: + Adding some tool to test and validate miniwget.c + simplified and debugged miniwget.c + +2011/04/11: + moving ReceiveData() to a receivedata.c file. + parsing presentation url + adding IGD v2 WANIPv6FirewallControl commands + +2011/04/10: + update of miniupnpcmodule.c + comments in miniwget.c, update in testminiwget + Adding errors codes from IGD v2 + new functions in upnpc.c for IGD v2 + +2011/04/09: + Support for litteral ip v6 address in miniwget + +2011/04/08: + Adding support for urn:schemas-upnp-org:service:WANIPv6FirewallControl:1 + Updating APIVERSION + Supporting IPV6 in upnpDiscover() + Adding a -6 option to upnpc command line tool + +2011/03/18: + miniwget/parseURL() : return an error when url param is null. + fixing GetListOfPortMappings() + +2011/03/14: + upnpDiscover() now reporting an error code. + improvements in comments. + +2011/03/11: + adding miniupnpcstrings.h.cmake and CMakeLists.txt files. + +2011/02/15: + Implementation of GetListOfPortMappings() + +2011/02/07: + updates to minixml to support character data starting with spaces + minixml now support CDATA + upnpreplyparse treats specificaly + change in simpleUPnPcommand to return the buffer (simplification) + +2011/02/06: + Added leaseDuration argument to AddPortMapping() + Starting to implement GetListOfPortMappings() + +2011/01/11: + updating wingenminiupnpcstrings.c + +2011/01/04: + improving updateminiupnpcstrings.sh + +VERSION 1.5 : released 2011/01/01 + +2010/12/21: + use NO_GETADDRINFO macro to disable the use of getaddrinfo/freeaddrinfo + +2010/12/11: + Improvements on getHTTPResponse() code. + +2010/12/09: + new code for miniwget that handle Chunked transfer encoding + using getHTTPResponse() in SOAP call code + Adding MANIFEST.in for 'python setup.py bdist_rpm' + +2010/11/25: + changes to minissdpc.c to compile under Win32. + see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=729 + +2010/09/17: + Various improvement to Makefile from Michał Górny + +2010/08/05: + Adding the script "external-ip.sh" from Reuben Hawkins + +2010/06/09: + update to python module to match modification made on 2010/04/05 + update to Java test code to match modification made on 2010/04/05 + all UPNP_* function now return an error if the SOAP request failed + at HTTP level. + +2010/04/17: + Using GetBestRoute() under win32 in order to find the + right interface to use. + +2010/04/12: + Retrying with HTTP/1.1 if HTTP/1.0 failed. see + http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=1703 + +2010/04/07: + avoid returning duplicates in upnpDiscover() + +2010/04/05: + Create a connecthostport.h/.c with connecthostport() function + and use it in miniwget and miniupnpc. + Use getnameinfo() instead of inet_ntop or inet_ntoa + Work to make miniupnpc IPV6 compatible... + Add java test code. + Big changes in order to support device having both WANIPConnection + and WANPPPConnection. + +2010/04/04: + Use getaddrinfo() instead of gethostbyname() in miniwget. + +2010/01/06: + #define _DARWIN_C_SOURCE for Mac OS X + +2009/12/19: + Improve MinGW32 build + +2009/12/11: + adding a MSVC9 project to build the static library and executable + +2009/12/10: + Fixing some compilation stuff for Windows/MinGW + +2009/12/07: + adaptations in Makefile and updateminiupnpcstring.sh for AmigaOS + some fixes for Windows when using virtual ethernet adapters (it is the + case with VMWare installed). + +2009/12/04: + some fixes for AmigaOS compilation + Changed HTTP version to HTTP/1.0 for Soap too (to prevent chunked + transfer encoding) + +2009/12/03: + updating printIDG and testigddescparse.c for debug. + modifications to compile under AmigaOS + adding a testminiwget program + Changed miniwget to advertise itself as HTTP/1.0 to prevent chunked + transfer encoding + +2009/11/26: + fixing updateminiupnpcstrings.sh to take into account + which command that does not return an error code. + +VERSION 1.4 : released 2009/10/30 + +2009/10/16: + using Py_BEGIN_ALLOW_THREADS and Py_END_ALLOW_THREADS in python module. + +2009/10/10: + Some fixes for compilation under Solaris + compilation fixes : http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=1464 + +2009/09/21: + fixing the code to ignore EINTR during connect() calls. + +2009/08/07: + Set socket timeout for connect() + Some cleanup in miniwget.c + +2009/08/04: + remove multiple redirections with -d in upnpc.c + Print textual error code in upnpc.c + Ignore EINTR during the connect() and poll() calls. + +2009/07/29: + fix in updateminiupnpcstrings.sh if OS name contains "/" + Sending a correct value for MX: field in SSDP request + +2009/07/20: + Change the Makefile to compile under Mac OS X + Fixed a stackoverflow in getDevicesFromMiniSSDPD() + +2009/07/09: + Compile under Haiku + generate miniupnpcstrings.h.in from miniupnpcstrings.h + +2009/06/04: + patching to compile under CygWin and cross compile for minGW + +VERSION 1.3 : + +2009/04/17: + updating python module + Use strtoull() when using C99 + +2009/02/28: + Fixed miniwget.c for compiling under sun + +2008/12/18: + cleanup in Makefile (thanks to Paul de Weerd) + minissdpc.c : win32 compatibility + miniupnpc.c : changed xmlns prefix from 'm' to 'u' + Removed NDEBUG (using DEBUG) + +2008/10/14: + Added the ExternalHost argument to DeletePortMapping() + +2008/10/11: + Added the ExternalHost argument to AddPortMapping() + Put a correct User-Agent: header in HTTP requests. + +VERSION 1.2 : + +2008/10/07: + Update docs + +2008/09/25: + Integrated sameport patch from Dario Meloni : Added a "sameport" + argument to upnpDiscover(). + +2008/07/18: + small modif to make Clang happy :) + +2008/07/17: + #define SOAPPREFIX "s" in miniupnpc.c in order to remove SOAP-ENV... + +2008/07/14: + include declspec.h in installation (to /usr/include/miniupnpc) + +VERSION 1.1 : + +2008/07/04: + standard options for install/ln instead of gnu-specific stuff. + +2008/07/03: + now builds a .dll and .lib with win32. (mingw32) + +2008/04/28: + make install now install the binary of the upnpc tool + +2008/04/27: + added testupnpigd.py + added error strings for miniupnpc "internal" errors + improved python module error/exception reporting. + +2008/04/23: + Completely rewrite igd_desc_parse.c in order to be compatible with + Linksys WAG200G + Added testigddescparse + updated python module + +VERSION 1.0 : + +2008/02/21: + put some #ifdef DEBUG around DisplayNameValueList() + +2008/02/18: + Improved error reporting in upnpcommands.c + UPNP_GetStatusInfo() returns LastConnectionError + +2008/02/16: + better error handling in minisoap.c + improving display of "valid IGD found" in upnpc.c + +2008/02/03: + Fixing UPNP_GetValidIGD() + improved make install :) + +2007/12/22: + Adding upnperrors.c/h to provide a strupnperror() function + used to translate UPnP error codes to string. + +2007/12/19: + Fixing getDevicesFromMiniSSDPD() + improved error reporting of UPnP functions + +2007/12/18: + It is now possible to specify a different location for MiniSSDPd socket. + working with MiniSSDPd is now more efficient. + python module improved. + +2007/12/16: + improving error reporting + +2007/12/13: + Try to improve compatibility by using HTTP/1.0 instead of 1.1 and + XML a bit different for SOAP. + +2007/11/25: + fixed select() call for linux + +2007/11/15: + Added -fPIC to CFLAG for better shared library code. + +2007/11/02: + Fixed a potential socket leak in miniwget2() + +2007/10/16: + added a parameter to upnpDiscover() in order to allow the use of another + interface than the default multicast interface. + +2007/10/12: + Fixed the creation of symbolic link in Makefile + +2007/10/08: + Added man page + +2007/10/02: + fixed memory bug in GetUPNPUrls() + +2007/10/01: + fixes in the Makefile + Added UPNP_GetIGDFromUrl() and adapted the sample program accordingly. + Added SONAME in the shared library to please debian :) + fixed MS Windows compilation (minissdpd is not available under MS Windows). + +2007/09/25: + small change to Makefile to be able to install in a different location + (default is /usr) + +2007/09/24: + now compiling both shared and static library + +2007/09/19: + Cosmetic changes on upnpc.c + +2007/09/02: + adapting to new miniSSDPd (release version ?) + +2007/08/31: + Usage of miniSSDPd to skip discovery process. + +2007/08/27: + fixed python module to allow compilation with Python older than Python 2.4 + +2007/06/12: + Added a python module. + +2007/05/19: + Fixed compilation under MinGW + +2007/05/15: + fixed a memory leak in AddPortMapping() + Added testupnpreplyparse executable to check the parsing of + upnp soap messages + minixml now ignore namespace prefixes. + +2007/04/26: + upnpc now displays external ip address with -s or -l + +2007/04/11: + changed MINIUPNPC_URL_MAXSIZE to 128 to accomodate the "BT Voyager 210" + +2007/03/19: + cleanup in miniwget.c + +2007/03/01: + Small typo fix... + +2007/01/30: + Now parsing the HTTP header from SOAP responses in order to + get content-length value. + +2007/01/29: + Fixed the Soap Query to speedup the HTTP request. + added some Win32 DLL stuff... + +2007/01/27: + Fixed some WIN32 compatibility issues + +2006/12/14: + Added UPNPIGD_IsConnected() function in miniupnp.c/.h + Added UPNP_GetValidIGD() in miniupnp.c/.h + cleaned upnpc.c main(). now using UPNP_GetValidIGD() + +2006/12/07: + Version 1.0-RC1 released + +2006/12/03: + Minor changes to compile under SunOS/Solaris + +2006/11/30: + made a minixml parser validator program + updated minixml to handle attributes correctly + +2006/11/22: + Added a -r option to the upnpc sample thanks to Alexander Hubmann. + +2006/11/19: + Cleanup code to make it more ANSI C compliant + +2006/11/10: + detect and display local lan address. + +2006/11/04: + Packets and Bytes Sent/Received are now unsigned int. + +2006/11/01: + Bug fix thanks to Giuseppe D'Angelo + +2006/10/31: + C++ compatibility for .h files. + Added a way to get ip Address on the LAN used to reach the IGD. + +2006/10/25: + Added M-SEARCH to the services in the discovery process. + +2006/10/22: + updated the Makefile to use makedepend, added a "make install" + update Makefile + +2006/10/20: + fixing the description url parsing thanks to patch sent by + Wayne Dawe. + Fixed/translated some comments. + Implemented a better discover process, first looking + for IGD then for root devices (as some devices only reply to + M-SEARCH for root devices). + +2006/09/02: + added freeUPNPDevlist() function. + +2006/08/04: + More command line arguments checking + +2006/08/01: + Added the .bat file to compile under Win32 with minGW32 + +2006/07/31: + Fixed the rootdesc parser (igd_desc_parse.c) + +2006/07/20: + parseMSEARCHReply() is now returning the ST: line as well + starting changes to detect several UPnP devices on the network + +2006/07/19: + using GetCommonLinkProperties to get down/upload bitrate + diff --git a/ext/miniupnpc/LICENSE b/ext/miniupnpc/LICENSE new file mode 100644 index 000000000..cb5a06044 --- /dev/null +++ b/ext/miniupnpc/LICENSE @@ -0,0 +1,27 @@ +MiniUPnPc +Copyright (c) 2005-2015, Thomas BERNARD +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + diff --git a/ext/miniupnpc/MANIFEST.in b/ext/miniupnpc/MANIFEST.in new file mode 100644 index 000000000..54b86f95e --- /dev/null +++ b/ext/miniupnpc/MANIFEST.in @@ -0,0 +1,5 @@ +include README +include miniupnpcmodule.c +include setup.py +include *.h +include libminiupnpc.a diff --git a/ext/miniupnpc/Makefile b/ext/miniupnpc/Makefile new file mode 100644 index 000000000..4a4f16126 --- /dev/null +++ b/ext/miniupnpc/Makefile @@ -0,0 +1,379 @@ +# $Id: Makefile,v 1.132 2015/10/26 16:59:54 nanard Exp $ +# MiniUPnP Project +# http://miniupnp.free.fr/ +# http://miniupnp.tuxfamily.org/ +# https://github.com/miniupnp/miniupnp +# (c) 2005-2015 Thomas Bernard +# to install use : +# $ make DESTDIR=/tmp/dummylocation install +# or +# $ INSTALLPREFIX=/usr/local make install +# or +# $ make install (default INSTALLPREFIX is /usr) +OS = $(shell uname -s) +VERSION = $(shell cat VERSION) + +ifeq ($(OS), Darwin) +JARSUFFIX=mac +LIBTOOL ?= $(shell which libtool) +endif +ifeq ($(OS), Linux) +JARSUFFIX=linux +endif +ifneq (,$(findstring NT-5.1,$(OS))) +JARSUFFIX=win32 +endif + +HAVE_IPV6 ?= yes +export HAVE_IPV6 + +CC ?= gcc +#AR = gar +#CFLAGS = -O -g -DDEBUG +CFLAGS ?= -O +CFLAGS += -Wall +CFLAGS += -W -Wstrict-prototypes +CFLAGS += -fno-common +CFLAGS += -DMINIUPNPC_SET_SOCKET_TIMEOUT +CFLAGS += -DMINIUPNPC_GET_SRC_ADDR +CFLAGS += -D_BSD_SOURCE +CFLAGS += -D_DEFAULT_SOURCE +ifneq ($(OS), FreeBSD) +ifneq ($(OS), Darwin) +#CFLAGS += -D_POSIX_C_SOURCE=200112L +CFLAGS += -D_XOPEN_SOURCE=600 +endif +endif +#CFLAGS += -ansi +# -DNO_GETADDRINFO +INSTALL = install +SH = /bin/sh +JAVA = java +# see http://code.google.com/p/jnaerator/ +#JNAERATOR = jnaerator-0.9.7.jar +#JNAERATOR = jnaerator-0.9.8-shaded.jar +#JNAERATORARGS = -library miniupnpc +#JNAERATOR = jnaerator-0.10-shaded.jar +#JNAERATOR = jnaerator-0.11-shaded.jar +# https://repo1.maven.org/maven2/com/nativelibs4java/jnaerator/0.12/jnaerator-0.12-shaded.jar +JNAERATOR = jnaerator-0.12-shaded.jar +JNAERATORARGS = -mode StandaloneJar -runtime JNAerator -library miniupnpc +#JNAERATORBASEURL = http://jnaerator.googlecode.com/files/ +JNAERATORBASEURL = https://repo1.maven.org/maven2/com/nativelibs4java/jnaerator/0.12 + +ifeq (SunOS, $(OS)) + LDFLAGS=-lsocket -lnsl -lresolv +endif + +# APIVERSION is used to build SONAME +APIVERSION = 15 + +SRCS = igd_desc_parse.c miniupnpc.c minixml.c minisoap.c miniwget.c \ + upnpc.c upnpcommands.c upnpreplyparse.c testminixml.c \ + minixmlvalid.c testupnpreplyparse.c minissdpc.c \ + upnperrors.c testigddescparse.c testminiwget.c \ + connecthostport.c portlistingparse.c receivedata.c \ + upnpdev.c testportlistingparse.c miniupnpcmodule.c \ + minihttptestserver.c \ + listdevices.c + +LIBOBJS = miniwget.o minixml.o igd_desc_parse.o minisoap.o \ + miniupnpc.o upnpreplyparse.o upnpcommands.o upnperrors.o \ + connecthostport.o portlistingparse.o receivedata.o upnpdev.o + +ifneq ($(OS), AmigaOS) +CFLAGS := -fPIC $(CFLAGS) +LIBOBJS := $(LIBOBJS) minissdpc.o +endif + +OBJS = $(patsubst %.c,%.o,$(SRCS)) + +# HEADERS to install +HEADERS = miniupnpc.h miniwget.h upnpcommands.h igd_desc_parse.h \ + upnpreplyparse.h upnperrors.h miniupnpctypes.h \ + portlistingparse.h \ + upnpdev.h \ + miniupnpc_declspec.h + +# library names +LIBRARY = libminiupnpc.a +ifeq ($(OS), Darwin) + SHAREDLIBRARY = libminiupnpc.dylib + SONAME = $(basename $(SHAREDLIBRARY)).$(APIVERSION).dylib + CFLAGS := -D_DARWIN_C_SOURCE $(CFLAGS) +else +ifeq ($(JARSUFFIX), win32) + SHAREDLIBRARY = miniupnpc.dll +else + # Linux/BSD/etc. + SHAREDLIBRARY = libminiupnpc.so + SONAME = $(SHAREDLIBRARY).$(APIVERSION) +endif +endif + +EXECUTABLES = upnpc-static listdevices +EXECUTABLES_ADDTESTS = testminixml minixmlvalid testupnpreplyparse \ + testigddescparse testminiwget testportlistingparse + +TESTMINIXMLOBJS = minixml.o igd_desc_parse.o testminixml.o + +TESTMINIWGETOBJS = miniwget.o testminiwget.o connecthostport.o receivedata.o + +TESTUPNPREPLYPARSE = testupnpreplyparse.o minixml.o upnpreplyparse.o + +TESTPORTLISTINGPARSE = testportlistingparse.o minixml.o portlistingparse.o + +TESTIGDDESCPARSE = testigddescparse.o igd_desc_parse.o minixml.o \ + miniupnpc.o miniwget.o upnpcommands.o upnpreplyparse.o \ + minisoap.o connecthostport.o receivedata.o \ + portlistingparse.o + +ifneq ($(OS), AmigaOS) +EXECUTABLES := $(EXECUTABLES) upnpc-shared +TESTMINIWGETOBJS := $(TESTMINIWGETOBJS) minissdpc.o +TESTIGDDESCPARSE := $(TESTIGDDESCPARSE) minissdpc.o +endif + +LIBDIR ?= lib +# install directories +INSTALLPREFIX ?= $(PREFIX)/usr +INSTALLDIRINC = $(INSTALLPREFIX)/include/miniupnpc +INSTALLDIRLIB = $(INSTALLPREFIX)/$(LIBDIR) +INSTALLDIRBIN = $(INSTALLPREFIX)/bin +INSTALLDIRMAN = $(INSTALLPREFIX)/share/man + +FILESTOINSTALL = $(LIBRARY) $(EXECUTABLES) +ifneq ($(OS), AmigaOS) +FILESTOINSTALL := $(FILESTOINSTALL) $(SHAREDLIBRARY) +endif + + +.PHONY: install clean depend all check test everything \ + installpythonmodule updateversion +# validateminixml validateminiwget + +all: $(LIBRARY) $(EXECUTABLES) + +test: check + +check: validateminixml validateminiwget validateupnpreplyparse \ + validateportlistingparse validateigddescparse + +everything: all $(EXECUTABLES_ADDTESTS) + +pythonmodule: $(LIBRARY) miniupnpcmodule.c setup.py + python setup.py build + touch $@ + +installpythonmodule: pythonmodule + python setup.py install + +pythonmodule3: $(LIBRARY) miniupnpcmodule.c setup.py + python3 setup.py build + touch $@ + +installpythonmodule3: pythonmodule3 + python3 setup.py install + +validateminixml: minixmlvalid + @echo "minixml validation test" + ./minixmlvalid + touch $@ + +validateminiwget: testminiwget minihttptestserver testminiwget.sh + @echo "miniwget validation test" + ./testminiwget.sh + touch $@ + +validateupnpreplyparse: testupnpreplyparse testupnpreplyparse.sh + @echo "upnpreplyparse validation test" + ./testupnpreplyparse.sh + touch $@ + +validateportlistingparse: testportlistingparse + @echo "portlistingparse validation test" + ./testportlistingparse + touch $@ + +validateigddescparse: testigddescparse + @echo "igd desc parse validation test" + ./testigddescparse testdesc/new_LiveBox_desc.xml testdesc/new_LiveBox_desc.values + ./testigddescparse testdesc/linksys_WAG200G_desc.xml testdesc/linksys_WAG200G_desc.values + touch $@ + +clean: + $(RM) $(LIBRARY) $(SHAREDLIBRARY) $(EXECUTABLES) $(OBJS) miniupnpcstrings.h + $(RM) $(EXECUTABLES_ADDTESTS) + # clean python stuff + $(RM) pythonmodule pythonmodule3 + $(RM) validateminixml validateminiwget validateupnpreplyparse + $(RM) validateigddescparse + $(RM) minihttptestserver + $(RM) -r build/ dist/ + #python setup.py clean + # clean jnaerator stuff + $(RM) _jnaerator.* java/miniupnpc_$(OS).jar + +distclean: clean + $(RM) $(JNAERATOR) java/*.jar java/*.class out.errors.txt + +updateversion: miniupnpc.h + cp miniupnpc.h miniupnpc.h.bak + sed 's/\(.*MINIUPNPC_API_VERSION\s\+\)[0-9]\+/\1$(APIVERSION)/' < miniupnpc.h.bak > miniupnpc.h + +install: updateversion $(FILESTOINSTALL) + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRINC) + $(INSTALL) -m 644 $(HEADERS) $(DESTDIR)$(INSTALLDIRINC) + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRLIB) + $(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(INSTALLDIRLIB) +ifneq ($(OS), AmigaOS) + $(INSTALL) -m 644 $(SHAREDLIBRARY) $(DESTDIR)$(INSTALLDIRLIB)/$(SONAME) + ln -fs $(SONAME) $(DESTDIR)$(INSTALLDIRLIB)/$(SHAREDLIBRARY) +endif + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRBIN) +ifeq ($(OS), AmigaOS) + $(INSTALL) -m 755 upnpc-static $(DESTDIR)$(INSTALLDIRBIN)/upnpc +else + $(INSTALL) -m 755 upnpc-shared $(DESTDIR)$(INSTALLDIRBIN)/upnpc +endif + $(INSTALL) -m 755 external-ip.sh $(DESTDIR)$(INSTALLDIRBIN)/external-ip +ifneq ($(OS), AmigaOS) + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRMAN)/man3 + $(INSTALL) -m 644 man3/miniupnpc.3 $(DESTDIR)$(INSTALLDIRMAN)/man3/miniupnpc.3 +ifeq ($(OS), Linux) + gzip -f $(DESTDIR)$(INSTALLDIRMAN)/man3/miniupnpc.3 +endif +endif + +install-static: updateversion $(FILESTOINSTALL) + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRINC) + $(INSTALL) -m 644 $(HEADERS) $(DESTDIR)$(INSTALLDIRINC) + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRLIB) + $(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(INSTALLDIRLIB) + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRBIN) + $(INSTALL) -m 755 external-ip.sh $(DESTDIR)$(INSTALLDIRBIN)/external-ip + +cleaninstall: + $(RM) -r $(DESTDIR)$(INSTALLDIRINC) + $(RM) $(DESTDIR)$(INSTALLDIRLIB)/$(LIBRARY) + $(RM) $(DESTDIR)$(INSTALLDIRLIB)/$(SHAREDLIBRARY) + +depend: + makedepend -Y -- $(CFLAGS) -- $(SRCS) 2>/dev/null + +$(LIBRARY): $(LIBOBJS) +ifeq ($(OS), Darwin) + $(LIBTOOL) -static -o $@ $? +else + $(AR) crs $@ $? +endif + +$(SHAREDLIBRARY): $(LIBOBJS) +ifeq ($(OS), Darwin) +# $(CC) -dynamiclib $(LDFLAGS) -Wl,-install_name,$(SONAME) -o $@ $^ + $(CC) -dynamiclib $(LDFLAGS) -Wl,-install_name,$(INSTALLDIRLIB)/$(SONAME) -o $@ $^ +else + $(CC) -shared $(LDFLAGS) -Wl,-soname,$(SONAME) -o $@ $^ +endif + +upnpc-static: upnpc.o $(LIBRARY) + $(CC) $(LDFLAGS) -o $@ $^ $(LOADLIBES) $(LDLIBS) + +upnpc-shared: upnpc.o $(SHAREDLIBRARY) + $(CC) $(LDFLAGS) -o $@ $^ $(LOADLIBES) $(LDLIBS) + +listdevices: listdevices.o $(LIBRARY) + +testminixml: $(TESTMINIXMLOBJS) + +testminiwget: $(TESTMINIWGETOBJS) + +minixmlvalid: minixml.o minixmlvalid.o + +testupnpreplyparse: $(TESTUPNPREPLYPARSE) + +testigddescparse: $(TESTIGDDESCPARSE) + +testportlistingparse: $(TESTPORTLISTINGPARSE) + +miniupnpcstrings.h: miniupnpcstrings.h.in updateminiupnpcstrings.sh VERSION + $(SH) updateminiupnpcstrings.sh + +# ftp tool supplied with OpenBSD can download files from http. +jnaerator-%.jar: + wget $(JNAERATORBASEURL)/$@ || \ + curl -o $@ $(JNAERATORBASEURL)/$@ || \ + ftp $(JNAERATORBASEURL)/$@ + +jar: $(SHAREDLIBRARY) $(JNAERATOR) + $(JAVA) -jar $(JNAERATOR) $(JNAERATORARGS) \ + miniupnpc.h miniupnpc_declspec.h upnpcommands.h upnpreplyparse.h \ + igd_desc_parse.h miniwget.h upnperrors.h $(SHAREDLIBRARY) \ + -package fr.free.miniupnp -o . -jar java/miniupnpc_$(JARSUFFIX).jar -v + +mvn_install: + mvn install:install-file -Dfile=java/miniupnpc_$(JARSUFFIX).jar \ + -DgroupId=com.github \ + -DartifactId=miniupnp \ + -Dversion=$(VERSION) \ + -Dpackaging=jar \ + -Dclassifier=$(JARSUFFIX) \ + -DgeneratePom=true \ + -DcreateChecksum=true + +# make .deb packages +deb: /usr/share/pyshared/stdeb all + (python setup.py --command-packages=stdeb.command bdist_deb) + +# install .deb packages +ideb: + (sudo dpkg -i deb_dist/*.deb) + +/usr/share/pyshared/stdeb: /usr/share/doc/python-all-dev + (sudo apt-get install python-stdeb) + +/usr/share/doc/python-all-dev: + (sudo apt-get install python-all-dev) + +minihttptestserver: minihttptestserver.o + +# DO NOT DELETE THIS LINE -- make depend depends on it. + +igd_desc_parse.o: igd_desc_parse.h +miniupnpc.o: miniupnpc.h miniupnpc_declspec.h igd_desc_parse.h upnpdev.h +miniupnpc.o: minissdpc.h miniwget.h minisoap.h minixml.h upnpcommands.h +miniupnpc.o: upnpreplyparse.h portlistingparse.h miniupnpctypes.h +miniupnpc.o: connecthostport.h +minixml.o: minixml.h +minisoap.o: minisoap.h miniupnpcstrings.h +miniwget.o: miniupnpcstrings.h miniwget.h miniupnpc_declspec.h +miniwget.o: connecthostport.h receivedata.h +upnpc.o: miniwget.h miniupnpc_declspec.h miniupnpc.h igd_desc_parse.h +upnpc.o: upnpdev.h upnpcommands.h upnpreplyparse.h portlistingparse.h +upnpc.o: miniupnpctypes.h upnperrors.h miniupnpcstrings.h +upnpcommands.o: upnpcommands.h upnpreplyparse.h portlistingparse.h +upnpcommands.o: miniupnpc_declspec.h miniupnpctypes.h miniupnpc.h +upnpcommands.o: igd_desc_parse.h upnpdev.h +upnpreplyparse.o: upnpreplyparse.h minixml.h +testminixml.o: minixml.h igd_desc_parse.h +minixmlvalid.o: minixml.h +testupnpreplyparse.o: upnpreplyparse.h +minissdpc.o: minissdpc.h miniupnpc_declspec.h upnpdev.h miniupnpc.h +minissdpc.o: igd_desc_parse.h receivedata.h codelength.h +upnperrors.o: upnperrors.h miniupnpc_declspec.h upnpcommands.h +upnperrors.o: upnpreplyparse.h portlistingparse.h miniupnpctypes.h +upnperrors.o: miniupnpc.h igd_desc_parse.h upnpdev.h +testigddescparse.o: igd_desc_parse.h minixml.h miniupnpc.h +testigddescparse.o: miniupnpc_declspec.h upnpdev.h +testminiwget.o: miniwget.h miniupnpc_declspec.h +connecthostport.o: connecthostport.h +portlistingparse.o: portlistingparse.h miniupnpc_declspec.h miniupnpctypes.h +portlistingparse.o: minixml.h +receivedata.o: receivedata.h +upnpdev.o: upnpdev.h miniupnpc_declspec.h +testportlistingparse.o: portlistingparse.h miniupnpc_declspec.h +testportlistingparse.o: miniupnpctypes.h +miniupnpcmodule.o: miniupnpc.h miniupnpc_declspec.h igd_desc_parse.h +miniupnpcmodule.o: upnpdev.h upnpcommands.h upnpreplyparse.h +miniupnpcmodule.o: portlistingparse.h miniupnpctypes.h upnperrors.h +listdevices.o: miniupnpc.h miniupnpc_declspec.h igd_desc_parse.h upnpdev.h diff --git a/ext/miniupnpc/Makefile.mingw b/ext/miniupnpc/Makefile.mingw new file mode 100644 index 000000000..6de325fe1 --- /dev/null +++ b/ext/miniupnpc/Makefile.mingw @@ -0,0 +1,98 @@ +# $Id: Makefile.mingw,v 1.22 2015/10/26 16:59:54 nanard Exp $ +# Miniupnp project. +# http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ +# (c) 2005-2015 Thomas Bernard +# This Makefile is made for MinGW +# +CC ?= gcc +#CFLAGS = -Wall -g -DDEBUG -D_WIN32_WINNT=0X501 +CFLAGS = -Wall -Os -DNDEBUG -D_WIN32_WINNT=0X501 +LDLIBS = -lws2_32 -liphlpapi +# -lwsock32 +# -liphlpapi is needed for GetBestRoute() and GetIpAddrTable() +PYTHON=\utils\python25\python +OBJS=miniwget.o minixml.o igd_desc_parse.o minisoap.o \ + minissdpc.o \ + miniupnpc.o upnpreplyparse.o upnpcommands.o upnperrors.o \ + connecthostport.o portlistingparse.o receivedata.o \ + upnpdev.o +OBJSDLL=$(addprefix dll/, $(OBJS)) + +all: init upnpc-static upnpc-shared testminixml libminiupnpc.a miniupnpc.dll + +init: + mkdir dll + echo init > init + +clean: + del upnpc testminixml *.o + del dll\*.o + del *.exe + del miniupnpc.dll + del libminiupnpc.a + +libminiupnpc.a: $(OBJS) + $(AR) cr $@ $? + +pythonmodule: libminiupnpc.a + $(PYTHON) setupmingw32.py build --compiler=mingw32 + $(PYTHON) setupmingw32.py install --skip-build + +miniupnpc.dll: libminiupnpc.a $(OBJSDLL) + dllwrap -k --driver-name gcc \ + --def miniupnpc.def \ + --output-def miniupnpc.dll.def \ + --implib miniupnpc.lib -o $@ \ + $(OBJSDLL) $(LDLIBS) + +miniupnpc.lib: miniupnpc.dll +# echo $@ generated with $< + +dll/upnpc.o: upnpc.o +# echo $@ generated with $< + +.c.o: + $(CC) $(CFLAGS) -DMINIUPNP_STATICLIB -c -o $@ $< + $(CC) $(CFLAGS) -DMINIUPNP_EXPORTS -c -o dll/$@ $< + +upnpc.o: upnpc.c + $(CC) $(CFLAGS) -DMINIUPNP_STATICLIB -c -o $@ $< + $(CC) $(CFLAGS) -c -o dll/$@ $< + +# --enable-stdcall-fixup +upnpc-static: upnpc.o libminiupnpc.a + $(CC) -o $@ $^ $(LDLIBS) + +upnpc-shared: dll/upnpc.o miniupnpc.lib + $(CC) -o $@ $^ $(LDLIBS) + +wingenminiupnpcstrings: wingenminiupnpcstrings.o + +wingenminiupnpcstrings.o: wingenminiupnpcstrings.c + +miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings + wingenminiupnpcstrings $< $@ + +minixml.o: minixml.c minixml.h + +upnpc.o: miniwget.h minisoap.h miniupnpc.h igd_desc_parse.h +upnpc.o: upnpreplyparse.h upnpcommands.h upnperrors.h miniupnpcstrings.h + +miniwget.o: miniwget.c miniwget.h miniupnpcstrings.h connecthostport.h + +minisoap.o: minisoap.c minisoap.h miniupnpcstrings.h + +miniupnpc.o: miniupnpc.c miniupnpc.h minisoap.h miniwget.h minixml.h + +igd_desc_parse.o: igd_desc_parse.c igd_desc_parse.h + +testminixml: minixml.o igd_desc_parse.o testminixml.c + +upnpreplyparse.o: upnpreplyparse.c upnpreplyparse.h minixml.h + +upnpcommands.o: upnpcommands.c upnpcommands.h upnpreplyparse.h miniupnpc.h portlistingparse.h + +minissdpc.o: minissdpc.c minissdpc.h receivedata.h + +upnpdev.o: upnpdev.c upnpdev.h + diff --git a/ext/miniupnpc/README b/ext/miniupnpc/README new file mode 100644 index 000000000..ab08de942 --- /dev/null +++ b/ext/miniupnpc/README @@ -0,0 +1,61 @@ +Project: miniupnp +Project web page: http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ +github: https://github.com/miniupnp/miniupnp +freecode: http://freecode.com/projects/miniupnp +Author: Thomas Bernard +Copyright (c) 2005-2014 Thomas Bernard +This software is subject to the conditions detailed in the +LICENSE file provided within this distribution. + + +* miniUPnP Client - miniUPnPc * + +To compile, simply run 'gmake' (could be 'make' on your system). +Under win32, to compile with MinGW, type "mingw32make.bat". +MS Visual C solution and project files are supplied in the msvc/ subdirectory. + +The compilation is known to work under linux, FreeBSD, +OpenBSD, MacOS X, AmigaOS and cygwin. +The official AmigaOS4.1 SDK was used for AmigaOS4 and GeekGadgets for AmigaOS3. +upx (http://upx.sourceforge.net) is used to compress the win32 .exe files. + +To install the library and headers on the system use : +> su +> make install +> exit + +alternatively, to install into a specific location, use : +> INSTALLPREFIX=/usr/local make install + +upnpc.c is a sample client using the libminiupnpc. +To use the libminiupnpc in your application, link it with +libminiupnpc.a (or .so) and use the following functions found in miniupnpc.h, +upnpcommands.h and miniwget.h : +- upnpDiscover() +- miniwget() +- parserootdesc() +- GetUPNPUrls() +- UPNP_* (calling UPNP methods) + +Note : use #include etc... for the includes +and -lminiupnpc for the link + +Discovery process is speeded up when MiniSSDPd is running on the machine. + + +* Python module * + +you can build a python module with 'make pythonmodule' +and install it with 'make installpythonmodule'. +setup.py (and setupmingw32.py) are included in the distribution. + + +Feel free to contact me if you have any problem : +e-mail : miniupnp@free.fr + +If you are using libminiupnpc in your application, please +send me an email ! + +For any question, you can use the web forum : +http://miniupnp.tuxfamily.org/forum/ + diff --git a/ext/miniupnpc/VERSION b/ext/miniupnpc/VERSION new file mode 100644 index 000000000..2e0e38c63 --- /dev/null +++ b/ext/miniupnpc/VERSION @@ -0,0 +1 @@ +1.9 diff --git a/ext/miniupnpc/apiversions.txt b/ext/miniupnpc/apiversions.txt new file mode 100644 index 000000000..3e9ebef21 --- /dev/null +++ b/ext/miniupnpc/apiversions.txt @@ -0,0 +1,167 @@ +$Id: apiversions.txt,v 1.8 2015/10/08 16:15:47 nanard Exp $ + +Differences in API between miniUPnPc versions + +API version 15 + changed "sameport" argument of upnpDiscover() upnpDiscoverAll() upnpDiscoverDevice() + to "localport". When 0 or 1, behaviour is not changed, but it can take + any other value between 2 and 65535 + Existing programs should be compatible + updated macro : + #define MINIUPNPC_API_VERSION 15 + +API version 14 +miniupnpc.h + add ttl argument to upnpDiscover() upnpDiscoverAll() upnpDiscoverDevice() + upnpDiscoverDevices() + getDevicesFromMiniSSDPD() : + connectToMiniSSDPD() / disconnectFromMiniSSDPD() + requestDevicesFromMiniSSDPD() / receiveDevicesFromMiniSSDPD() + updated macro : + #define MINIUPNPC_API_VERSION 14 + +API version 13 +miniupnpc.h: + add searchalltype param to upnpDiscoverDevices() function + updated macro : + #define MINIUPNPC_API_VERSION 13 + +API version 12 +miniupnpc.h : + add upnpDiscoverAll() / upnpDiscoverDevice() / upnpDiscoverDevices() + functions + updated macros : + #define MINIUPNPC_API_VERSION 12 + +API version 11 + +upnpreplyparse.h / portlistingparse.h : + removed usage of sys/queue.h / bsdqueue.h + +miniupnpc.h: + updated macros : + #define MINIUPNPC_API_VERSION 11 + +====================== miniUPnPc version 1.9 ====================== +API version 10 + +upnpcommands.h: + added argument remoteHost to UPNP_GetSpecificPortMappingEntry() + +miniupnpc.h: + updated macros : + #define MINIUPNPC_VERSION "1.9" + #define MINIUPNPC_API_VERSION 10 + +====================== miniUPnPc version 1.8 ====================== +API version 9 + +miniupnpc.h: + updated macros : + #define MINIUPNPC_VERSION "1.8" + #define MINIUPNPC_API_VERSION 9 + added "unsigned int scope_id;" to struct UPNPDev + added scope_id argument to GetUPNPUrls() + + + +====================== miniUPnPc version 1.7 ====================== +API version 8 + +miniupnpc.h : + add new macros : + #define MINIUPNPC_VERSION "1.7" + #define MINIUPNPC_API_VERSION 8 + add rootdescURL to struct UPNPUrls + + + +====================== miniUPnPc version 1.6 ====================== +API version 8 + +Adding support for IPv6. +igd_desc_parse.h : + struct IGDdatas_service : + add char presentationurl[MINIUPNPC_URL_MAXSIZE]; + struct IGDdatas : + add struct IGDdatas_service IPv6FC; +miniupnpc.h : + new macros : + #define UPNPDISCOVER_SUCCESS (0) + #define UPNPDISCOVER_UNKNOWN_ERROR (-1) + #define UPNPDISCOVER_SOCKET_ERROR (-101) + #define UPNPDISCOVER_MEMORY_ERROR (-102) + simpleUPnPcommand() prototype changed (but is normaly not used by API users) + add arguments ipv6 and error to upnpDiscover() : + struct UPNPDev * + upnpDiscover(int delay, const char * multicastif, + const char * minissdpdsock, int sameport, + int ipv6, + int * error); + add controlURL_6FC member to struct UPNPUrls : + struct UPNPUrls { + char * controlURL; + char * ipcondescURL; + char * controlURL_CIF; + char * controlURL_6FC; + }; + +upnpcommands.h : + add leaseDuration argument to UPNP_AddPortMapping() + add desc, enabled and leaseDuration arguments to UPNP_GetSpecificPortMappingEntry() + add UPNP_GetListOfPortMappings() function (IGDv2) + add IGDv2 IPv6 related functions : + UPNP_GetFirewallStatus() + UPNP_GetOutboundPinholeTimeout() + UPNP_AddPinhole() + UPNP_UpdatePinhole() + UPNP_DeletePinhole() + UPNP_CheckPinholeWorking() + UPNP_GetPinholePackets() + + + +====================== miniUPnPc version 1.5 ====================== +API version 5 + +new function : +int UPNPIGD_IsConnected(struct UPNPUrls *, struct IGDdatas *); +new macro in upnpcommands.h : +#define UPNPCOMMAND_HTTP_ERROR + +====================== miniUPnPc version 1.4 ====================== +Same API as version 1.3 + +====================== miniUPnPc version 1.3 ====================== +API version 4 + +Use UNSIGNED_INTEGER type for +UPNP_GetTotalBytesSent(), UPNP_GetTotalBytesReceived(), +UPNP_GetTotalPacketsSent(), UPNP_GetTotalPacketsReceived() +Add remoteHost argument to UPNP_AddPortMapping() and UPNP_DeletePortMapping() + +====================== miniUPnPc version 1.2 ====================== +API version 3 + +added sameport argument to upnpDiscover() +struct UPNPDev * +upnpDiscover(int delay, const char * multicastif, + const char * minissdpdsock, int sameport); + +====================== miniUPnPc Version 1.1 ====================== +Same API as 1.0 + + +====================== miniUPnPc Version 1.0 ====================== +API version 2 + + +struct UPNPDev { + struct UPNPDev * pNext; + char * descURL; + char * st; + char buffer[2]; +}; +struct UPNPDev * upnpDiscover(int delay, const char * multicastif, + const char * minissdpdsock); + diff --git a/ext/miniupnpc/codelength.h b/ext/miniupnpc/codelength.h new file mode 100644 index 000000000..f5f8e30f9 --- /dev/null +++ b/ext/miniupnpc/codelength.h @@ -0,0 +1,54 @@ +/* $Id: codelength.h,v 1.5 2015/07/09 12:40:18 nanard Exp $ */ +/* Project : miniupnp + * Author : Thomas BERNARD + * copyright (c) 2005-2015 Thomas Bernard + * This software is subjet to the conditions detailed in the + * provided LICENCE file. */ +#ifndef CODELENGTH_H_INCLUDED +#define CODELENGTH_H_INCLUDED + +/* Encode length by using 7bit per Byte : + * Most significant bit of each byte specifies that the + * following byte is part of the code */ + +/* n : unsigned + * p : unsigned char * + */ +#define DECODELENGTH(n, p) n = 0; \ + do { n = (n << 7) | (*p & 0x7f); } \ + while((*(p++)&0x80) && (n<(1<<25))); + +/* n : unsigned + * READ : function/macro to read one byte (unsigned char) + */ +#define DECODELENGTH_READ(n, READ) \ + n = 0; \ + do { \ + unsigned char c; \ + READ(c); \ + n = (n << 7) | (c & 0x07f); \ + if(!(c&0x80)) break; \ + } while(n<(1<<25)); + +/* n : unsigned + * p : unsigned char * + * p_limit : unsigned char * + */ +#define DECODELENGTH_CHECKLIMIT(n, p, p_limit) \ + n = 0; \ + do { \ + if((p) >= (p_limit)) break; \ + n = (n << 7) | (*(p) & 0x7f); \ + } while((*((p)++)&0x80) && (n<(1<<25))); + + +/* n : unsigned + * p : unsigned char * + */ +#define CODELENGTH(n, p) if(n>=268435456) *(p++) = (n >> 28) | 0x80; \ + if(n>=2097152) *(p++) = (n >> 21) | 0x80; \ + if(n>=16384) *(p++) = (n >> 14) | 0x80; \ + if(n>=128) *(p++) = (n >> 7) | 0x80; \ + *(p++) = n & 0x7f; + +#endif /* CODELENGTH_H_INCLUDED */ diff --git a/ext/miniupnpc/connecthostport.c b/ext/miniupnpc/connecthostport.c new file mode 100644 index 000000000..1f2a032ee --- /dev/null +++ b/ext/miniupnpc/connecthostport.c @@ -0,0 +1,264 @@ +/* $Id: connecthostport.c,v 1.15 2015/10/09 16:26:19 nanard Exp $ */ +/* Project : miniupnp + * Author : Thomas Bernard + * Copyright (c) 2010-2015 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. */ + +/* use getaddrinfo() or gethostbyname() + * uncomment the following line in order to use gethostbyname() */ +#ifdef NO_GETADDRINFO +#define USE_GETHOSTBYNAME +#endif + +#include +#include +#ifdef _WIN32 +#include +#include +#include +#define MAXHOSTNAMELEN 64 +#define snprintf _snprintf +#define herror +#define socklen_t int +#else /* #ifdef _WIN32 */ +#include +#include +#ifdef MINIUPNPC_SET_SOCKET_TIMEOUT +#include +#endif /* #ifdef MINIUPNPC_SET_SOCKET_TIMEOUT */ +#include +#include +#include +#define closesocket close +#include +#include +/* defining MINIUPNPC_IGNORE_EINTR enable the ignore of interruptions + * during the connect() call */ +#define MINIUPNPC_IGNORE_EINTR +#ifndef USE_GETHOSTBYNAME +#include +#include +#endif /* #ifndef USE_GETHOSTBYNAME */ +#endif /* #else _WIN32 */ + +/* definition of PRINT_SOCKET_ERROR */ +#ifdef _WIN32 +#define PRINT_SOCKET_ERROR(x) printf("Socket error: %s, %d\n", x, WSAGetLastError()); +#else +#define PRINT_SOCKET_ERROR(x) perror(x) +#endif + +#if defined(__amigaos__) || defined(__amigaos4__) +#define herror(A) printf("%s\n", A) +#endif + +#include "connecthostport.h" + +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 64 +#endif + +/* connecthostport() + * return a socket connected (TCP) to the host and port + * or -1 in case of error */ +int connecthostport(const char * host, unsigned short port, + unsigned int scope_id) +{ + int s, n; +#ifdef USE_GETHOSTBYNAME + struct sockaddr_in dest; + struct hostent *hp; +#else /* #ifdef USE_GETHOSTBYNAME */ + char tmp_host[MAXHOSTNAMELEN+1]; + char port_str[8]; + struct addrinfo *ai, *p; + struct addrinfo hints; +#endif /* #ifdef USE_GETHOSTBYNAME */ +#ifdef MINIUPNPC_SET_SOCKET_TIMEOUT + struct timeval timeout; +#endif /* #ifdef MINIUPNPC_SET_SOCKET_TIMEOUT */ + +#ifdef USE_GETHOSTBYNAME + hp = gethostbyname(host); + if(hp == NULL) + { + herror(host); + return -1; + } + memcpy(&dest.sin_addr, hp->h_addr, sizeof(dest.sin_addr)); + memset(dest.sin_zero, 0, sizeof(dest.sin_zero)); + s = socket(PF_INET, SOCK_STREAM, 0); + if(s < 0) + { + PRINT_SOCKET_ERROR("socket"); + return -1; + } +#ifdef MINIUPNPC_SET_SOCKET_TIMEOUT + /* setting a 3 seconds timeout for the connect() call */ + timeout.tv_sec = 3; + timeout.tv_usec = 0; + if(setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(struct timeval)) < 0) + { + PRINT_SOCKET_ERROR("setsockopt"); + } + timeout.tv_sec = 3; + timeout.tv_usec = 0; + if(setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(struct timeval)) < 0) + { + PRINT_SOCKET_ERROR("setsockopt"); + } +#endif /* #ifdef MINIUPNPC_SET_SOCKET_TIMEOUT */ + dest.sin_family = AF_INET; + dest.sin_port = htons(port); + n = connect(s, (struct sockaddr *)&dest, sizeof(struct sockaddr_in)); +#ifdef MINIUPNPC_IGNORE_EINTR + /* EINTR The system call was interrupted by a signal that was caught + * EINPROGRESS The socket is nonblocking and the connection cannot + * be completed immediately. */ + while(n < 0 && (errno == EINTR || errno == EINPROGRESS)) + { + socklen_t len; + fd_set wset; + int err; + FD_ZERO(&wset); + FD_SET(s, &wset); + if((n = select(s + 1, NULL, &wset, NULL, NULL)) == -1 && errno == EINTR) + continue; + /*len = 0;*/ + /*n = getpeername(s, NULL, &len);*/ + len = sizeof(err); + if(getsockopt(s, SOL_SOCKET, SO_ERROR, &err, &len) < 0) { + PRINT_SOCKET_ERROR("getsockopt"); + closesocket(s); + return -1; + } + if(err != 0) { + errno = err; + n = -1; + } + } +#endif /* #ifdef MINIUPNPC_IGNORE_EINTR */ + if(n<0) + { + PRINT_SOCKET_ERROR("connect"); + closesocket(s); + return -1; + } +#else /* #ifdef USE_GETHOSTBYNAME */ + /* use getaddrinfo() instead of gethostbyname() */ + memset(&hints, 0, sizeof(hints)); + /* hints.ai_flags = AI_ADDRCONFIG; */ +#ifdef AI_NUMERICSERV + hints.ai_flags = AI_NUMERICSERV; +#endif + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = AF_UNSPEC; /* AF_INET, AF_INET6 or AF_UNSPEC */ + /* hints.ai_protocol = IPPROTO_TCP; */ + snprintf(port_str, sizeof(port_str), "%hu", port); + if(host[0] == '[') + { + /* literal ip v6 address */ + int i, j; + for(i = 0, j = 1; host[j] && (host[j] != ']') && i < MAXHOSTNAMELEN; i++, j++) + { + tmp_host[i] = host[j]; + if(0 == memcmp(host+j, "%25", 3)) /* %25 is just url encoding for '%' */ + j+=2; /* skip "25" */ + } + tmp_host[i] = '\0'; + } + else + { + strncpy(tmp_host, host, MAXHOSTNAMELEN); + } + tmp_host[MAXHOSTNAMELEN] = '\0'; + n = getaddrinfo(tmp_host, port_str, &hints, &ai); + if(n != 0) + { +#ifdef _WIN32 + fprintf(stderr, "getaddrinfo() error : %d\n", n); +#else + fprintf(stderr, "getaddrinfo() error : %s\n", gai_strerror(n)); +#endif + return -1; + } + s = -1; + for(p = ai; p; p = p->ai_next) + { + s = socket(p->ai_family, p->ai_socktype, p->ai_protocol); + if(s < 0) + continue; + if(p->ai_addr->sa_family == AF_INET6 && scope_id > 0) { + struct sockaddr_in6 * addr6 = (struct sockaddr_in6 *)p->ai_addr; + addr6->sin6_scope_id = scope_id; + } +#ifdef MINIUPNPC_SET_SOCKET_TIMEOUT + /* setting a 3 seconds timeout for the connect() call */ + timeout.tv_sec = 3; + timeout.tv_usec = 0; + if(setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(struct timeval)) < 0) + { + PRINT_SOCKET_ERROR("setsockopt"); + } + timeout.tv_sec = 3; + timeout.tv_usec = 0; + if(setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(struct timeval)) < 0) + { + PRINT_SOCKET_ERROR("setsockopt"); + } +#endif /* #ifdef MINIUPNPC_SET_SOCKET_TIMEOUT */ + n = connect(s, p->ai_addr, p->ai_addrlen); +#ifdef MINIUPNPC_IGNORE_EINTR + /* EINTR The system call was interrupted by a signal that was caught + * EINPROGRESS The socket is nonblocking and the connection cannot + * be completed immediately. */ + while(n < 0 && (errno == EINTR || errno == EINPROGRESS)) + { + socklen_t len; + fd_set wset; + int err; + FD_ZERO(&wset); + FD_SET(s, &wset); + if((n = select(s + 1, NULL, &wset, NULL, NULL)) == -1 && errno == EINTR) + continue; + /*len = 0;*/ + /*n = getpeername(s, NULL, &len);*/ + len = sizeof(err); + if(getsockopt(s, SOL_SOCKET, SO_ERROR, &err, &len) < 0) { + PRINT_SOCKET_ERROR("getsockopt"); + closesocket(s); + freeaddrinfo(ai); + return -1; + } + if(err != 0) { + errno = err; + n = -1; + } + } +#endif /* #ifdef MINIUPNPC_IGNORE_EINTR */ + if(n < 0) + { + closesocket(s); + continue; + } + else + { + break; + } + } + freeaddrinfo(ai); + if(s < 0) + { + PRINT_SOCKET_ERROR("socket"); + return -1; + } + if(n < 0) + { + PRINT_SOCKET_ERROR("connect"); + return -1; + } +#endif /* #ifdef USE_GETHOSTBYNAME */ + return s; +} + diff --git a/ext/miniupnpc/connecthostport.h b/ext/miniupnpc/connecthostport.h new file mode 100644 index 000000000..56941d6fa --- /dev/null +++ b/ext/miniupnpc/connecthostport.h @@ -0,0 +1,18 @@ +/* $Id: connecthostport.h,v 1.3 2012/09/27 15:42:10 nanard Exp $ */ +/* Project: miniupnp + * http://miniupnp.free.fr/ + * Author: Thomas Bernard + * Copyright (c) 2010-2012 Thomas Bernard + * This software is subjects to the conditions detailed + * in the LICENCE file provided within this distribution */ +#ifndef CONNECTHOSTPORT_H_INCLUDED +#define CONNECTHOSTPORT_H_INCLUDED + +/* connecthostport() + * return a socket connected (TCP) to the host and port + * or -1 in case of error */ +int connecthostport(const char * host, unsigned short port, + unsigned int scope_id); + +#endif + diff --git a/ext/miniupnpc/external-ip.sh b/ext/miniupnpc/external-ip.sh new file mode 100755 index 000000000..965d86b2a --- /dev/null +++ b/ext/miniupnpc/external-ip.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# $Id: external-ip.sh,v 1.1 2010/08/05 12:57:41 nanard Exp $ +# (c) 2010 Reuben Hawkins +upnpc -s | grep ExternalIPAddress | sed 's/[^0-9\.]//g' diff --git a/ext/miniupnpc/igd_desc_parse.c b/ext/miniupnpc/igd_desc_parse.c new file mode 100644 index 000000000..d2999ad01 --- /dev/null +++ b/ext/miniupnpc/igd_desc_parse.c @@ -0,0 +1,123 @@ +/* $Id: igd_desc_parse.c,v 1.17 2015/09/15 13:30:04 nanard Exp $ */ +/* Project : miniupnp + * http://miniupnp.free.fr/ + * Author : Thomas Bernard + * Copyright (c) 2005-2015 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. */ + +#include "igd_desc_parse.h" +#include +#include + +/* Start element handler : + * update nesting level counter and copy element name */ +void IGDstartelt(void * d, const char * name, int l) +{ + struct IGDdatas * datas = (struct IGDdatas *)d; + if(l >= MINIUPNPC_URL_MAXSIZE) + l = MINIUPNPC_URL_MAXSIZE-1; + memcpy(datas->cureltname, name, l); + datas->cureltname[l] = '\0'; + datas->level++; + if( (l==7) && !memcmp(name, "service", l) ) { + datas->tmp.controlurl[0] = '\0'; + datas->tmp.eventsuburl[0] = '\0'; + datas->tmp.scpdurl[0] = '\0'; + datas->tmp.servicetype[0] = '\0'; + } +} + +#define COMPARE(str, cstr) (0==memcmp(str, cstr, sizeof(cstr) - 1)) + +/* End element handler : + * update nesting level counter and update parser state if + * service element is parsed */ +void IGDendelt(void * d, const char * name, int l) +{ + struct IGDdatas * datas = (struct IGDdatas *)d; + datas->level--; + /*printf("endelt %2d %.*s\n", datas->level, l, name);*/ + if( (l==7) && !memcmp(name, "service", l) ) + { + if(COMPARE(datas->tmp.servicetype, + "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:")) { + memcpy(&datas->CIF, &datas->tmp, sizeof(struct IGDdatas_service)); + } else if(COMPARE(datas->tmp.servicetype, + "urn:schemas-upnp-org:service:WANIPv6FirewallControl:")) { + memcpy(&datas->IPv6FC, &datas->tmp, sizeof(struct IGDdatas_service)); + } else if(COMPARE(datas->tmp.servicetype, + "urn:schemas-upnp-org:service:WANIPConnection:") + || COMPARE(datas->tmp.servicetype, + "urn:schemas-upnp-org:service:WANPPPConnection:") ) { + if(datas->first.servicetype[0] == '\0') { + memcpy(&datas->first, &datas->tmp, sizeof(struct IGDdatas_service)); + } else { + memcpy(&datas->second, &datas->tmp, sizeof(struct IGDdatas_service)); + } + } + } +} + +/* Data handler : + * copy data depending on the current element name and state */ +void IGDdata(void * d, const char * data, int l) +{ + struct IGDdatas * datas = (struct IGDdatas *)d; + char * dstmember = 0; + /*printf("%2d %s : %.*s\n", + datas->level, datas->cureltname, l, data); */ + if( !strcmp(datas->cureltname, "URLBase") ) + dstmember = datas->urlbase; + else if( !strcmp(datas->cureltname, "presentationURL") ) + dstmember = datas->presentationurl; + else if( !strcmp(datas->cureltname, "serviceType") ) + dstmember = datas->tmp.servicetype; + else if( !strcmp(datas->cureltname, "controlURL") ) + dstmember = datas->tmp.controlurl; + else if( !strcmp(datas->cureltname, "eventSubURL") ) + dstmember = datas->tmp.eventsuburl; + else if( !strcmp(datas->cureltname, "SCPDURL") ) + dstmember = datas->tmp.scpdurl; +/* else if( !strcmp(datas->cureltname, "deviceType") ) + dstmember = datas->devicetype_tmp;*/ + if(dstmember) + { + if(l>=MINIUPNPC_URL_MAXSIZE) + l = MINIUPNPC_URL_MAXSIZE-1; + memcpy(dstmember, data, l); + dstmember[l] = '\0'; + } +} + +#ifdef DEBUG +void printIGD(struct IGDdatas * d) +{ + printf("urlbase = '%s'\n", d->urlbase); + printf("WAN Device (Common interface config) :\n"); + /*printf(" deviceType = '%s'\n", d->CIF.devicetype);*/ + printf(" serviceType = '%s'\n", d->CIF.servicetype); + printf(" controlURL = '%s'\n", d->CIF.controlurl); + printf(" eventSubURL = '%s'\n", d->CIF.eventsuburl); + printf(" SCPDURL = '%s'\n", d->CIF.scpdurl); + printf("primary WAN Connection Device (IP or PPP Connection):\n"); + /*printf(" deviceType = '%s'\n", d->first.devicetype);*/ + printf(" servicetype = '%s'\n", d->first.servicetype); + printf(" controlURL = '%s'\n", d->first.controlurl); + printf(" eventSubURL = '%s'\n", d->first.eventsuburl); + printf(" SCPDURL = '%s'\n", d->first.scpdurl); + printf("secondary WAN Connection Device (IP or PPP Connection):\n"); + /*printf(" deviceType = '%s'\n", d->second.devicetype);*/ + printf(" servicetype = '%s'\n", d->second.servicetype); + printf(" controlURL = '%s'\n", d->second.controlurl); + printf(" eventSubURL = '%s'\n", d->second.eventsuburl); + printf(" SCPDURL = '%s'\n", d->second.scpdurl); + printf("WAN IPv6 Firewall Control :\n"); + /*printf(" deviceType = '%s'\n", d->IPv6FC.devicetype);*/ + printf(" servicetype = '%s'\n", d->IPv6FC.servicetype); + printf(" controlURL = '%s'\n", d->IPv6FC.controlurl); + printf(" eventSubURL = '%s'\n", d->IPv6FC.eventsuburl); + printf(" SCPDURL = '%s'\n", d->IPv6FC.scpdurl); +} +#endif /* DEBUG */ + diff --git a/ext/miniupnpc/igd_desc_parse.h b/ext/miniupnpc/igd_desc_parse.h new file mode 100644 index 000000000..0de546b69 --- /dev/null +++ b/ext/miniupnpc/igd_desc_parse.h @@ -0,0 +1,49 @@ +/* $Id: igd_desc_parse.h,v 1.12 2014/11/17 17:19:13 nanard Exp $ */ +/* Project : miniupnp + * http://miniupnp.free.fr/ + * Author : Thomas Bernard + * Copyright (c) 2005-2014 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. + * */ +#ifndef IGD_DESC_PARSE_H_INCLUDED +#define IGD_DESC_PARSE_H_INCLUDED + +/* Structure to store the result of the parsing of UPnP + * descriptions of Internet Gateway Devices */ +#define MINIUPNPC_URL_MAXSIZE (128) +struct IGDdatas_service { + char controlurl[MINIUPNPC_URL_MAXSIZE]; + char eventsuburl[MINIUPNPC_URL_MAXSIZE]; + char scpdurl[MINIUPNPC_URL_MAXSIZE]; + char servicetype[MINIUPNPC_URL_MAXSIZE]; + /*char devicetype[MINIUPNPC_URL_MAXSIZE];*/ +}; + +struct IGDdatas { + char cureltname[MINIUPNPC_URL_MAXSIZE]; + char urlbase[MINIUPNPC_URL_MAXSIZE]; + char presentationurl[MINIUPNPC_URL_MAXSIZE]; + int level; + /*int state;*/ + /* "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1" */ + struct IGDdatas_service CIF; + /* "urn:schemas-upnp-org:service:WANIPConnection:1" + * "urn:schemas-upnp-org:service:WANPPPConnection:1" */ + struct IGDdatas_service first; + /* if both WANIPConnection and WANPPPConnection are present */ + struct IGDdatas_service second; + /* "urn:schemas-upnp-org:service:WANIPv6FirewallControl:1" */ + struct IGDdatas_service IPv6FC; + /* tmp */ + struct IGDdatas_service tmp; +}; + +void IGDstartelt(void *, const char *, int); +void IGDendelt(void *, const char *, int); +void IGDdata(void *, const char *, int); +#ifdef DEBUG +void printIGD(struct IGDdatas *); +#endif /* DEBUG */ + +#endif /* IGD_DESC_PARSE_H_INCLUDED */ diff --git a/ext/miniupnpc/java/JavaBridgeTest.java b/ext/miniupnpc/java/JavaBridgeTest.java new file mode 100644 index 000000000..c658c5990 --- /dev/null +++ b/ext/miniupnpc/java/JavaBridgeTest.java @@ -0,0 +1,97 @@ +import java.nio.ByteBuffer; +import java.nio.IntBuffer; + +import fr.free.miniupnp.*; + +/** + * + * @author syuu + */ +public class JavaBridgeTest { + public static void main(String[] args) { + int UPNP_DELAY = 2000; + MiniupnpcLibrary miniupnpc = MiniupnpcLibrary.INSTANCE; + UPNPDev devlist = null; + UPNPUrls urls = new UPNPUrls(); + IGDdatas data = new IGDdatas(); + ByteBuffer lanaddr = ByteBuffer.allocate(16); + ByteBuffer intClient = ByteBuffer.allocate(16); + ByteBuffer intPort = ByteBuffer.allocate(6); + ByteBuffer desc = ByteBuffer.allocate(80); + ByteBuffer enabled = ByteBuffer.allocate(4); + ByteBuffer leaseDuration = ByteBuffer.allocate(16); + int ret; + int i; + + if(args.length < 2) { + System.err.println("Usage : java [...] JavaBridgeTest port protocol"); + System.out.println(" port is numeric, protocol is TCP or UDP"); + return; + } + + devlist = miniupnpc.upnpDiscover(UPNP_DELAY, (String) null, (String) null, 0, 0, (byte)2, IntBuffer.allocate(1)); + if (devlist != null) { + System.out.println("List of UPNP devices found on the network :"); + for (UPNPDev device = devlist; device != null; device = device.pNext) { + System.out.println("desc: " + device.descURL.getString(0) + " st: " + device.st.getString(0)); + } + if ((i = miniupnpc.UPNP_GetValidIGD(devlist, urls, data, lanaddr, 16)) != 0) { + switch (i) { + case 1: + System.out.println("Found valid IGD : " + urls.controlURL.getString(0)); + break; + case 2: + System.out.println("Found a (not connected?) IGD : " + urls.controlURL.getString(0)); + System.out.println("Trying to continue anyway"); + break; + case 3: + System.out.println("UPnP device found. Is it an IGD ? : " + urls.controlURL.getString(0)); + System.out.println("Trying to continue anyway"); + break; + default: + System.out.println("Found device (igd ?) : " + urls.controlURL.getString(0)); + System.out.println("Trying to continue anyway"); + + } + System.out.println("Local LAN ip address : " + new String(lanaddr.array())); + ByteBuffer externalAddress = ByteBuffer.allocate(16); + miniupnpc.UPNP_GetExternalIPAddress(urls.controlURL.getString(0), + new String(data.first.servicetype), externalAddress); + System.out.println("ExternalIPAddress = " + new String(externalAddress.array())); + ret = miniupnpc.UPNP_AddPortMapping( + urls.controlURL.getString(0), // controlURL + new String(data.first.servicetype), // servicetype + args[0], // external Port + args[0], // internal Port + new String(lanaddr.array()), // internal client + "added via miniupnpc/JAVA !", // description + args[1], // protocol UDP or TCP + null, // remote host (useless) + "0"); // leaseDuration + if (ret != MiniupnpcLibrary.UPNPCOMMAND_SUCCESS) + System.out.println("AddPortMapping() failed with code " + ret); + ret = miniupnpc.UPNP_GetSpecificPortMappingEntry( + urls.controlURL.getString(0), new String(data.first.servicetype), + args[0], args[1], null, intClient, intPort, + desc, enabled, leaseDuration); + if (ret != MiniupnpcLibrary.UPNPCOMMAND_SUCCESS) + System.out.println("GetSpecificPortMappingEntry() failed with code " + ret); + System.out.println("InternalIP:Port = " + + new String(intClient.array()) + ":" + new String(intPort.array()) + + " (" + new String(desc.array()) + ")"); + ret = miniupnpc.UPNP_DeletePortMapping( + urls.controlURL.getString(0), + new String(data.first.servicetype), + args[0], args[1], null); + if (ret != MiniupnpcLibrary.UPNPCOMMAND_SUCCESS) + System.out.println("DelPortMapping() failed with code " + ret); + miniupnpc.FreeUPNPUrls(urls); + } else { + System.out.println("No valid UPNP Internet Gateway Device found."); + } + miniupnpc.freeUPNPDevlist(devlist); + } else { + System.out.println("No IGD UPnP Device found on the network !\n"); + } + } +} diff --git a/ext/miniupnpc/java/testjava.bat b/ext/miniupnpc/java/testjava.bat new file mode 100755 index 000000000..b836da149 --- /dev/null +++ b/ext/miniupnpc/java/testjava.bat @@ -0,0 +1,8 @@ +@echo off +set JAVA=java +set JAVAC=javac +REM notice the semicolon for Windows. Write once, run ... oh nevermind +set CP=miniupnpc_win32.jar;. + +%JAVAC% -cp "%CP%" JavaBridgeTest.java || exit 1 +%JAVA% -cp "%CP%" JavaBridgeTest 12345 UDP || exit 1 diff --git a/ext/miniupnpc/java/testjava.sh b/ext/miniupnpc/java/testjava.sh new file mode 100755 index 000000000..9880523a1 --- /dev/null +++ b/ext/miniupnpc/java/testjava.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +JAVA=java +JAVAC=javac +CP=$(for i in *.jar; do echo -n $i:; done). + +$JAVAC -cp $CP JavaBridgeTest.java || exit 1 +$JAVA -cp $CP JavaBridgeTest 12345 UDP || exit 1 diff --git a/ext/miniupnpc/listdevices.c b/ext/miniupnpc/listdevices.c new file mode 100644 index 000000000..a93c29ff4 --- /dev/null +++ b/ext/miniupnpc/listdevices.c @@ -0,0 +1,110 @@ +/* $Id: listdevices.c,v 1.7 2015/10/08 16:15:47 nanard Exp $ */ +/* Project : miniupnp + * Author : Thomas Bernard + * Copyright (c) 2013-2015 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. */ + +#include +#include +#include +#ifdef _WIN32 +#include +#endif /* _WIN32 */ +#include "miniupnpc.h" + +int main(int argc, char * * argv) +{ + const char * searched_device = NULL; + const char * * searched_devices = NULL; + const char * multicastif = 0; + const char * minissdpdpath = 0; + int ipv6 = 0; + unsigned char ttl = 2; + int error = 0; + struct UPNPDev * devlist = 0; + struct UPNPDev * dev; + int i; + +#ifdef _WIN32 + WSADATA wsaData; + int nResult = WSAStartup(MAKEWORD(2,2), &wsaData); + if(nResult != NO_ERROR) + { + fprintf(stderr, "WSAStartup() failed.\n"); + return -1; + } +#endif + + for(i = 1; i < argc; i++) { + if(strcmp(argv[i], "-6") == 0) + ipv6 = 1; + else if(strcmp(argv[i], "-d") == 0) { + if(++i >= argc) { + fprintf(stderr, "%s option needs one argument\n", "-d"); + return 1; + } + searched_device = argv[i]; + } else if(strcmp(argv[i], "-t") == 0) { + if(++i >= argc) { + fprintf(stderr, "%s option needs one argument\n", "-t"); + return 1; + } + ttl = (unsigned char)atoi(argv[i]); + } else if(strcmp(argv[i], "-l") == 0) { + if(++i >= argc) { + fprintf(stderr, "-l option needs at least one argument\n"); + return 1; + } + searched_devices = (const char * *)(argv + i); + break; + } else if(strcmp(argv[i], "-m") == 0) { + if(++i >= argc) { + fprintf(stderr, "-m option needs one argument\n"); + return 1; + } + multicastif = argv[i]; + } else { + printf("usage : %s [options] [-l ...]\n", argv[0]); + printf("options :\n"); + printf(" -6 : use IPv6\n"); + printf(" -m address/ifname : network interface to use for multicast\n"); + printf(" -d : search only for this type of device\n"); + printf(" -l ... : search only for theses types of device\n"); + printf(" -t ttl : set multicast TTL. Default value is 2.\n"); + printf(" -h : this help\n"); + return 1; + } + } + + if(searched_device) { + printf("searching UPnP device type %s\n", searched_device); + devlist = upnpDiscoverDevice(searched_device, + 2000, multicastif, minissdpdpath, + 0/*localport*/, ipv6, ttl, &error); + } else if(searched_devices) { + printf("searching UPnP device types :\n"); + for(i = 0; searched_devices[i]; i++) + printf("\t%s\n", searched_devices[i]); + devlist = upnpDiscoverDevices(searched_devices, + 2000, multicastif, minissdpdpath, + 0/*localport*/, ipv6, ttl, &error, 1); + } else { + printf("searching all UPnP devices\n"); + devlist = upnpDiscoverAll(2000, multicastif, minissdpdpath, + 0/*localport*/, ipv6, ttl, &error); + } + if(devlist) { + for(dev = devlist, i = 1; dev != NULL; dev = dev->pNext, i++) { + printf("%3d: %-48s\n", i, dev->st); + printf(" %s\n", dev->descURL); + printf(" %s\n", dev->usn); + } + freeUPNPDevlist(devlist); + } else { + printf("no device found.\n"); + } + + return 0; +} + diff --git a/ext/miniupnpc/man3/miniupnpc.3 b/ext/miniupnpc/man3/miniupnpc.3 new file mode 100644 index 000000000..7b997d475 --- /dev/null +++ b/ext/miniupnpc/man3/miniupnpc.3 @@ -0,0 +1,55 @@ +.TH MINIUPNPC 3 +.SH NAME +miniupnpc \- UPnP client library +.SH SYNOPSIS +.SH DESCRIPTION +The miniupnpc library implement the UPnP protocol defined +to dialog with Internet Gateway Devices. It also has +the ability to use data gathered by minissdpd(1) about +UPnP devices up on the network in order to skip the +long UPnP device discovery process. +.PP +At first, upnpDiscover(3) has to be used to discover UPnP IGD present +on the network. Then UPNP_GetValidIGD(3) to select the right one. +Alternatively, UPNP_GetIGDFromUrl(3) could be used to bypass discovery +process if the root description url of the device to use is known. +Then all the UPNP_* functions can be used, such as +UPNP_GetConnectionTypeInfo(3), UPNP_AddPortMapping(3), etc... +.SH "HEADER FILES" +.IP miniupnpc.h +That's the main header file for the miniupnpc library API. +It contains all the functions and structures related to device discovery. +.IP upnpcommands.h +This header file contain the UPnP IGD methods that are accessible +through the miniupnpc API. The name of the C functions are matching +the UPnP methods names. ie: GetGenericPortMappingEntry is +UPNP_GetGenericPortMappingEntry. +.SH "API FUNCTIONS" +.IP "struct UPNPDev * upnpDiscover(int delay, const char * multicastif, const char * minissdpdsock, int localport, int ipv6, int * error);" +execute the discovery process. +delay (in millisecond) is the maximum time for waiting any device response. +If available, device list will be obtained from MiniSSDPd. +Default path for minissdpd socket will be used if minissdpdsock argument is NULL. +If multicastif is not NULL, it will be used instead of the default multicast interface for sending SSDP discover packets. +If localport is set to UPNP_LOCAL_PORT_SAME(1) SSDP packets will be sent +from the source port 1900 (same as destination port), if set to +UPNP_LOCAL_PORT_ANY(0) system assign a source port, any other value will +be attempted as the source port. +If ipv6 is not 0, IPv6 is used instead of IPv4 for the discovery process. +.IP "void freeUPNPDevlist(struct UPNPDev * devlist);" +free the list returned by upnpDiscover(). +.IP "int UPNP_GetValidIGD(struct UPNPDev * devlist, struct UPNPUrls * urls, struct IGDdatas * data, char * lanaddr, int lanaddrlen);" +browse the list of device returned by upnpDiscover(), find +a live UPnP internet gateway device and fill structures passed as arguments +with data used for UPNP methods invokation. +.IP "int UPNP_GetIGDFromUrl(const char * rootdescurl, struct UPNPUrls * urls, struct IGDdatas * data, char * lanaddr, int lanaddrlen);" +permit to bypass the upnpDiscover() call if the xml root description +URL of the UPnP IGD is known. +Fill structures passed as arguments +with data used for UPNP methods invokation. +.IP "void GetUPNPUrls(struct UPNPUrls *, struct IGDdatas *, const char *);" +.IP "void FreeUPNPUrls(struct UPNPUrls *);" + +.SH "SEE ALSO" +minissdpd(1) +.SH BUGS diff --git a/ext/miniupnpc/mingw32make.bat b/ext/miniupnpc/mingw32make.bat new file mode 100644 index 000000000..c5d3cc4ff --- /dev/null +++ b/ext/miniupnpc/mingw32make.bat @@ -0,0 +1,8 @@ +@mingw32-make -f Makefile.mingw %1 +@if errorlevel 1 goto end +@if not exist upnpc-static.exe goto end +@strip upnpc-static.exe +@upx --best upnpc-static.exe +@strip upnpc-shared.exe +@upx --best upnpc-shared.exe +:end diff --git a/ext/miniupnpc/minihttptestserver.c b/ext/miniupnpc/minihttptestserver.c new file mode 100644 index 000000000..32e3cb78a --- /dev/null +++ b/ext/miniupnpc/minihttptestserver.c @@ -0,0 +1,655 @@ +/* $Id: minihttptestserver.c,v 1.18 2015/07/15 12:41:15 nanard Exp $ */ +/* Project : miniUPnP + * Author : Thomas Bernard + * Copyright (c) 2011-2015 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. + * */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define CRAP_LENGTH (2048) + +volatile sig_atomic_t quit = 0; +volatile sig_atomic_t child_to_wait_for = 0; + +/** + * signal handler for SIGCHLD (child status has changed) + */ +void handle_signal_chld(int sig) +{ + (void)sig; + /* printf("handle_signal_chld(%d)\n", sig); */ + ++child_to_wait_for; +} + +/** + * signal handler for SIGINT (CRTL C) + */ +void handle_signal_int(int sig) +{ + (void)sig; + /* printf("handle_signal_int(%d)\n", sig); */ + quit = 1; +} + +/** + * build a text/plain content of the specified length + */ +void build_content(char * p, int n) +{ + char line_buffer[80]; + int k; + int i = 0; + + while(n > 0) { + k = snprintf(line_buffer, sizeof(line_buffer), + "%04d_ABCDEFGHIJKL_This_line_is_64_bytes_long_ABCDEFGHIJKL_%04d\r\n", + i, i); + if(k != 64) { + fprintf(stderr, "snprintf() returned %d in build_content()\n", k); + } + ++i; + if(n >= 64) { + memcpy(p, line_buffer, 64); + p += 64; + n -= 64; + } else { + memcpy(p, line_buffer, n); + p += n; + n = 0; + } + } +} + +/** + * build crappy content + */ +void build_crap(char * p, int n) +{ + static const char crap[] = "_CRAP_\r\n"; + int i; + + while(n > 0) { + i = sizeof(crap) - 1; + if(i > n) + i = n; + memcpy(p, crap, i); + p += i; + n -= i; + } +} + +/** + * build chunked response. + * return a malloc'ed buffer + */ +char * build_chunked_response(int content_length, int * response_len) +{ + char * response_buffer; + char * content_buffer; + int buffer_length; + int i, n; + + /* allocate to have some margin */ + buffer_length = 256 + content_length + (content_length >> 4); + response_buffer = malloc(buffer_length); + if(response_buffer == NULL) + return NULL; + *response_len = snprintf(response_buffer, buffer_length, + "HTTP/1.1 200 OK\r\n" + "Content-Type: text/plain\r\n" + "Transfer-Encoding: chunked\r\n" + "\r\n"); + + /* build the content */ + content_buffer = malloc(content_length); + if(content_buffer == NULL) { + free(response_buffer); + return NULL; + } + build_content(content_buffer, content_length); + + /* chunk it */ + i = 0; + while(i < content_length) { + n = (rand() % 199) + 1; + if(i + n > content_length) { + n = content_length - i; + } + /* TODO : check buffer size ! */ + *response_len += snprintf(response_buffer + *response_len, + buffer_length - *response_len, + "%x\r\n", n); + memcpy(response_buffer + *response_len, content_buffer + i, n); + *response_len += n; + i += n; + response_buffer[(*response_len)++] = '\r'; + response_buffer[(*response_len)++] = '\n'; + } + /* the last chunk : "0\r\n" a empty body and then + * the final "\r\n" */ + memcpy(response_buffer + *response_len, "0\r\n\r\n", 5); + *response_len += 5; + free(content_buffer); + + printf("resp_length=%d buffer_length=%d content_length=%d\n", + *response_len, buffer_length, content_length); + return response_buffer; +} + +/* favicon.ico generator */ +#ifdef OLD_HEADER +#define FAVICON_LENGTH (6 + 16 + 12 + 8 + 32 * 4) +#else +#define FAVICON_LENGTH (6 + 16 + 40 + 8 + 32 * 4) +#endif +void build_favicon_content(char * p, int n) +{ + int i; + if(n < FAVICON_LENGTH) + return; + /* header : 6 bytes */ + *p++ = 0; + *p++ = 0; + *p++ = 1; /* type : ICO */ + *p++ = 0; + *p++ = 1; /* number of images in file */ + *p++ = 0; + /* image directory (1 entry) : 16 bytes */ + *p++ = 16; /* width */ + *p++ = 16; /* height */ + *p++ = 2; /* number of colors in the palette. 0 = no palette */ + *p++ = 0; /* reserved */ + *p++ = 1; /* color planes */ + *p++ = 0; /* " */ + *p++ = 1; /* bpp */ + *p++ = 0; /* " */ +#ifdef OLD_HEADER + *p++ = 12 + 8 + 32 * 4; /* bmp size */ +#else + *p++ = 40 + 8 + 32 * 4; /* bmp size */ +#endif + *p++ = 0; /* " */ + *p++ = 0; /* " */ + *p++ = 0; /* " */ + *p++ = 6 + 16; /* bmp offset */ + *p++ = 0; /* " */ + *p++ = 0; /* " */ + *p++ = 0; /* " */ + /* BMP */ +#ifdef OLD_HEADER + /* BITMAPCOREHEADER */ + *p++ = 12; /* size of this header */ + *p++ = 0; /* " */ + *p++ = 0; /* " */ + *p++ = 0; /* " */ + *p++ = 16; /* width */ + *p++ = 0; /* " */ + *p++ = 16 * 2; /* height x 2 ! */ + *p++ = 0; /* " */ + *p++ = 1; /* color planes */ + *p++ = 0; /* " */ + *p++ = 1; /* bpp */ + *p++ = 0; /* " */ +#else + /* BITMAPINFOHEADER */ + *p++ = 40; /* size of this header */ + *p++ = 0; /* " */ + *p++ = 0; /* " */ + *p++ = 0; /* " */ + *p++ = 16; /* width */ + *p++ = 0; /* " */ + *p++ = 0; /* " */ + *p++ = 0; /* " */ + *p++ = 16 * 2; /* height x 2 ! */ + *p++ = 0; /* " */ + *p++ = 0; /* " */ + *p++ = 0; /* " */ + *p++ = 1; /* color planes */ + *p++ = 0; /* " */ + *p++ = 1; /* bpp */ + *p++ = 0; /* " */ + /* compression method, image size, ppm x, ppm y */ + /* colors in the palette ? */ + /* important colors */ + for(i = 4 * 6; i > 0; --i) + *p++ = 0; +#endif + /* palette */ + *p++ = 0; /* b */ + *p++ = 0; /* g */ + *p++ = 0; /* r */ + *p++ = 0; /* reserved */ + *p++ = 255; /* b */ + *p++ = 255; /* g */ + *p++ = 255; /* r */ + *p++ = 0; /* reserved */ + /* pixel data */ + for(i = 16; i > 0; --i) { + if(i & 1) { + *p++ = 0125; + *p++ = 0125; + } else { + *p++ = 0252; + *p++ = 0252; + } + *p++ = 0; + *p++ = 0; + } + /* Opacity MASK */ + for(i = 16 * 4; i > 0; --i) { + *p++ = 0; + } +} + +enum modes { + MODE_INVALID, MODE_CHUNKED, MODE_ADDCRAP, MODE_NORMAL, MODE_FAVICON +}; + +const struct { + const enum modes mode; + const char * text; +} modes_array[] = { + {MODE_CHUNKED, "chunked"}, + {MODE_ADDCRAP, "addcrap"}, + {MODE_NORMAL, "normal"}, + {MODE_FAVICON, "favicon.ico"}, + {MODE_INVALID, NULL} +}; + +/** + * write the response with random behaviour ! + */ +void send_response(int c, const char * buffer, int len) +{ + int n; + while(len > 0) { + n = (rand() % 99) + 1; + if(n > len) + n = len; + n = write(c, buffer, n); + if(n < 0) { + if(errno != EINTR) { + perror("write"); + return; + } + /* if errno == EINTR, try again */ + } else { + len -= n; + buffer += n; + } + usleep(10000); /* 10ms */ + } +} + +/** + * handle the HTTP connection + */ +void handle_http_connection(int c) +{ + char request_buffer[2048]; + int request_len = 0; + int headers_found = 0; + int n, i; + char request_method[16]; + char request_uri[256]; + char http_version[16]; + char * p; + char * response_buffer; + int response_len; + enum modes mode; + int content_length = 16*1024; + + /* read the request */ + while(request_len < (int)sizeof(request_buffer) && !headers_found) { + n = read(c, + request_buffer + request_len, + sizeof(request_buffer) - request_len); + if(n < 0) { + if(errno == EINTR) + continue; + perror("read"); + return; + } else if(n==0) { + /* remote host closed the connection */ + break; + } else { + request_len += n; + for(i = 0; i < request_len - 3; i++) { + if(0 == memcmp(request_buffer + i, "\r\n\r\n", 4)) { + /* found the end of headers */ + headers_found = 1; + break; + } + } + } + } + if(!headers_found) { + /* error */ + printf("no HTTP header found in the request\n"); + return; + } + printf("headers :\n%.*s", request_len, request_buffer); + /* the request have been received, now parse the request line */ + p = request_buffer; + for(i = 0; i < (int)sizeof(request_method) - 1; i++) { + if(*p == ' ' || *p == '\r') + break; + request_method[i] = *p; + ++p; + } + request_method[i] = '\0'; + while(*p == ' ') + p++; + for(i = 0; i < (int)sizeof(request_uri) - 1; i++) { + if(*p == ' ' || *p == '\r') + break; + request_uri[i] = *p; + ++p; + } + request_uri[i] = '\0'; + while(*p == ' ') + p++; + for(i = 0; i < (int)sizeof(http_version) - 1; i++) { + if(*p == ' ' || *p == '\r') + break; + http_version[i] = *p; + ++p; + } + http_version[i] = '\0'; + printf("Method = %s, URI = %s, %s\n", + request_method, request_uri, http_version); + /* check if the request method is allowed */ + if(0 != strcmp(request_method, "GET")) { + const char response405[] = "HTTP/1.1 405 Method Not Allowed\r\n" + "Allow: GET\r\n\r\n"; + const char * pc; + /* 405 Method Not Allowed */ + /* The response MUST include an Allow header containing a list + * of valid methods for the requested resource. */ + n = sizeof(response405) - 1; + pc = response405; + while(n > 0) { + i = write(c, pc, n); + if(i<0) { + if(errno != EINTR) { + perror("write"); + return; + } + } else { + n -= i; + pc += i; + } + } + return; + } + + mode = MODE_INVALID; + /* use the request URI to know what to do */ + for(i = 0; modes_array[i].mode != MODE_INVALID; i++) { + if(strstr(request_uri, modes_array[i].text)) { + mode = modes_array[i].mode; /* found */ + break; + } + } + + switch(mode) { + case MODE_CHUNKED: + response_buffer = build_chunked_response(content_length, &response_len); + break; + case MODE_ADDCRAP: + response_len = content_length+256; + response_buffer = malloc(response_len); + if(!response_buffer) + break; + n = snprintf(response_buffer, response_len, + "HTTP/1.1 200 OK\r\n" + "Server: minihttptestserver\r\n" + "Content-Type: text/plain\r\n" + "Content-Length: %d\r\n" + "\r\n", content_length); + response_len = content_length+n+CRAP_LENGTH; + p = realloc(response_buffer, response_len); + if(p == NULL) { + /* error 500 */ + free(response_buffer); + response_buffer = NULL; + break; + } + response_buffer = p; + build_content(response_buffer + n, content_length); + build_crap(response_buffer + n + content_length, CRAP_LENGTH); + break; + case MODE_FAVICON: + content_length = FAVICON_LENGTH; + response_len = content_length + 256; + response_buffer = malloc(response_len); + if(!response_buffer) + break; + n = snprintf(response_buffer, response_len, + "HTTP/1.1 200 OK\r\n" + "Server: minihttptestserver\r\n" + "Content-Type: image/vnd.microsoft.icon\r\n" + "Content-Length: %d\r\n" + "\r\n", content_length); + /* image/x-icon */ + build_favicon_content(response_buffer + n, content_length); + response_len = content_length + n; + break; + default: + response_len = content_length+256; + response_buffer = malloc(response_len); + if(!response_buffer) + break; + n = snprintf(response_buffer, response_len, + "HTTP/1.1 200 OK\r\n" + "Server: minihttptestserver\r\n" + "Content-Type: text/plain\r\n" + "\r\n"); + response_len = content_length+n; + p = realloc(response_buffer, response_len); + if(p == NULL) { + /* Error 500 */ + free(response_buffer); + response_buffer = NULL; + break; + } + response_buffer = p; + build_content(response_buffer + n, response_len - n); + } + + if(response_buffer) { + send_response(c, response_buffer, response_len); + free(response_buffer); + } else { + /* Error 500 */ + } +} + +/** + */ +int main(int argc, char * * argv) { + int ipv6 = 0; + int s, c, i; + unsigned short port = 0; + struct sockaddr_storage server_addr; + socklen_t server_addrlen; + struct sockaddr_storage client_addr; + socklen_t client_addrlen; + pid_t pid; + int child = 0; + int status; + const char * expected_file_name = NULL; + struct sigaction sa; + + for(i = 1; i < argc; i++) { + if(argv[i][0] == '-') { + switch(argv[i][1]) { + case '6': + ipv6 = 1; + break; + case 'e': + /* write expected file ! */ + expected_file_name = argv[++i]; + break; + case 'p': + /* port */ + if(++i < argc) { + port = (unsigned short)atoi(argv[i]); + } + break; + default: + fprintf(stderr, "unknown command line switch '%s'\n", argv[i]); + } + } else { + fprintf(stderr, "unkown command line argument '%s'\n", argv[i]); + } + } + + srand(time(NULL)); + + memset(&sa, 0, sizeof(struct sigaction)); + + /*signal(SIGCHLD, handle_signal_chld);*/ + sa.sa_handler = handle_signal_chld; + if(sigaction(SIGCHLD, &sa, NULL) < 0) { + perror("sigaction"); + return 1; + } + /*signal(SIGINT, handle_signal_int);*/ + sa.sa_handler = handle_signal_int; + if(sigaction(SIGINT, &sa, NULL) < 0) { + perror("sigaction"); + return 1; + } + + s = socket(ipv6 ? AF_INET6 : AF_INET, SOCK_STREAM, 0); + if(s < 0) { + perror("socket"); + return 1; + } + memset(&server_addr, 0, sizeof(struct sockaddr_storage)); + memset(&client_addr, 0, sizeof(struct sockaddr_storage)); + if(ipv6) { + struct sockaddr_in6 * addr = (struct sockaddr_in6 *)&server_addr; + addr->sin6_family = AF_INET6; + addr->sin6_port = htons(port); + addr->sin6_addr = in6addr_loopback; + } else { + struct sockaddr_in * addr = (struct sockaddr_in *)&server_addr; + addr->sin_family = AF_INET; + addr->sin_port = htons(port); + addr->sin_addr.s_addr = htonl(INADDR_LOOPBACK); + } + if(bind(s, (struct sockaddr *)&server_addr, + ipv6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in)) < 0) { + perror("bind"); + return 1; + } + if(listen(s, 5) < 0) { + perror("listen"); + } + if(port == 0) { + server_addrlen = sizeof(struct sockaddr_storage); + if(getsockname(s, (struct sockaddr *)&server_addr, &server_addrlen) < 0) { + perror("getsockname"); + return 1; + } + if(ipv6) { + struct sockaddr_in6 * addr = (struct sockaddr_in6 *)&server_addr; + port = ntohs(addr->sin6_port); + } else { + struct sockaddr_in * addr = (struct sockaddr_in *)&server_addr; + port = ntohs(addr->sin_port); + } + printf("Listening on port %hu\n", port); + fflush(stdout); + } + + /* write expected file */ + if(expected_file_name) { + FILE * f; + f = fopen(expected_file_name, "wb"); + if(f) { + char * buffer; + buffer = malloc(16*1024); + if(buffer == NULL) { + fprintf(stderr, "memory allocation error\n"); + } else { + build_content(buffer, 16*1024); + i = fwrite(buffer, 1, 16*1024, f); + if(i != 16*1024) { + fprintf(stderr, "error writing to file %s : %dbytes written (out of %d)\n", expected_file_name, i, 16*1024); + } + free(buffer); + } + fclose(f); + } else { + fprintf(stderr, "error opening file %s for writing\n", expected_file_name); + } + } + + /* fork() loop */ + while(!child && !quit) { + while(child_to_wait_for > 0) { + pid = wait(&status); + if(pid < 0) { + perror("wait"); + } else { + printf("child(%d) terminated with status %d\n", pid, status); + } + --child_to_wait_for; + } + client_addrlen = sizeof(struct sockaddr_storage); + c = accept(s, (struct sockaddr *)&client_addr, + &client_addrlen); + if(c < 0) { + if(errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) + continue; + perror("accept"); + return 1; + } + printf("accept...\n"); + pid = fork(); + if(pid < 0) { + perror("fork"); + return 1; + } else if(pid == 0) { + /* child */ + child = 1; + close(s); + s = -1; + handle_http_connection(c); + } + close(c); + } + if(s >= 0) { + close(s); + s = -1; + } + if(!child) { + while(child_to_wait_for > 0) { + pid = wait(&status); + if(pid < 0) { + perror("wait"); + } else { + printf("child(%d) terminated with status %d\n", pid, status); + } + --child_to_wait_for; + } + printf("Bye...\n"); + } + return 0; +} + diff --git a/ext/miniupnpc/minisoap.c b/ext/miniupnpc/minisoap.c new file mode 100644 index 000000000..0b56558e4 --- /dev/null +++ b/ext/miniupnpc/minisoap.c @@ -0,0 +1,123 @@ +/* $Id: minisoap.c,v 1.24 2015/10/26 17:05:07 nanard Exp $ */ +/* Project : miniupnp + * Author : Thomas Bernard + * Copyright (c) 2005-2015 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. + * + * Minimal SOAP implementation for UPnP protocol. + */ +#include +#include +#ifdef _WIN32 +#include +#include +#define snprintf _snprintf +#else +#include +#include +#include +#endif +#include "minisoap.h" +#include "miniupnpcstrings.h" + +/* only for malloc */ +#include + +#ifdef _WIN32 +#define PRINT_SOCKET_ERROR(x) printf("Socket error: %s, %d\n", x, WSAGetLastError()); +#else +#define PRINT_SOCKET_ERROR(x) perror(x) +#endif + +/* httpWrite sends the headers and the body to the socket + * and returns the number of bytes sent */ +static int +httpWrite(int fd, const char * body, int bodysize, + const char * headers, int headerssize) +{ + int n = 0; + /*n = write(fd, headers, headerssize);*/ + /*if(bodysize>0) + n += write(fd, body, bodysize);*/ + /* Note : my old linksys router only took into account + * soap request that are sent into only one packet */ + char * p; + /* TODO: AVOID MALLOC, we could use writev() for that */ + p = malloc(headerssize+bodysize); + if(!p) + return -1; + memcpy(p, headers, headerssize); + memcpy(p+headerssize, body, bodysize); + /*n = write(fd, p, headerssize+bodysize);*/ + n = send(fd, p, headerssize+bodysize, 0); + if(n<0) { + PRINT_SOCKET_ERROR("send"); + } + /* disable send on the socket */ + /* draytek routers dont seems to like that... */ +#if 0 +#ifdef _WIN32 + if(shutdown(fd, SD_SEND)<0) { +#else + if(shutdown(fd, SHUT_WR)<0) { /*SD_SEND*/ +#endif + PRINT_SOCKET_ERROR("shutdown"); + } +#endif + free(p); + return n; +} + +/* self explanatory */ +int soapPostSubmit(int fd, + const char * url, + const char * host, + unsigned short port, + const char * action, + const char * body, + const char * httpversion) +{ + int bodysize; + char headerbuf[512]; + int headerssize; + char portstr[8]; + bodysize = (int)strlen(body); + /* We are not using keep-alive HTTP connections. + * HTTP/1.1 needs the header Connection: close to do that. + * This is the default with HTTP/1.0 + * Using HTTP/1.1 means we need to support chunked transfer-encoding : + * When using HTTP/1.1, the router "BiPAC 7404VNOX" always use chunked + * transfer encoding. */ + /* Connection: Close is normally there only in HTTP/1.1 but who knows */ + portstr[0] = '\0'; + if(port != 80) + snprintf(portstr, sizeof(portstr), ":%hu", port); + headerssize = snprintf(headerbuf, sizeof(headerbuf), + "POST %s HTTP/%s\r\n" + "Host: %s%s\r\n" + "User-Agent: " OS_STRING ", " UPNP_VERSION_STRING ", MiniUPnPc/" MINIUPNPC_VERSION_STRING "\r\n" + "Content-Length: %d\r\n" + "Content-Type: text/xml\r\n" + "SOAPAction: \"%s\"\r\n" + "Connection: Close\r\n" + "Cache-Control: no-cache\r\n" /* ??? */ + "Pragma: no-cache\r\n" + "\r\n", + url, httpversion, host, portstr, bodysize, action); + if ((unsigned int)headerssize >= sizeof(headerbuf)) + return -1; +#ifdef DEBUG + /*printf("SOAP request : headersize=%d bodysize=%d\n", + headerssize, bodysize); + */ + printf("SOAP request : POST %s HTTP/%s - Host: %s%s\n", + url, httpversion, host, portstr); + printf("SOAPAction: \"%s\" - Content-Length: %d\n", action, bodysize); + printf("Headers :\n%s", headerbuf); + printf("Body :\n%s\n", body); +#endif + return httpWrite(fd, body, bodysize, headerbuf, headerssize); +} + + diff --git a/ext/miniupnpc/minisoap.h b/ext/miniupnpc/minisoap.h new file mode 100644 index 000000000..14c859d1e --- /dev/null +++ b/ext/miniupnpc/minisoap.h @@ -0,0 +1,15 @@ +/* $Id: minisoap.h,v 1.5 2012/09/27 15:42:10 nanard Exp $ */ +/* Project : miniupnp + * Author : Thomas Bernard + * Copyright (c) 2005 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. */ +#ifndef MINISOAP_H_INCLUDED +#define MINISOAP_H_INCLUDED + +/*int httpWrite(int, const char *, int, const char *);*/ +int soapPostSubmit(int, const char *, const char *, unsigned short, + const char *, const char *, const char *); + +#endif + diff --git a/ext/miniupnpc/minissdpc.c b/ext/miniupnpc/minissdpc.c new file mode 100644 index 000000000..5a4267394 --- /dev/null +++ b/ext/miniupnpc/minissdpc.c @@ -0,0 +1,849 @@ +/* $Id: minissdpc.c,v 1.30 2015/10/26 17:05:07 nanard Exp $ */ +/* Project : miniupnp + * Web : http://miniupnp.free.fr/ + * Author : Thomas BERNARD + * copyright (c) 2005-2015 Thomas Bernard + * This software is subjet to the conditions detailed in the + * provided LICENCE file. */ +/*#include */ +#include +#include +#include +#include +#if defined(_WIN32) || defined(__amigaos__) || defined(__amigaos4__) +#ifdef _WIN32 +#include +#include +#include +#include +#include +#define snprintf _snprintf +#if !defined(_MSC_VER) +#include +#else /* !defined(_MSC_VER) */ +typedef unsigned short uint16_t; +#endif /* !defined(_MSC_VER) */ +#ifndef strncasecmp +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +#define strncasecmp _memicmp +#else /* defined(_MSC_VER) && (_MSC_VER >= 1400) */ +#define strncasecmp memicmp +#endif /* defined(_MSC_VER) && (_MSC_VER >= 1400) */ +#endif /* #ifndef strncasecmp */ +#endif /* _WIN32 */ +#if defined(__amigaos__) || defined(__amigaos4__) +#include +#endif /* defined(__amigaos__) || defined(__amigaos4__) */ +#if defined(__amigaos__) +#define uint16_t unsigned short +#endif /* defined(__amigaos__) */ +/* Hack */ +#define UNIX_PATH_LEN 108 +struct sockaddr_un { + uint16_t sun_family; + char sun_path[UNIX_PATH_LEN]; +}; +#else /* defined(_WIN32) || defined(__amigaos__) || defined(__amigaos4__) */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define closesocket close +#endif + +#ifdef _WIN32 +#define PRINT_SOCKET_ERROR(x) printf("Socket error: %s, %d\n", x, WSAGetLastError()); +#else +#define PRINT_SOCKET_ERROR(x) perror(x) +#endif + +#if !defined(__DragonFly__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(__CYGWIN__) && !defined(__sun) && !defined(__GNU__) && !defined(__FreeBSD_kernel__) +#define HAS_IP_MREQN +#endif + +#if defined(HAS_IP_MREQN) && defined(NEED_STRUCT_IP_MREQN) +/* Several versions of glibc don't define this structure, + * define it here and compile with CFLAGS NEED_STRUCT_IP_MREQN */ +struct ip_mreqn +{ + struct in_addr imr_multiaddr; /* IP multicast address of group */ + struct in_addr imr_address; /* local IP address of interface */ + int imr_ifindex; /* Interface index */ +}; +#endif + +#if defined(__amigaos__) || defined(__amigaos4__) +/* Amiga OS specific stuff */ +#define TIMEVAL struct timeval +#endif + +#include "minissdpc.h" +#include "miniupnpc.h" +#include "receivedata.h" + +#if !(defined(_WIN32) || defined(__amigaos__) || defined(__amigaos4__)) + +#include "codelength.h" + +struct UPNPDev * +getDevicesFromMiniSSDPD(const char * devtype, const char * socketpath, int * error) +{ + struct UPNPDev * devlist = NULL; + int s; + int res; + + s = connectToMiniSSDPD(socketpath); + if (s < 0) { + if (error) + *error = s; + return NULL; + } + res = requestDevicesFromMiniSSDPD(s, devtype); + if (res < 0) { + if (error) + *error = res; + } else { + devlist = receiveDevicesFromMiniSSDPD(s, error); + } + disconnectFromMiniSSDPD(s); + return devlist; +} + +/* macros used to read from unix socket */ +#define READ_BYTE_BUFFER(c) \ + if((int)bufferindex >= n) { \ + n = read(s, buffer, sizeof(buffer)); \ + if(n<=0) break; \ + bufferindex = 0; \ + } \ + c = buffer[bufferindex++]; + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif /* MIN */ + +#define READ_COPY_BUFFER(dst, len) \ + for(l = len, p = (unsigned char *)dst; l > 0; ) { \ + unsigned int lcopy; \ + if((int)bufferindex >= n) { \ + n = read(s, buffer, sizeof(buffer)); \ + if(n<=0) break; \ + bufferindex = 0; \ + } \ + lcopy = MIN(l, (n - bufferindex)); \ + memcpy(p, buffer + bufferindex, lcopy); \ + l -= lcopy; \ + p += lcopy; \ + bufferindex += lcopy; \ + } + +#define READ_DISCARD_BUFFER(len) \ + for(l = len; l > 0; ) { \ + unsigned int lcopy; \ + if(bufferindex >= n) { \ + n = read(s, buffer, sizeof(buffer)); \ + if(n<=0) break; \ + bufferindex = 0; \ + } \ + lcopy = MIN(l, (n - bufferindex)); \ + l -= lcopy; \ + bufferindex += lcopy; \ + } + +int +connectToMiniSSDPD(const char * socketpath) +{ + int s; + struct sockaddr_un addr; +#ifdef MINIUPNPC_SET_SOCKET_TIMEOUT + struct timeval timeout; +#endif /* #ifdef MINIUPNPC_SET_SOCKET_TIMEOUT */ + + s = socket(AF_UNIX, SOCK_STREAM, 0); + if(s < 0) + { + /*syslog(LOG_ERR, "socket(unix): %m");*/ + perror("socket(unix)"); + return MINISSDPC_SOCKET_ERROR; + } +#ifdef MINIUPNPC_SET_SOCKET_TIMEOUT + /* setting a 3 seconds timeout */ + timeout.tv_sec = 3; + timeout.tv_usec = 0; + if(setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(struct timeval)) < 0) + { + perror("setsockopt"); + } + timeout.tv_sec = 3; + timeout.tv_usec = 0; + if(setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(struct timeval)) < 0) + { + perror("setsockopt"); + } +#endif /* #ifdef MINIUPNPC_SET_SOCKET_TIMEOUT */ + if(!socketpath) + socketpath = "/var/run/minissdpd.sock"; + addr.sun_family = AF_UNIX; + strncpy(addr.sun_path, socketpath, sizeof(addr.sun_path)); + /* TODO : check if we need to handle the EINTR */ + if(connect(s, (struct sockaddr *)&addr, sizeof(struct sockaddr_un)) < 0) + { + /*syslog(LOG_WARNING, "connect(\"%s\"): %m", socketpath);*/ + close(s); + return MINISSDPC_SOCKET_ERROR; + } + return s; +} + +int +disconnectFromMiniSSDPD(int s) +{ + if (close(s) < 0) + return MINISSDPC_SOCKET_ERROR; + return MINISSDPC_SUCCESS; +} + +int +requestDevicesFromMiniSSDPD(int s, const char * devtype) +{ + unsigned char buffer[256]; + unsigned char * p; + unsigned int stsize, l; + + stsize = strlen(devtype); + if(stsize == 8 && 0 == memcmp(devtype, "ssdp:all", 8)) + { + buffer[0] = 3; /* request type 3 : everything */ + } + else + { + buffer[0] = 1; /* request type 1 : request devices/services by type */ + } + p = buffer + 1; + l = stsize; CODELENGTH(l, p); + if(p + stsize > buffer + sizeof(buffer)) + { + /* devtype is too long ! */ +#ifdef DEBUG + fprintf(stderr, "devtype is too long ! stsize=%u sizeof(buffer)=%u\n", + stsize, (unsigned)sizeof(buffer)); +#endif /* DEBUG */ + return MINISSDPC_INVALID_INPUT; + } + memcpy(p, devtype, stsize); + p += stsize; + if(write(s, buffer, p - buffer) < 0) + { + /*syslog(LOG_ERR, "write(): %m");*/ + perror("minissdpc.c: write()"); + return MINISSDPC_SOCKET_ERROR; + } + return MINISSDPC_SUCCESS; +} + +struct UPNPDev * +receiveDevicesFromMiniSSDPD(int s, int * error) +{ + struct UPNPDev * tmp; + struct UPNPDev * devlist = NULL; + unsigned char buffer[256]; + ssize_t n; + unsigned char * p; + unsigned char * url; + unsigned char * st; + unsigned int bufferindex; + unsigned int i, ndev; + unsigned int urlsize, stsize, usnsize, l; + + n = read(s, buffer, sizeof(buffer)); + if(n<=0) + { + perror("minissdpc.c: read()"); + if (error) + *error = MINISSDPC_SOCKET_ERROR; + return NULL; + } + ndev = buffer[0]; + bufferindex = 1; + for(i = 0; i < ndev; i++) + { + DECODELENGTH_READ(urlsize, READ_BYTE_BUFFER); + if(n<=0) { + if (error) + *error = MINISSDPC_INVALID_SERVER_REPLY; + return devlist; + } +#ifdef DEBUG + printf(" urlsize=%u", urlsize); +#endif /* DEBUG */ + url = malloc(urlsize); + if(url == NULL) { + if (error) + *error = MINISSDPC_MEMORY_ERROR; + return devlist; + } + READ_COPY_BUFFER(url, urlsize); + if(n<=0) { + if (error) + *error = MINISSDPC_INVALID_SERVER_REPLY; + goto free_url_and_return; + } + DECODELENGTH_READ(stsize, READ_BYTE_BUFFER); + if(n<=0) { + if (error) + *error = MINISSDPC_INVALID_SERVER_REPLY; + goto free_url_and_return; + } +#ifdef DEBUG + printf(" stsize=%u", stsize); +#endif /* DEBUG */ + st = malloc(stsize); + if (st == NULL) { + if (error) + *error = MINISSDPC_MEMORY_ERROR; + goto free_url_and_return; + } + READ_COPY_BUFFER(st, stsize); + if(n<=0) { + if (error) + *error = MINISSDPC_INVALID_SERVER_REPLY; + goto free_url_and_st_and_return; + } + DECODELENGTH_READ(usnsize, READ_BYTE_BUFFER); + if(n<=0) { + if (error) + *error = MINISSDPC_INVALID_SERVER_REPLY; + goto free_url_and_st_and_return; + } +#ifdef DEBUG + printf(" usnsize=%u\n", usnsize); +#endif /* DEBUG */ + tmp = (struct UPNPDev *)malloc(sizeof(struct UPNPDev)+urlsize+stsize+usnsize); + if(tmp == NULL) { + if (error) + *error = MINISSDPC_MEMORY_ERROR; + goto free_url_and_st_and_return; + } + tmp->pNext = devlist; + tmp->descURL = tmp->buffer; + tmp->st = tmp->buffer + 1 + urlsize; + memcpy(tmp->buffer, url, urlsize); + tmp->buffer[urlsize] = '\0'; + memcpy(tmp->st, st, stsize); + tmp->buffer[urlsize+1+stsize] = '\0'; + free(url); + free(st); + url = NULL; + st = NULL; + tmp->usn = tmp->buffer + 1 + urlsize + 1 + stsize; + READ_COPY_BUFFER(tmp->usn, usnsize); + if(n<=0) { + if (error) + *error = MINISSDPC_INVALID_SERVER_REPLY; + goto free_tmp_and_return; + } + tmp->buffer[urlsize+1+stsize+1+usnsize] = '\0'; + tmp->scope_id = 0; /* default value. scope_id is not available with MiniSSDPd */ + devlist = tmp; + } + if (error) + *error = MINISSDPC_SUCCESS; + return devlist; + +free_url_and_st_and_return: + free(st); +free_url_and_return: + free(url); + return devlist; + +free_tmp_and_return: + free(tmp); + return devlist; +} + +#endif /* !(defined(_WIN32) || defined(__amigaos__) || defined(__amigaos4__)) */ + +/* parseMSEARCHReply() + * the last 4 arguments are filled during the parsing : + * - location/locationsize : "location:" field of the SSDP reply packet + * - st/stsize : "st:" field of the SSDP reply packet. + * The strings are NOT null terminated */ +static void +parseMSEARCHReply(const char * reply, int size, + const char * * location, int * locationsize, + const char * * st, int * stsize, + const char * * usn, int * usnsize) +{ + int a, b, i; + i = 0; + a = i; /* start of the line */ + b = 0; /* end of the "header" (position of the colon) */ + while(isin6_family = AF_INET6; + if(localport > 0 && localport < 65536) + p->sin6_port = htons((unsigned short)localport); + p->sin6_addr = in6addr_any; /* in6addr_any is not available with MinGW32 3.4.2 */ + } else { + struct sockaddr_in * p = (struct sockaddr_in *)&sockudp_r; + p->sin_family = AF_INET; + if(localport > 0 && localport < 65536) + p->sin_port = htons((unsigned short)localport); + p->sin_addr.s_addr = INADDR_ANY; + } +#ifdef _WIN32 +/* This code could help us to use the right Network interface for + * SSDP multicast traffic */ +/* Get IP associated with the index given in the ip_forward struct + * in order to give this ip to setsockopt(sudp, IPPROTO_IP, IP_MULTICAST_IF) */ + if(!ipv6 + && (GetBestRoute(inet_addr("223.255.255.255"), 0, &ip_forward) == NO_ERROR)) { + DWORD dwRetVal = 0; + PMIB_IPADDRTABLE pIPAddrTable; + DWORD dwSize = 0; +#ifdef DEBUG + IN_ADDR IPAddr; +#endif + int i; +#ifdef DEBUG + printf("ifIndex=%lu nextHop=%lx \n", ip_forward.dwForwardIfIndex, ip_forward.dwForwardNextHop); +#endif + pIPAddrTable = (MIB_IPADDRTABLE *) malloc(sizeof (MIB_IPADDRTABLE)); + if(pIPAddrTable) { + if (GetIpAddrTable(pIPAddrTable, &dwSize, 0) == ERROR_INSUFFICIENT_BUFFER) { + free(pIPAddrTable); + pIPAddrTable = (MIB_IPADDRTABLE *) malloc(dwSize); + } + } + if(pIPAddrTable) { + dwRetVal = GetIpAddrTable( pIPAddrTable, &dwSize, 0 ); + if (dwRetVal == NO_ERROR) { +#ifdef DEBUG + printf("\tNum Entries: %ld\n", pIPAddrTable->dwNumEntries); +#endif + for (i=0; i < (int) pIPAddrTable->dwNumEntries; i++) { +#ifdef DEBUG + printf("\n\tInterface Index[%d]:\t%ld\n", i, pIPAddrTable->table[i].dwIndex); + IPAddr.S_un.S_addr = (u_long) pIPAddrTable->table[i].dwAddr; + printf("\tIP Address[%d]: \t%s\n", i, inet_ntoa(IPAddr) ); + IPAddr.S_un.S_addr = (u_long) pIPAddrTable->table[i].dwMask; + printf("\tSubnet Mask[%d]: \t%s\n", i, inet_ntoa(IPAddr) ); + IPAddr.S_un.S_addr = (u_long) pIPAddrTable->table[i].dwBCastAddr; + printf("\tBroadCast[%d]: \t%s (%ld)\n", i, inet_ntoa(IPAddr), pIPAddrTable->table[i].dwBCastAddr); + printf("\tReassembly size[%d]:\t%ld\n", i, pIPAddrTable->table[i].dwReasmSize); + printf("\tType and State[%d]:", i); + printf("\n"); +#endif + if (pIPAddrTable->table[i].dwIndex == ip_forward.dwForwardIfIndex) { + /* Set the address of this interface to be used */ + struct in_addr mc_if; + memset(&mc_if, 0, sizeof(mc_if)); + mc_if.s_addr = pIPAddrTable->table[i].dwAddr; + if(setsockopt(sudp, IPPROTO_IP, IP_MULTICAST_IF, (const char *)&mc_if, sizeof(mc_if)) < 0) { + PRINT_SOCKET_ERROR("setsockopt"); + } + ((struct sockaddr_in *)&sockudp_r)->sin_addr.s_addr = pIPAddrTable->table[i].dwAddr; +#ifndef DEBUG + break; +#endif + } + } + } + free(pIPAddrTable); + pIPAddrTable = NULL; + } + } +#endif /* _WIN32 */ + +#ifdef _WIN32 + if (setsockopt(sudp, SOL_SOCKET, SO_REUSEADDR, (const char *)&opt, sizeof (opt)) < 0) +#else + if (setsockopt(sudp, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof (opt)) < 0) +#endif + { + if(error) + *error = MINISSDPC_SOCKET_ERROR; + PRINT_SOCKET_ERROR("setsockopt(SO_REUSEADDR,...)"); + return NULL; + } + +#ifdef _WIN32 + if(setsockopt(sudp, IPPROTO_IP, IP_MULTICAST_TTL, (const char *)&_ttl, sizeof(_ttl)) < 0) +#else /* _WIN32 */ + if(setsockopt(sudp, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl)) < 0) +#endif /* _WIN32 */ + { + /* not a fatal error */ + PRINT_SOCKET_ERROR("setsockopt(IP_MULTICAST_TTL,...)"); + } + + if(multicastif) + { + if(ipv6) { +#if !defined(_WIN32) + /* according to MSDN, if_nametoindex() is supported since + * MS Windows Vista and MS Windows Server 2008. + * http://msdn.microsoft.com/en-us/library/bb408409%28v=vs.85%29.aspx */ + unsigned int ifindex = if_nametoindex(multicastif); /* eth0, etc. */ + if(setsockopt(sudp, IPPROTO_IPV6, IPV6_MULTICAST_IF, &ifindex, sizeof(ifindex)) < 0) + { + PRINT_SOCKET_ERROR("setsockopt"); + } +#else +#ifdef DEBUG + printf("Setting of multicast interface not supported in IPv6 under Windows.\n"); +#endif +#endif + } else { + struct in_addr mc_if; + mc_if.s_addr = inet_addr(multicastif); /* ex: 192.168.x.x */ + if(mc_if.s_addr != INADDR_NONE) + { + ((struct sockaddr_in *)&sockudp_r)->sin_addr.s_addr = mc_if.s_addr; + if(setsockopt(sudp, IPPROTO_IP, IP_MULTICAST_IF, (const char *)&mc_if, sizeof(mc_if)) < 0) + { + PRINT_SOCKET_ERROR("setsockopt"); + } + } else { +#ifdef HAS_IP_MREQN + /* was not an ip address, try with an interface name */ + struct ip_mreqn reqn; /* only defined with -D_BSD_SOURCE or -D_GNU_SOURCE */ + memset(&reqn, 0, sizeof(struct ip_mreqn)); + reqn.imr_ifindex = if_nametoindex(multicastif); + if(setsockopt(sudp, IPPROTO_IP, IP_MULTICAST_IF, (const char *)&reqn, sizeof(reqn)) < 0) + { + PRINT_SOCKET_ERROR("setsockopt"); + } +#else +#ifdef DEBUG + printf("Setting of multicast interface not supported with interface name.\n"); +#endif +#endif + } + } + } + + /* Before sending the packed, we first "bind" in order to be able + * to receive the response */ + if (bind(sudp, (const struct sockaddr *)&sockudp_r, + ipv6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in)) != 0) + { + if(error) + *error = MINISSDPC_SOCKET_ERROR; + PRINT_SOCKET_ERROR("bind"); + closesocket(sudp); + return NULL; + } + + if(error) + *error = MINISSDPC_SUCCESS; + /* Calculating maximum response time in seconds */ + mx = ((unsigned int)delay) / 1000u; + if(mx == 0) { + mx = 1; + delay = 1000; + } + /* receiving SSDP response packet */ + for(deviceIndex = 0; deviceTypes[deviceIndex]; deviceIndex++) { + /* sending the SSDP M-SEARCH packet */ + n = snprintf(bufr, sizeof(bufr), + MSearchMsgFmt, + ipv6 ? + (linklocal ? "[" UPNP_MCAST_LL_ADDR "]" : "[" UPNP_MCAST_SL_ADDR "]") + : UPNP_MCAST_ADDR, + deviceTypes[deviceIndex], mx); + if ((unsigned int)n >= sizeof(bufr)) { + if(error) + *error = MINISSDPC_MEMORY_ERROR; + goto error; + } +#ifdef DEBUG + /*printf("Sending %s", bufr);*/ + printf("Sending M-SEARCH request to %s with ST: %s\n", + ipv6 ? + (linklocal ? "[" UPNP_MCAST_LL_ADDR "]" : "[" UPNP_MCAST_SL_ADDR "]") + : UPNP_MCAST_ADDR, + deviceTypes[deviceIndex]); +#endif +#ifdef NO_GETADDRINFO + /* the following code is not using getaddrinfo */ + /* emission */ + memset(&sockudp_w, 0, sizeof(struct sockaddr_storage)); + if(ipv6) { + struct sockaddr_in6 * p = (struct sockaddr_in6 *)&sockudp_w; + p->sin6_family = AF_INET6; + p->sin6_port = htons(SSDP_PORT); + inet_pton(AF_INET6, + linklocal ? UPNP_MCAST_LL_ADDR : UPNP_MCAST_SL_ADDR, + &(p->sin6_addr)); + } else { + struct sockaddr_in * p = (struct sockaddr_in *)&sockudp_w; + p->sin_family = AF_INET; + p->sin_port = htons(SSDP_PORT); + p->sin_addr.s_addr = inet_addr(UPNP_MCAST_ADDR); + } + n = sendto(sudp, bufr, n, 0, &sockudp_w, + ipv6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in)); + if (n < 0) { + if(error) + *error = MINISSDPC_SOCKET_ERROR; + PRINT_SOCKET_ERROR("sendto"); + break; + } +#else /* #ifdef NO_GETADDRINFO */ + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; /* AF_INET6 or AF_INET */ + hints.ai_socktype = SOCK_DGRAM; + /*hints.ai_flags = */ + if ((rv = getaddrinfo(ipv6 + ? (linklocal ? UPNP_MCAST_LL_ADDR : UPNP_MCAST_SL_ADDR) + : UPNP_MCAST_ADDR, + XSTR(SSDP_PORT), &hints, &servinfo)) != 0) { + if(error) + *error = MINISSDPC_SOCKET_ERROR; +#ifdef _WIN32 + fprintf(stderr, "getaddrinfo() failed: %d\n", rv); +#else + fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv)); +#endif + break; + } + for(p = servinfo; p; p = p->ai_next) { + n = sendto(sudp, bufr, n, 0, p->ai_addr, p->ai_addrlen); + if (n < 0) { +#ifdef DEBUG + char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; + if (getnameinfo(p->ai_addr, p->ai_addrlen, hbuf, sizeof(hbuf), sbuf, + sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0) { + fprintf(stderr, "host:%s port:%s\n", hbuf, sbuf); + } +#endif + PRINT_SOCKET_ERROR("sendto"); + continue; + } + } + freeaddrinfo(servinfo); + if(n < 0) { + if(error) + *error = MINISSDPC_SOCKET_ERROR; + break; + } +#endif /* #ifdef NO_GETADDRINFO */ + /* Waiting for SSDP REPLY packet to M-SEARCH + * if searchalltypes is set, enter the loop only + * when the last deviceType is reached */ + if(!searchalltypes || !deviceTypes[deviceIndex + 1]) do { + n = receivedata(sudp, bufr, sizeof(bufr), delay, &scope_id); + if (n < 0) { + /* error */ + if(error) + *error = MINISSDPC_SOCKET_ERROR; + goto error; + } else if (n == 0) { + /* no data or Time Out */ +#ifdef DEBUG + printf("NODATA or TIMEOUT\n"); +#endif /* DEBUG */ + if (devlist && !searchalltypes) { + /* found some devices, stop now*/ + if(error) + *error = MINISSDPC_SUCCESS; + goto error; + } + } else { + const char * descURL=NULL; + int urlsize=0; + const char * st=NULL; + int stsize=0; + const char * usn=NULL; + int usnsize=0; + parseMSEARCHReply(bufr, n, &descURL, &urlsize, &st, &stsize, &usn, &usnsize); + if(st&&descURL) { +#ifdef DEBUG + printf("M-SEARCH Reply:\n ST: %.*s\n USN: %.*s\n Location: %.*s\n", + stsize, st, usnsize, (usn?usn:""), urlsize, descURL); +#endif /* DEBUG */ + for(tmp=devlist; tmp; tmp = tmp->pNext) { + if(memcmp(tmp->descURL, descURL, urlsize) == 0 && + tmp->descURL[urlsize] == '\0' && + memcmp(tmp->st, st, stsize) == 0 && + tmp->st[stsize] == '\0' && + (usnsize == 0 || memcmp(tmp->usn, usn, usnsize) == 0) && + tmp->usn[usnsize] == '\0') + break; + } + /* at the exit of the loop above, tmp is null if + * no duplicate device was found */ + if(tmp) + continue; + tmp = (struct UPNPDev *)malloc(sizeof(struct UPNPDev)+urlsize+stsize+usnsize); + if(!tmp) { + /* memory allocation error */ + if(error) + *error = MINISSDPC_MEMORY_ERROR; + goto error; + } + tmp->pNext = devlist; + tmp->descURL = tmp->buffer; + tmp->st = tmp->buffer + 1 + urlsize; + tmp->usn = tmp->st + 1 + stsize; + memcpy(tmp->buffer, descURL, urlsize); + tmp->buffer[urlsize] = '\0'; + memcpy(tmp->st, st, stsize); + tmp->buffer[urlsize+1+stsize] = '\0'; + if(usn != NULL) + memcpy(tmp->usn, usn, usnsize); + tmp->buffer[urlsize+1+stsize+1+usnsize] = '\0'; + tmp->scope_id = scope_id; + devlist = tmp; + } + } + } while(n > 0); + if(ipv6) { + /* switch linklocal flag */ + if(linklocal) { + linklocal = 0; + --deviceIndex; + } else { + linklocal = 1; + } + } + } +error: + closesocket(sudp); + return devlist; +} + diff --git a/ext/miniupnpc/minissdpc.h b/ext/miniupnpc/minissdpc.h new file mode 100644 index 000000000..a5c622b28 --- /dev/null +++ b/ext/miniupnpc/minissdpc.h @@ -0,0 +1,58 @@ +/* $Id: minissdpc.h,v 1.7 2015/10/08 16:15:47 nanard Exp $ */ +/* Project: miniupnp + * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * Author: Thomas Bernard + * Copyright (c) 2005-2015 Thomas Bernard + * This software is subjects to the conditions detailed + * in the LICENCE file provided within this distribution */ +#ifndef MINISSDPC_H_INCLUDED +#define MINISSDPC_H_INCLUDED + +#include "miniupnpc_declspec.h" +#include "upnpdev.h" + +/* error codes : */ +#define MINISSDPC_SUCCESS (0) +#define MINISSDPC_UNKNOWN_ERROR (-1) +#define MINISSDPC_SOCKET_ERROR (-101) +#define MINISSDPC_MEMORY_ERROR (-102) +#define MINISSDPC_INVALID_INPUT (-103) +#define MINISSDPC_INVALID_SERVER_REPLY (-104) + +#ifdef __cplusplus +extern "C" { +#endif + +#if !(defined(_WIN32) || defined(__amigaos__) || defined(__amigaos4__)) + +MINIUPNP_LIBSPEC struct UPNPDev * +getDevicesFromMiniSSDPD(const char * devtype, const char * socketpath, int * error); + +MINIUPNP_LIBSPEC int +connectToMiniSSDPD(const char * socketpath); + +MINIUPNP_LIBSPEC int +disconnectFromMiniSSDPD(int fd); + +MINIUPNP_LIBSPEC int +requestDevicesFromMiniSSDPD(int fd, const char * devtype); + +MINIUPNP_LIBSPEC struct UPNPDev * +receiveDevicesFromMiniSSDPD(int fd, int * error); + +#endif /* !(defined(_WIN32) || defined(__amigaos__) || defined(__amigaos4__)) */ + +MINIUPNP_LIBSPEC struct UPNPDev * +ssdpDiscoverDevices(const char * const deviceTypes[], + int delay, const char * multicastif, + int localport, + int ipv6, unsigned char ttl, + int * error, + int searchalltypes); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/ext/miniupnpc/miniupnpc.c b/ext/miniupnpc/miniupnpc.c new file mode 100644 index 000000000..4837fe7d3 --- /dev/null +++ b/ext/miniupnpc/miniupnpc.c @@ -0,0 +1,684 @@ +/* $Id: miniupnpc.c,v 1.141 2015/10/26 17:05:07 nanard Exp $ */ +/* vim: tabstop=4 shiftwidth=4 noexpandtab */ +/* Project : miniupnp + * Web : http://miniupnp.free.fr/ + * Author : Thomas BERNARD + * copyright (c) 2005-2015 Thomas Bernard + * This software is subjet to the conditions detailed in the + * provided LICENSE file. */ +#include +#include +#include +#ifdef _WIN32 +/* Win32 Specific includes and defines */ +#include +#include +#include +#include +#define snprintf _snprintf +#define strdup _strdup +#ifndef strncasecmp +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +#define strncasecmp _memicmp +#else /* defined(_MSC_VER) && (_MSC_VER >= 1400) */ +#define strncasecmp memicmp +#endif /* defined(_MSC_VER) && (_MSC_VER >= 1400) */ +#endif /* #ifndef strncasecmp */ +#define MAXHOSTNAMELEN 64 +#else /* #ifdef _WIN32 */ +/* Standard POSIX includes */ +#include +#if defined(__amigaos__) && !defined(__amigaos4__) +/* Amiga OS 3 specific stuff */ +#define socklen_t int +#else +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#if !defined(__amigaos__) && !defined(__amigaos4__) +#include +#endif +#include +#include +#define closesocket close +#endif /* #else _WIN32 */ +#ifdef __GNU__ +#define MAXHOSTNAMELEN 64 +#endif + + +#include "miniupnpc.h" +#include "minissdpc.h" +#include "miniwget.h" +#include "minisoap.h" +#include "minixml.h" +#include "upnpcommands.h" +#include "connecthostport.h" + +/* compare the begining of a string with a constant string */ +#define COMPARE(str, cstr) (0==memcmp(str, cstr, sizeof(cstr) - 1)) + +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 64 +#endif + +#define SOAPPREFIX "s" +#define SERVICEPREFIX "u" +#define SERVICEPREFIX2 'u' + +/* root description parsing */ +MINIUPNP_LIBSPEC void parserootdesc(const char * buffer, int bufsize, struct IGDdatas * data) +{ + struct xmlparser parser; + /* xmlparser object */ + parser.xmlstart = buffer; + parser.xmlsize = bufsize; + parser.data = data; + parser.starteltfunc = IGDstartelt; + parser.endeltfunc = IGDendelt; + parser.datafunc = IGDdata; + parser.attfunc = 0; + parsexml(&parser); +#ifdef DEBUG + printIGD(data); +#endif +} + +/* simpleUPnPcommand2 : + * not so simple ! + * return values : + * pointer - OK + * NULL - error */ +char * simpleUPnPcommand2(int s, const char * url, const char * service, + const char * action, struct UPNParg * args, + int * bufsize, const char * httpversion) +{ + char hostname[MAXHOSTNAMELEN+1]; + unsigned short port = 0; + char * path; + char soapact[128]; + char soapbody[2048]; + int soapbodylen; + char * buf; + int n; + + *bufsize = 0; + snprintf(soapact, sizeof(soapact), "%s#%s", service, action); + if(args==NULL) + { + soapbodylen = snprintf(soapbody, sizeof(soapbody), + "\r\n" + "<" SOAPPREFIX ":Envelope " + "xmlns:" SOAPPREFIX "=\"http://schemas.xmlsoap.org/soap/envelope/\" " + SOAPPREFIX ":encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">" + "<" SOAPPREFIX ":Body>" + "<" SERVICEPREFIX ":%s xmlns:" SERVICEPREFIX "=\"%s\">" + "" + "" + "\r\n", action, service, action); + if ((unsigned int)soapbodylen >= sizeof(soapbody)) + return NULL; + } + else + { + char * p; + const char * pe, * pv; + const char * const pend = soapbody + sizeof(soapbody); + soapbodylen = snprintf(soapbody, sizeof(soapbody), + "\r\n" + "<" SOAPPREFIX ":Envelope " + "xmlns:" SOAPPREFIX "=\"http://schemas.xmlsoap.org/soap/envelope/\" " + SOAPPREFIX ":encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">" + "<" SOAPPREFIX ":Body>" + "<" SERVICEPREFIX ":%s xmlns:" SERVICEPREFIX "=\"%s\">", + action, service); + if ((unsigned int)soapbodylen >= sizeof(soapbody)) + return NULL; + p = soapbody + soapbodylen; + while(args->elt) + { + if(p >= pend) /* check for space to write next byte */ + return NULL; + *(p++) = '<'; + + pe = args->elt; + while(p < pend && *pe) + *(p++) = *(pe++); + + if(p >= pend) /* check for space to write next byte */ + return NULL; + *(p++) = '>'; + + if((pv = args->val)) + { + while(p < pend && *pv) + *(p++) = *(pv++); + } + + if((p+2) > pend) /* check for space to write next 2 bytes */ + return NULL; + *(p++) = '<'; + *(p++) = '/'; + + pe = args->elt; + while(p < pend && *pe) + *(p++) = *(pe++); + + if(p >= pend) /* check for space to write next byte */ + return NULL; + *(p++) = '>'; + + args++; + } + if((p+4) > pend) /* check for space to write next 4 bytes */ + return NULL; + *(p++) = '<'; + *(p++) = '/'; + *(p++) = SERVICEPREFIX2; + *(p++) = ':'; + + pe = action; + while(p < pend && *pe) + *(p++) = *(pe++); + + strncpy(p, ">\r\n", + pend - p); + if(soapbody[sizeof(soapbody)-1]) /* strncpy pads buffer with 0s, so if it doesn't end in 0, could not fit full string */ + return NULL; + } + if(!parseURL(url, hostname, &port, &path, NULL)) return NULL; + if(s < 0) { + s = connecthostport(hostname, port, 0); + if(s < 0) { + /* failed to connect */ + return NULL; + } + } + + n = soapPostSubmit(s, path, hostname, port, soapact, soapbody, httpversion); + if(n<=0) { +#ifdef DEBUG + printf("Error sending SOAP request\n"); +#endif + closesocket(s); + return NULL; + } + + buf = getHTTPResponse(s, bufsize); +#ifdef DEBUG + if(*bufsize > 0 && buf) + { + printf("SOAP Response :\n%.*s\n", *bufsize, buf); + } +#endif + closesocket(s); + return buf; +} + +/* simpleUPnPcommand : + * not so simple ! + * return values : + * pointer - OK + * NULL - error */ +char * simpleUPnPcommand(int s, const char * url, const char * service, + const char * action, struct UPNParg * args, + int * bufsize) +{ + char * buf; + +#if 1 + buf = simpleUPnPcommand2(s, url, service, action, args, bufsize, "1.1"); +#else + buf = simpleUPnPcommand2(s, url, service, action, args, bufsize, "1.0"); + if (!buf || *bufsize == 0) + { +#if DEBUG + printf("Error or no result from SOAP request; retrying with HTTP/1.1\n"); +#endif + buf = simpleUPnPcommand2(s, url, service, action, args, bufsize, "1.1"); + } +#endif + return buf; +} + +/* upnpDiscoverDevices() : + * return a chained list of all devices found or NULL if + * no devices was found. + * It is up to the caller to free the chained list + * delay is in millisecond (poll). + * UDA v1.1 says : + * The TTL for the IP packet SHOULD default to 2 and + * SHOULD be configurable. */ +MINIUPNP_LIBSPEC struct UPNPDev * +upnpDiscoverDevices(const char * const deviceTypes[], + int delay, const char * multicastif, + const char * minissdpdsock, int localport, + int ipv6, unsigned char ttl, + int * error, + int searchalltypes) +{ + struct UPNPDev * tmp; + struct UPNPDev * devlist = 0; +#if !defined(_WIN32) && !defined(__amigaos__) && !defined(__amigaos4__) + int deviceIndex; +#endif /* !defined(_WIN32) && !defined(__amigaos__) && !defined(__amigaos4__) */ + + if(error) + *error = UPNPDISCOVER_UNKNOWN_ERROR; +#if !defined(_WIN32) && !defined(__amigaos__) && !defined(__amigaos4__) + /* first try to get infos from minissdpd ! */ + if(!minissdpdsock) + minissdpdsock = "/var/run/minissdpd.sock"; + for(deviceIndex = 0; deviceTypes[deviceIndex]; deviceIndex++) { + struct UPNPDev * minissdpd_devlist; + int only_rootdevice = 1; + minissdpd_devlist = getDevicesFromMiniSSDPD(deviceTypes[deviceIndex], + minissdpdsock, 0); + if(minissdpd_devlist) { +#ifdef DEBUG + printf("returned by MiniSSDPD: %s\t%s\n", + minissdpd_devlist->st, minissdpd_devlist->descURL); +#endif /* DEBUG */ + if(!strstr(minissdpd_devlist->st, "rootdevice")) + only_rootdevice = 0; + for(tmp = minissdpd_devlist; tmp->pNext != NULL; tmp = tmp->pNext) { +#ifdef DEBUG + printf("returned by MiniSSDPD: %s\t%s\n", + tmp->pNext->st, tmp->pNext->descURL); +#endif /* DEBUG */ + if(!strstr(tmp->st, "rootdevice")) + only_rootdevice = 0; + } + tmp->pNext = devlist; + devlist = minissdpd_devlist; + if(!searchalltypes && !only_rootdevice) + break; + } + } + for(tmp = devlist; tmp != NULL; tmp = tmp->pNext) { + /* We return what we have found if it was not only a rootdevice */ + if(!strstr(tmp->st, "rootdevice")) { + if(error) + *error = UPNPDISCOVER_SUCCESS; + return devlist; + } + } +#endif /* !defined(_WIN32) && !defined(__amigaos__) && !defined(__amigaos4__) */ + + /* direct discovery if minissdpd responses are not sufficient */ + { + struct UPNPDev * discovered_devlist; + discovered_devlist = ssdpDiscoverDevices(deviceTypes, delay, multicastif, localport, + ipv6, ttl, error, searchalltypes); + if(devlist == NULL) + devlist = discovered_devlist; + else { + for(tmp = devlist; tmp->pNext != NULL; tmp = tmp->pNext); + tmp->pNext = discovered_devlist; + } + } + return devlist; +} + +/* upnpDiscover() Discover IGD device */ +MINIUPNP_LIBSPEC struct UPNPDev * +upnpDiscover(int delay, const char * multicastif, + const char * minissdpdsock, int localport, + int ipv6, unsigned char ttl, + int * error) +{ + static const char * const deviceList[] = { +#if 0 + "urn:schemas-upnp-org:device:InternetGatewayDevice:2", + "urn:schemas-upnp-org:service:WANIPConnection:2", +#endif + "urn:schemas-upnp-org:device:InternetGatewayDevice:1", + "urn:schemas-upnp-org:service:WANIPConnection:1", + "urn:schemas-upnp-org:service:WANPPPConnection:1", + "upnp:rootdevice", + /*"ssdp:all",*/ + 0 + }; + return upnpDiscoverDevices(deviceList, + delay, multicastif, minissdpdsock, localport, + ipv6, ttl, error, 0); +} + +/* upnpDiscoverAll() Discover all UPnP devices */ +MINIUPNP_LIBSPEC struct UPNPDev * +upnpDiscoverAll(int delay, const char * multicastif, + const char * minissdpdsock, int localport, + int ipv6, unsigned char ttl, + int * error) +{ + static const char * const deviceList[] = { + /*"upnp:rootdevice",*/ + "ssdp:all", + 0 + }; + return upnpDiscoverDevices(deviceList, + delay, multicastif, minissdpdsock, localport, + ipv6, ttl, error, 0); +} + +/* upnpDiscoverDevice() Discover a specific device */ +MINIUPNP_LIBSPEC struct UPNPDev * +upnpDiscoverDevice(const char * device, int delay, const char * multicastif, + const char * minissdpdsock, int localport, + int ipv6, unsigned char ttl, + int * error) +{ + const char * const deviceList[] = { + device, + 0 + }; + return upnpDiscoverDevices(deviceList, + delay, multicastif, minissdpdsock, localport, + ipv6, ttl, error, 0); +} + +static char * +build_absolute_url(const char * baseurl, const char * descURL, + const char * url, unsigned int scope_id) +{ + int l, n; + char * s; + const char * base; + char * p; +#if defined(IF_NAMESIZE) && !defined(_WIN32) + char ifname[IF_NAMESIZE]; +#else /* defined(IF_NAMESIZE) && !defined(_WIN32) */ + char scope_str[8]; +#endif /* defined(IF_NAMESIZE) && !defined(_WIN32) */ + + if( (url[0] == 'h') + &&(url[1] == 't') + &&(url[2] == 't') + &&(url[3] == 'p') + &&(url[4] == ':') + &&(url[5] == '/') + &&(url[6] == '/')) + return strdup(url); + base = (baseurl[0] == '\0') ? descURL : baseurl; + n = strlen(base); + if(n > 7) { + p = strchr(base + 7, '/'); + if(p) + n = p - base; + } + l = n + strlen(url) + 1; + if(url[0] != '/') + l++; + if(scope_id != 0) { +#if defined(IF_NAMESIZE) && !defined(_WIN32) + if(if_indextoname(scope_id, ifname)) { + l += 3 + strlen(ifname); /* 3 == strlen(%25) */ + } +#else /* defined(IF_NAMESIZE) && !defined(_WIN32) */ + /* under windows, scope is numerical */ + l += 3 + snprintf(scope_str, sizeof(scope_str), "%u", scope_id); +#endif /* defined(IF_NAMESIZE) && !defined(_WIN32) */ + } + s = malloc(l); + if(s == NULL) return NULL; + memcpy(s, base, n); + if(scope_id != 0) { + s[n] = '\0'; + if(0 == memcmp(s, "http://[fe80:", 13)) { + /* this is a linklocal IPv6 address */ + p = strchr(s, ']'); + if(p) { + /* insert %25 into URL */ +#if defined(IF_NAMESIZE) && !defined(_WIN32) + memmove(p + 3 + strlen(ifname), p, strlen(p) + 1); + memcpy(p, "%25", 3); + memcpy(p + 3, ifname, strlen(ifname)); + n += 3 + strlen(ifname); +#else /* defined(IF_NAMESIZE) && !defined(_WIN32) */ + memmove(p + 3 + strlen(scope_str), p, strlen(p) + 1); + memcpy(p, "%25", 3); + memcpy(p + 3, scope_str, strlen(scope_str)); + n += 3 + strlen(scope_str); +#endif /* defined(IF_NAMESIZE) && !defined(_WIN32) */ + } + } + } + if(url[0] != '/') + s[n++] = '/'; + memcpy(s + n, url, l - n); + return s; +} + +/* Prepare the Urls for usage... + */ +MINIUPNP_LIBSPEC void +GetUPNPUrls(struct UPNPUrls * urls, struct IGDdatas * data, + const char * descURL, unsigned int scope_id) +{ + /* strdup descURL */ + urls->rootdescURL = strdup(descURL); + + /* get description of WANIPConnection */ + urls->ipcondescURL = build_absolute_url(data->urlbase, descURL, + data->first.scpdurl, scope_id); + urls->controlURL = build_absolute_url(data->urlbase, descURL, + data->first.controlurl, scope_id); + urls->controlURL_CIF = build_absolute_url(data->urlbase, descURL, + data->CIF.controlurl, scope_id); + urls->controlURL_6FC = build_absolute_url(data->urlbase, descURL, + data->IPv6FC.controlurl, scope_id); + +#ifdef DEBUG + printf("urls->ipcondescURL='%s'\n", urls->ipcondescURL); + printf("urls->controlURL='%s'\n", urls->controlURL); + printf("urls->controlURL_CIF='%s'\n", urls->controlURL_CIF); + printf("urls->controlURL_6FC='%s'\n", urls->controlURL_6FC); +#endif +} + +MINIUPNP_LIBSPEC void +FreeUPNPUrls(struct UPNPUrls * urls) +{ + if(!urls) + return; + free(urls->controlURL); + urls->controlURL = 0; + free(urls->ipcondescURL); + urls->ipcondescURL = 0; + free(urls->controlURL_CIF); + urls->controlURL_CIF = 0; + free(urls->controlURL_6FC); + urls->controlURL_6FC = 0; + free(urls->rootdescURL); + urls->rootdescURL = 0; +} + +int +UPNPIGD_IsConnected(struct UPNPUrls * urls, struct IGDdatas * data) +{ + char status[64]; + unsigned int uptime; + status[0] = '\0'; + UPNP_GetStatusInfo(urls->controlURL, data->first.servicetype, + status, &uptime, NULL); + if(0 == strcmp("Connected", status)) + return 1; + else if(0 == strcmp("Up", status)) /* Also accept "Up" */ + return 1; + else + return 0; +} + + +/* UPNP_GetValidIGD() : + * return values : + * -1 = Internal error + * 0 = NO IGD found + * 1 = A valid connected IGD has been found + * 2 = A valid IGD has been found but it reported as + * not connected + * 3 = an UPnP device has been found but was not recognized as an IGD + * + * In any positive non zero return case, the urls and data structures + * passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to + * free allocated memory. + */ +MINIUPNP_LIBSPEC int +UPNP_GetValidIGD(struct UPNPDev * devlist, + struct UPNPUrls * urls, + struct IGDdatas * data, + char * lanaddr, int lanaddrlen) +{ + struct xml_desc { + char * xml; + int size; + int is_igd; + } * desc = NULL; + struct UPNPDev * dev; + int ndev = 0; + int i; + int state = -1; /* state 1 : IGD connected. State 2 : IGD. State 3 : anything */ + int n_igd = 0; + char extIpAddr[16]; + if(!devlist) + { +#ifdef DEBUG + printf("Empty devlist\n"); +#endif + return 0; + } + /* counting total number of devices in the list */ + for(dev = devlist; dev; dev = dev->pNext) + ndev++; + if(ndev > 0) + { + desc = calloc(ndev, sizeof(struct xml_desc)); + if(!desc) + return -1; /* memory allocation error */ + } + /* Step 1 : downloading descriptions and testing type */ + for(dev = devlist, i = 0; dev; dev = dev->pNext, i++) + { + /* we should choose an internet gateway device. + * with st == urn:schemas-upnp-org:device:InternetGatewayDevice:1 */ + desc[i].xml = miniwget_getaddr(dev->descURL, &(desc[i].size), + lanaddr, lanaddrlen, + dev->scope_id); +#ifdef DEBUG + if(!desc[i].xml) + { + printf("error getting XML description %s\n", dev->descURL); + } +#endif + if(desc[i].xml) + { + memset(data, 0, sizeof(struct IGDdatas)); + memset(urls, 0, sizeof(struct UPNPUrls)); + parserootdesc(desc[i].xml, desc[i].size, data); + if(COMPARE(data->CIF.servicetype, + "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:")) + { + desc[i].is_igd = 1; + n_igd++; + } + } + } + /* iterate the list to find a device depending on state */ + for(state = 1; state <= 3; state++) + { + for(dev = devlist, i = 0; dev; dev = dev->pNext, i++) + { + if(desc[i].xml) + { + memset(data, 0, sizeof(struct IGDdatas)); + memset(urls, 0, sizeof(struct UPNPUrls)); + parserootdesc(desc[i].xml, desc[i].size, data); + if(desc[i].is_igd || state >= 3 ) + { + GetUPNPUrls(urls, data, dev->descURL, dev->scope_id); + + /* in state 2 and 3 we dont test if device is connected ! */ + if(state >= 2) + goto free_and_return; +#ifdef DEBUG + printf("UPNPIGD_IsConnected(%s) = %d\n", + urls->controlURL, + UPNPIGD_IsConnected(urls, data)); +#endif + /* checks that status is connected AND there is a external IP address assigned */ + if(UPNPIGD_IsConnected(urls, data) + && (UPNP_GetExternalIPAddress(urls->controlURL, data->first.servicetype, extIpAddr) == 0)) + goto free_and_return; + FreeUPNPUrls(urls); + if(data->second.servicetype[0] != '\0') { +#ifdef DEBUG + printf("We tried %s, now we try %s !\n", + data->first.servicetype, data->second.servicetype); +#endif + /* swaping WANPPPConnection and WANIPConnection ! */ + memcpy(&data->tmp, &data->first, sizeof(struct IGDdatas_service)); + memcpy(&data->first, &data->second, sizeof(struct IGDdatas_service)); + memcpy(&data->second, &data->tmp, sizeof(struct IGDdatas_service)); + GetUPNPUrls(urls, data, dev->descURL, dev->scope_id); +#ifdef DEBUG + printf("UPNPIGD_IsConnected(%s) = %d\n", + urls->controlURL, + UPNPIGD_IsConnected(urls, data)); +#endif + if(UPNPIGD_IsConnected(urls, data) + && (UPNP_GetExternalIPAddress(urls->controlURL, data->first.servicetype, extIpAddr) == 0)) + goto free_and_return; + FreeUPNPUrls(urls); + } + } + memset(data, 0, sizeof(struct IGDdatas)); + } + } + } + state = 0; +free_and_return: + if(desc) { + for(i = 0; i < ndev; i++) { + if(desc[i].xml) { + free(desc[i].xml); + } + } + free(desc); + } + return state; +} + +/* UPNP_GetIGDFromUrl() + * Used when skipping the discovery process. + * return value : + * 0 - Not ok + * 1 - OK */ +int +UPNP_GetIGDFromUrl(const char * rootdescurl, + struct UPNPUrls * urls, + struct IGDdatas * data, + char * lanaddr, int lanaddrlen) +{ + char * descXML; + int descXMLsize = 0; + descXML = miniwget_getaddr(rootdescurl, &descXMLsize, + lanaddr, lanaddrlen, 0); + if(descXML) { + memset(data, 0, sizeof(struct IGDdatas)); + memset(urls, 0, sizeof(struct UPNPUrls)); + parserootdesc(descXML, descXMLsize, data); + free(descXML); + descXML = NULL; + GetUPNPUrls(urls, data, rootdescurl, 0); + return 1; + } else { + return 0; + } +} + diff --git a/ext/miniupnpc/miniupnpc.def b/ext/miniupnpc/miniupnpc.def new file mode 100644 index 000000000..60e0bbe42 --- /dev/null +++ b/ext/miniupnpc/miniupnpc.def @@ -0,0 +1,45 @@ +LIBRARY +; miniupnpc library + miniupnpc + +EXPORTS +; miniupnpc + upnpDiscover + freeUPNPDevlist + parserootdesc + UPNP_GetValidIGD + UPNP_GetIGDFromUrl + GetUPNPUrls + FreeUPNPUrls +; miniwget + miniwget + miniwget_getaddr +; upnpcommands + UPNP_GetTotalBytesSent + UPNP_GetTotalBytesReceived + UPNP_GetTotalPacketsSent + UPNP_GetTotalPacketsReceived + UPNP_GetStatusInfo + UPNP_GetConnectionTypeInfo + UPNP_GetExternalIPAddress + UPNP_GetLinkLayerMaxBitRates + UPNP_AddPortMapping + UPNP_AddAnyPortMapping + UPNP_DeletePortMapping + UPNP_DeletePortMappingRange + UPNP_GetPortMappingNumberOfEntries + UPNP_GetSpecificPortMappingEntry + UPNP_GetGenericPortMappingEntry + UPNP_GetListOfPortMappings + UPNP_AddPinhole + UPNP_CheckPinholeWorking + UPNP_UpdatePinhole + UPNP_GetPinholePackets + UPNP_DeletePinhole + UPNP_GetFirewallStatus + UPNP_GetOutboundPinholeTimeout +; upnperrors + strupnperror +; portlistingparse + ParsePortListing + FreePortListing diff --git a/ext/miniupnpc/miniupnpc.h b/ext/miniupnpc/miniupnpc.h new file mode 100644 index 000000000..dfbfa01f2 --- /dev/null +++ b/ext/miniupnpc/miniupnpc.h @@ -0,0 +1,152 @@ +/* $Id: miniupnpc.h,v 1.48 2015/10/08 16:19:40 nanard Exp $ */ +/* Project: miniupnp + * http://miniupnp.free.fr/ + * Author: Thomas Bernard + * Copyright (c) 2005-2015 Thomas Bernard + * This software is subjects to the conditions detailed + * in the LICENCE file provided within this distribution */ +#ifndef MINIUPNPC_H_INCLUDED +#define MINIUPNPC_H_INCLUDED + +#include "miniupnpc_declspec.h" +#include "igd_desc_parse.h" +#include "upnpdev.h" + +/* error codes : */ +#define UPNPDISCOVER_SUCCESS (0) +#define UPNPDISCOVER_UNKNOWN_ERROR (-1) +#define UPNPDISCOVER_SOCKET_ERROR (-101) +#define UPNPDISCOVER_MEMORY_ERROR (-102) + +/* versions : */ +#define MINIUPNPC_VERSION "1.9.20151026" +#define MINIUPNPC_API_VERSION 15 + +/* Source port: + Using "1" as an alias for 1900 for backwards compatability + (presuming one would have used that for the "sameport" parameter) */ +#define UPNP_LOCAL_PORT_ANY 0 +#define UPNP_LOCAL_PORT_SAME 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* Structures definitions : */ +struct UPNParg { const char * elt; const char * val; }; + +char * +simpleUPnPcommand(int, const char *, const char *, + const char *, struct UPNParg *, + int *); + +/* upnpDiscover() + * discover UPnP devices on the network. + * The discovered devices are returned as a chained list. + * It is up to the caller to free the list with freeUPNPDevlist(). + * delay (in millisecond) is the maximum time for waiting any device + * response. + * If available, device list will be obtained from MiniSSDPd. + * Default path for minissdpd socket will be used if minissdpdsock argument + * is NULL. + * If multicastif is not NULL, it will be used instead of the default + * multicast interface for sending SSDP discover packets. + * If localport is set to UPNP_LOCAL_PORT_SAME(1) SSDP packets will be sent + * from the source port 1900 (same as destination port), if set to + * UPNP_LOCAL_PORT_ANY(0) system assign a source port, any other value will + * be attempted as the source port. + * "searchalltypes" parameter is useful when searching several types, + * if 0, the discovery will stop with the first type returning results. + * TTL should default to 2. */ +MINIUPNP_LIBSPEC struct UPNPDev * +upnpDiscover(int delay, const char * multicastif, + const char * minissdpdsock, int localport, + int ipv6, unsigned char ttl, + int * error); + +MINIUPNP_LIBSPEC struct UPNPDev * +upnpDiscoverAll(int delay, const char * multicastif, + const char * minissdpdsock, int localport, + int ipv6, unsigned char ttl, + int * error); + +MINIUPNP_LIBSPEC struct UPNPDev * +upnpDiscoverDevice(const char * device, int delay, const char * multicastif, + const char * minissdpdsock, int localport, + int ipv6, unsigned char ttl, + int * error); + +MINIUPNP_LIBSPEC struct UPNPDev * +upnpDiscoverDevices(const char * const deviceTypes[], + int delay, const char * multicastif, + const char * minissdpdsock, int localport, + int ipv6, unsigned char ttl, + int * error, + int searchalltypes); + +/* parserootdesc() : + * parse root XML description of a UPnP device and fill the IGDdatas + * structure. */ +MINIUPNP_LIBSPEC void parserootdesc(const char *, int, struct IGDdatas *); + +/* structure used to get fast access to urls + * controlURL: controlURL of the WANIPConnection + * ipcondescURL: url of the description of the WANIPConnection + * controlURL_CIF: controlURL of the WANCommonInterfaceConfig + * controlURL_6FC: controlURL of the WANIPv6FirewallControl + */ +struct UPNPUrls { + char * controlURL; + char * ipcondescURL; + char * controlURL_CIF; + char * controlURL_6FC; + char * rootdescURL; +}; + +/* UPNP_GetValidIGD() : + * return values : + * 0 = NO IGD found + * 1 = A valid connected IGD has been found + * 2 = A valid IGD has been found but it reported as + * not connected + * 3 = an UPnP device has been found but was not recognized as an IGD + * + * In any non zero return case, the urls and data structures + * passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to + * free allocated memory. + */ +MINIUPNP_LIBSPEC int +UPNP_GetValidIGD(struct UPNPDev * devlist, + struct UPNPUrls * urls, + struct IGDdatas * data, + char * lanaddr, int lanaddrlen); + +/* UPNP_GetIGDFromUrl() + * Used when skipping the discovery process. + * When succeding, urls, data, and lanaddr arguments are set. + * return value : + * 0 - Not ok + * 1 - OK */ +MINIUPNP_LIBSPEC int +UPNP_GetIGDFromUrl(const char * rootdescurl, + struct UPNPUrls * urls, + struct IGDdatas * data, + char * lanaddr, int lanaddrlen); + +MINIUPNP_LIBSPEC void +GetUPNPUrls(struct UPNPUrls *, struct IGDdatas *, + const char *, unsigned int); + +MINIUPNP_LIBSPEC void +FreeUPNPUrls(struct UPNPUrls *); + +/* return 0 or 1 */ +MINIUPNP_LIBSPEC int UPNPIGD_IsConnected(struct UPNPUrls *, struct IGDdatas *); + + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/ext/miniupnpc/miniupnpc_declspec.h b/ext/miniupnpc/miniupnpc_declspec.h new file mode 100644 index 000000000..40adb922e --- /dev/null +++ b/ext/miniupnpc/miniupnpc_declspec.h @@ -0,0 +1,21 @@ +#ifndef MINIUPNPC_DECLSPEC_H_INCLUDED +#define MINIUPNPC_DECLSPEC_H_INCLUDED + +#if defined(_WIN32) && !defined(MINIUPNP_STATICLIB) + /* for windows dll */ + #ifdef MINIUPNP_EXPORTS + #define MINIUPNP_LIBSPEC __declspec(dllexport) + #else + #define MINIUPNP_LIBSPEC __declspec(dllimport) + #endif +#else + #if defined(__GNUC__) && __GNUC__ >= 4 + /* fix dynlib for OS X 10.9.2 and Apple LLVM version 5.0 */ + #define MINIUPNP_LIBSPEC __attribute__ ((visibility ("default"))) + #else + #define MINIUPNP_LIBSPEC + #endif +#endif + +#endif /* MINIUPNPC_DECLSPEC_H_INCLUDED */ + diff --git a/ext/miniupnpc/miniupnpcmodule.c b/ext/miniupnpc/miniupnpcmodule.c new file mode 100644 index 000000000..a5bdce44f --- /dev/null +++ b/ext/miniupnpc/miniupnpcmodule.c @@ -0,0 +1,695 @@ +/* $Id: miniupnpcmodule.c,v 1.29 2015/10/26 17:01:30 nanard Exp $*/ +/* Project : miniupnp + * Author : Thomas BERNARD + * website : http://miniupnp.tuxfamily.org/ + * copyright (c) 2007-2014 Thomas Bernard + * This software is subjet to the conditions detailed in the + * provided LICENCE file. */ +#include +#define MINIUPNP_STATICLIB +#include "structmember.h" +#include "miniupnpc.h" +#include "upnpcommands.h" +#include "upnperrors.h" + +/* for compatibility with Python < 2.4 */ +#ifndef Py_RETURN_NONE +#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None +#endif + +#ifndef Py_RETURN_TRUE +#define Py_RETURN_TRUE return Py_INCREF(Py_True), Py_True +#endif + +#ifndef Py_RETURN_FALSE +#define Py_RETURN_FALSE return Py_INCREF(Py_False), Py_False +#endif + +/* for compatibility with Python < 3.0 */ +#ifndef PyVarObject_HEAD_INIT +#define PyVarObject_HEAD_INIT(type, size) \ + PyObject_HEAD_INIT(type) size, +#endif + +#ifndef Py_TYPE +#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) +#endif + +typedef struct { + PyObject_HEAD + /* Type-specific fields go here. */ + struct UPNPDev * devlist; + struct UPNPUrls urls; + struct IGDdatas data; + unsigned int discoverdelay; /* value passed to upnpDiscover() */ + unsigned int localport; /* value passed to upnpDiscover() */ + char lanaddr[40]; /* our ip address on the LAN */ + char * multicastif; + char * minissdpdsocket; +} UPnPObject; + +static PyMemberDef UPnP_members[] = { + {"lanaddr", T_STRING_INPLACE, offsetof(UPnPObject, lanaddr), + READONLY, "ip address on the LAN" + }, + {"discoverdelay", T_UINT, offsetof(UPnPObject, discoverdelay), + 0/*READWRITE*/, "value in ms used to wait for SSDP responses" + }, + {"localport", T_UINT, offsetof(UPnPObject, localport), + 0/*READWRITE*/, + "If localport is set to UPNP_LOCAL_PORT_SAME(1) " + "SSDP packets will be sent from the source port " + "1900 (same as destination port), if set to " + "UPNP_LOCAL_PORT_ANY(0) system assign a source " + "port, any other value will be attempted as the " + "source port" + }, + /* T_STRING is allways readonly :( */ + {"multicastif", T_STRING, offsetof(UPnPObject, multicastif), + 0, "IP of the network interface to be used for multicast operations" + }, + {"minissdpdsocket", T_STRING, offsetof(UPnPObject, minissdpdsocket), + 0, "path of the MiniSSDPd unix socket" + }, + {NULL} +}; + + +static int UPnP_init(UPnPObject *self, PyObject *args, PyObject *kwds) +{ + char* multicastif = NULL; + char* minissdpdsocket = NULL; + static char *kwlist[] = { + "multicastif", "minissdpdsocket", "discoverdelay", + "localport", NULL + }; + + if(!PyArg_ParseTupleAndKeywords(args, kwds, "|zzII", kwlist, + &multicastif, + &minissdpdsocket, + &self->discoverdelay, + &self->localport)) + return -1; + + if(self->localport>1 && + (self->localport>65534||self->localport<1024)) { + PyErr_SetString(PyExc_Exception, "Invalid localport value"); + return -1; + } + if(multicastif) + self->multicastif = strdup(multicastif); + if(minissdpdsocket) + self->minissdpdsocket = strdup(minissdpdsocket); + + return 0; +} + +static void +UPnPObject_dealloc(UPnPObject *self) +{ + freeUPNPDevlist(self->devlist); + FreeUPNPUrls(&self->urls); + free(self->multicastif); + free(self->minissdpdsocket); + Py_TYPE(self)->tp_free((PyObject*)self); +} + +static PyObject * +UPnP_discover(UPnPObject *self) +{ + struct UPNPDev * dev; + int i; + PyObject *res = NULL; + if(self->devlist) + { + freeUPNPDevlist(self->devlist); + self->devlist = 0; + } + Py_BEGIN_ALLOW_THREADS + self->devlist = upnpDiscover((int)self->discoverdelay/*timeout in ms*/, + self->multicastif, + self->minissdpdsocket, + (int)self->localport, + 0/*ip v6*/, + 2/* TTL */, + 0/*error */); + Py_END_ALLOW_THREADS + /* Py_RETURN_NONE ??? */ + for(dev = self->devlist, i = 0; dev; dev = dev->pNext) + i++; + res = Py_BuildValue("i", i); + return res; +} + +static PyObject * +UPnP_selectigd(UPnPObject *self) +{ + int r; +Py_BEGIN_ALLOW_THREADS + r = UPNP_GetValidIGD(self->devlist, &self->urls, &self->data, + self->lanaddr, sizeof(self->lanaddr)); +Py_END_ALLOW_THREADS + if(r) + { + return Py_BuildValue("s", self->urls.controlURL); + } + else + { + /* TODO: have our own exception type ! */ + PyErr_SetString(PyExc_Exception, "No UPnP device discovered"); + return NULL; + } +} + +static PyObject * +UPnP_totalbytesent(UPnPObject *self) +{ + UNSIGNED_INTEGER i; +Py_BEGIN_ALLOW_THREADS + i = UPNP_GetTotalBytesSent(self->urls.controlURL_CIF, + self->data.CIF.servicetype); +Py_END_ALLOW_THREADS +#if (PY_MAJOR_VERSION >= 3) || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 3) + return Py_BuildValue("I", i); +#else + return Py_BuildValue("i", (int)i); +#endif +} + +static PyObject * +UPnP_totalbytereceived(UPnPObject *self) +{ + UNSIGNED_INTEGER i; +Py_BEGIN_ALLOW_THREADS + i = UPNP_GetTotalBytesReceived(self->urls.controlURL_CIF, + self->data.CIF.servicetype); +Py_END_ALLOW_THREADS +#if (PY_MAJOR_VERSION >= 3) || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 3) + return Py_BuildValue("I", i); +#else + return Py_BuildValue("i", (int)i); +#endif +} + +static PyObject * +UPnP_totalpacketsent(UPnPObject *self) +{ + UNSIGNED_INTEGER i; +Py_BEGIN_ALLOW_THREADS + i = UPNP_GetTotalPacketsSent(self->urls.controlURL_CIF, + self->data.CIF.servicetype); +Py_END_ALLOW_THREADS +#if (PY_MAJOR_VERSION >= 3) || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 3) + return Py_BuildValue("I", i); +#else + return Py_BuildValue("i", (int)i); +#endif +} + +static PyObject * +UPnP_totalpacketreceived(UPnPObject *self) +{ + UNSIGNED_INTEGER i; +Py_BEGIN_ALLOW_THREADS + i = UPNP_GetTotalPacketsReceived(self->urls.controlURL_CIF, + self->data.CIF.servicetype); +Py_END_ALLOW_THREADS +#if (PY_MAJOR_VERSION >= 3) || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 3) + return Py_BuildValue("I", i); +#else + return Py_BuildValue("i", (int)i); +#endif +} + +static PyObject * +UPnP_statusinfo(UPnPObject *self) +{ + char status[64]; + char lastconnerror[64]; + unsigned int uptime = 0; + int r; + status[0] = '\0'; + lastconnerror[0] = '\0'; +Py_BEGIN_ALLOW_THREADS + r = UPNP_GetStatusInfo(self->urls.controlURL, self->data.first.servicetype, + status, &uptime, lastconnerror); +Py_END_ALLOW_THREADS + if(r==UPNPCOMMAND_SUCCESS) { +#if (PY_MAJOR_VERSION >= 3) || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 3) + return Py_BuildValue("(s,I,s)", status, uptime, lastconnerror); +#else + return Py_BuildValue("(s,i,s)", status, (int)uptime, lastconnerror); +#endif + } else { + /* TODO: have our own exception type ! */ + PyErr_SetString(PyExc_Exception, strupnperror(r)); + return NULL; + } +} + +static PyObject * +UPnP_connectiontype(UPnPObject *self) +{ + char connectionType[64]; + int r; + connectionType[0] = '\0'; +Py_BEGIN_ALLOW_THREADS + r = UPNP_GetConnectionTypeInfo(self->urls.controlURL, + self->data.first.servicetype, + connectionType); +Py_END_ALLOW_THREADS + if(r==UPNPCOMMAND_SUCCESS) { + return Py_BuildValue("s", connectionType); + } else { + /* TODO: have our own exception type ! */ + PyErr_SetString(PyExc_Exception, strupnperror(r)); + return NULL; + } +} + +static PyObject * +UPnP_externalipaddress(UPnPObject *self) +{ + char externalIPAddress[40]; + int r; + externalIPAddress[0] = '\0'; +Py_BEGIN_ALLOW_THREADS + r = UPNP_GetExternalIPAddress(self->urls.controlURL, + self->data.first.servicetype, + externalIPAddress); +Py_END_ALLOW_THREADS + if(r==UPNPCOMMAND_SUCCESS) { + return Py_BuildValue("s", externalIPAddress); + } else { + /* TODO: have our own exception type ! */ + PyErr_SetString(PyExc_Exception, strupnperror(r)); + return NULL; + } +} + +/* AddPortMapping(externalPort, protocol, internalHost, internalPort, desc, + * remoteHost) + * protocol is 'UDP' or 'TCP' */ +static PyObject * +UPnP_addportmapping(UPnPObject *self, PyObject *args) +{ + char extPort[6]; + unsigned short ePort; + char inPort[6]; + unsigned short iPort; + const char * proto; + const char * host; + const char * desc; + const char * remoteHost; + const char * leaseDuration = "0"; + int r; + if (!PyArg_ParseTuple(args, "HssHss", &ePort, &proto, + &host, &iPort, &desc, &remoteHost)) + return NULL; +Py_BEGIN_ALLOW_THREADS + sprintf(extPort, "%hu", ePort); + sprintf(inPort, "%hu", iPort); + r = UPNP_AddPortMapping(self->urls.controlURL, self->data.first.servicetype, + extPort, inPort, host, desc, proto, + remoteHost, leaseDuration); +Py_END_ALLOW_THREADS + if(r==UPNPCOMMAND_SUCCESS) + { + Py_RETURN_TRUE; + } + else + { + // TODO: RAISE an Exception. See upnpcommands.h for errors codes. + // upnperrors.c + //Py_RETURN_FALSE; + /* TODO: have our own exception type ! */ + PyErr_SetString(PyExc_Exception, strupnperror(r)); + return NULL; + } +} + +/* AddAnyPortMapping(externalPort, protocol, internalHost, internalPort, desc, + * remoteHost) + * protocol is 'UDP' or 'TCP' */ +static PyObject * +UPnP_addanyportmapping(UPnPObject *self, PyObject *args) +{ + char extPort[6]; + unsigned short ePort; + char inPort[6]; + unsigned short iPort; + char reservedPort[6]; + const char * proto; + const char * host; + const char * desc; + const char * remoteHost; + const char * leaseDuration = "0"; + int r; + if (!PyArg_ParseTuple(args, "HssHss", &ePort, &proto, &host, &iPort, &desc, &remoteHost)) + return NULL; +Py_BEGIN_ALLOW_THREADS + sprintf(extPort, "%hu", ePort); + sprintf(inPort, "%hu", iPort); + r = UPNP_AddAnyPortMapping(self->urls.controlURL, self->data.first.servicetype, + extPort, inPort, host, desc, proto, + remoteHost, leaseDuration, reservedPort); +Py_END_ALLOW_THREADS + if(r==UPNPCOMMAND_SUCCESS) { + return Py_BuildValue("i", atoi(reservedPort)); + } else { + /* TODO: have our own exception type ! */ + PyErr_SetString(PyExc_Exception, strupnperror(r)); + return NULL; + } +} + + +/* DeletePortMapping(extPort, proto, removeHost='') + * proto = 'UDP', 'TCP' */ +static PyObject * +UPnP_deleteportmapping(UPnPObject *self, PyObject *args) +{ + char extPort[6]; + unsigned short ePort; + const char * proto; + const char * remoteHost = ""; + int r; + if(!PyArg_ParseTuple(args, "Hs|z", &ePort, &proto, &remoteHost)) + return NULL; +Py_BEGIN_ALLOW_THREADS + sprintf(extPort, "%hu", ePort); + r = UPNP_DeletePortMapping(self->urls.controlURL, self->data.first.servicetype, + extPort, proto, remoteHost); +Py_END_ALLOW_THREADS + if(r==UPNPCOMMAND_SUCCESS) { + Py_RETURN_TRUE; + } else { + /* TODO: have our own exception type ! */ + PyErr_SetString(PyExc_Exception, strupnperror(r)); + return NULL; + } +} + +/* DeletePortMappingRange(extPort, proto, removeHost='') + * proto = 'UDP', 'TCP' */ +static PyObject * +UPnP_deleteportmappingrange(UPnPObject *self, PyObject *args) +{ + char extPortStart[6]; + unsigned short ePortStart; + char extPortEnd[6]; + unsigned short ePortEnd; + const char * proto; + unsigned char manage; + char manageStr[1]; + int r; + if(!PyArg_ParseTuple(args, "HHsb", &ePortStart, &ePortEnd, &proto, &manage)) + return NULL; +Py_BEGIN_ALLOW_THREADS + sprintf(extPortStart, "%hu", ePortStart); + sprintf(extPortEnd, "%hu", ePortEnd); + sprintf(manageStr, "%hhu", manage); + r = UPNP_DeletePortMappingRange(self->urls.controlURL, self->data.first.servicetype, + extPortStart, extPortEnd, proto, manageStr); +Py_END_ALLOW_THREADS + if(r==UPNPCOMMAND_SUCCESS) { + Py_RETURN_TRUE; + } else { + /* TODO: have our own exception type ! */ + PyErr_SetString(PyExc_Exception, strupnperror(r)); + return NULL; + } +} + +static PyObject * +UPnP_getportmappingnumberofentries(UPnPObject *self) +{ + unsigned int n = 0; + int r; +Py_BEGIN_ALLOW_THREADS + r = UPNP_GetPortMappingNumberOfEntries(self->urls.controlURL, + self->data.first.servicetype, + &n); +Py_END_ALLOW_THREADS + if(r==UPNPCOMMAND_SUCCESS) { +#if (PY_MAJOR_VERSION >= 3) || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 3) + return Py_BuildValue("I", n); +#else + return Py_BuildValue("i", (int)n); +#endif + } else { + /* TODO: have our own exception type ! */ + PyErr_SetString(PyExc_Exception, strupnperror(r)); + return NULL; + } +} + +/* GetSpecificPortMapping(ePort, proto, remoteHost='') + * proto = 'UDP' or 'TCP' */ +static PyObject * +UPnP_getspecificportmapping(UPnPObject *self, PyObject *args) +{ + char extPort[6]; + unsigned short ePort; + const char * proto; + const char * remoteHost = ""; + char intClient[40]; + char intPort[6]; + unsigned short iPort; + char desc[80]; + char enabled[4]; + char leaseDuration[16]; + if(!PyArg_ParseTuple(args, "Hs|z", &ePort, &proto, &remoteHost)) + return NULL; + extPort[0] = '\0'; intClient[0] = '\0'; intPort[0] = '\0'; + desc[0] = '\0'; enabled[0] = '\0'; leaseDuration[0] = '\0'; +Py_BEGIN_ALLOW_THREADS + sprintf(extPort, "%hu", ePort); + UPNP_GetSpecificPortMappingEntry(self->urls.controlURL, + self->data.first.servicetype, + extPort, proto, remoteHost, + intClient, intPort, + desc, enabled, leaseDuration); +Py_END_ALLOW_THREADS + if(intClient[0]) + { + iPort = (unsigned short)atoi(intPort); + return Py_BuildValue("(s,H,s,O,i)", + intClient, iPort, desc, + PyBool_FromLong(atoi(enabled)), + atoi(leaseDuration)); + } + else + { + Py_RETURN_NONE; + } +} + +/* GetGenericPortMapping(index) */ +static PyObject * +UPnP_getgenericportmapping(UPnPObject *self, PyObject *args) +{ + int i, r; + char index[8]; + char intClient[40]; + char intPort[6]; + unsigned short iPort; + char extPort[6]; + unsigned short ePort; + char protocol[4]; + char desc[80]; + char enabled[6]; + char rHost[64]; + char duration[16]; /* lease duration */ + unsigned int dur; + if(!PyArg_ParseTuple(args, "i", &i)) + return NULL; +Py_BEGIN_ALLOW_THREADS + snprintf(index, sizeof(index), "%d", i); + rHost[0] = '\0'; enabled[0] = '\0'; + duration[0] = '\0'; desc[0] = '\0'; + extPort[0] = '\0'; intPort[0] = '\0'; intClient[0] = '\0'; + r = UPNP_GetGenericPortMappingEntry(self->urls.controlURL, + self->data.first.servicetype, + index, + extPort, intClient, intPort, + protocol, desc, enabled, rHost, + duration); +Py_END_ALLOW_THREADS + if(r==UPNPCOMMAND_SUCCESS) + { + ePort = (unsigned short)atoi(extPort); + iPort = (unsigned short)atoi(intPort); + dur = (unsigned int)strtoul(duration, 0, 0); +#if (PY_MAJOR_VERSION >= 3) || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 3) + return Py_BuildValue("(H,s,(s,H),s,s,s,I)", + ePort, protocol, intClient, iPort, + desc, enabled, rHost, dur); +#else + return Py_BuildValue("(i,s,(s,i),s,s,s,i)", + (int)ePort, protocol, intClient, (int)iPort, + desc, enabled, rHost, (int)dur); +#endif + } + else + { + Py_RETURN_NONE; + } +} + +/* miniupnpc.UPnP object Method Table */ +static PyMethodDef UPnP_methods[] = { + {"discover", (PyCFunction)UPnP_discover, METH_NOARGS, + "discover UPnP IGD devices on the network" + }, + {"selectigd", (PyCFunction)UPnP_selectigd, METH_NOARGS, + "select a valid UPnP IGD among discovered devices" + }, + {"totalbytesent", (PyCFunction)UPnP_totalbytesent, METH_NOARGS, + "return the total number of bytes sent by UPnP IGD" + }, + {"totalbytereceived", (PyCFunction)UPnP_totalbytereceived, METH_NOARGS, + "return the total number of bytes received by UPnP IGD" + }, + {"totalpacketsent", (PyCFunction)UPnP_totalpacketsent, METH_NOARGS, + "return the total number of packets sent by UPnP IGD" + }, + {"totalpacketreceived", (PyCFunction)UPnP_totalpacketreceived, METH_NOARGS, + "return the total number of packets received by UPnP IGD" + }, + {"statusinfo", (PyCFunction)UPnP_statusinfo, METH_NOARGS, + "return status and uptime" + }, + {"connectiontype", (PyCFunction)UPnP_connectiontype, METH_NOARGS, + "return IGD WAN connection type" + }, + {"externalipaddress", (PyCFunction)UPnP_externalipaddress, METH_NOARGS, + "return external IP address" + }, + {"addportmapping", (PyCFunction)UPnP_addportmapping, METH_VARARGS, + "add a port mapping" + }, + {"addanyportmapping", (PyCFunction)UPnP_addanyportmapping, METH_VARARGS, + "add a port mapping, IGD to select alternative if necessary" + }, + {"deleteportmapping", (PyCFunction)UPnP_deleteportmapping, METH_VARARGS, + "delete a port mapping" + }, + {"deleteportmappingrange", (PyCFunction)UPnP_deleteportmappingrange, METH_VARARGS, + "delete a range of port mappings" + }, + {"getportmappingnumberofentries", (PyCFunction)UPnP_getportmappingnumberofentries, METH_NOARGS, + "-- non standard --" + }, + {"getspecificportmapping", (PyCFunction)UPnP_getspecificportmapping, METH_VARARGS, + "get details about a specific port mapping entry" + }, + {"getgenericportmapping", (PyCFunction)UPnP_getgenericportmapping, METH_VARARGS, + "get all details about the port mapping at index" + }, + {NULL} /* Sentinel */ +}; + +static PyTypeObject UPnPType = { + PyVarObject_HEAD_INIT(NULL, + 0) /*ob_size*/ + "miniupnpc.UPnP", /*tp_name*/ + sizeof(UPnPObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + (destructor)UPnPObject_dealloc,/*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash */ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT, /*tp_flags*/ + "UPnP objects", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + UPnP_methods, /* tp_methods */ + UPnP_members, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + (initproc)UPnP_init, /* tp_init */ + 0, /* tp_alloc */ +#ifndef _WIN32 + PyType_GenericNew,/*UPnP_new,*/ /* tp_new */ +#else + 0, +#endif +}; + +/* module methods */ +static PyMethodDef miniupnpc_methods[] = { + {NULL} /* Sentinel */ +}; + +#if PY_MAJOR_VERSION >= 3 +static struct PyModuleDef moduledef = { + PyModuleDef_HEAD_INIT, + "miniupnpc", /* m_name */ + "miniupnpc module.", /* m_doc */ + -1, /* m_size */ + miniupnpc_methods, /* m_methods */ + NULL, /* m_reload */ + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL, /* m_free */ +}; +#endif + +#ifndef PyMODINIT_FUNC /* declarations for DLL import/export */ +#define PyMODINIT_FUNC void +#endif + +PyMODINIT_FUNC +#if PY_MAJOR_VERSION >= 3 +PyInit_miniupnpc(void) +#else +initminiupnpc(void) +#endif +{ + PyObject* m; + +#ifdef _WIN32 + UPnPType.tp_new = PyType_GenericNew; +#endif + if (PyType_Ready(&UPnPType) < 0) +#if PY_MAJOR_VERSION >= 3 + return 0; +#else + return; +#endif + +#if PY_MAJOR_VERSION >= 3 + m = PyModule_Create(&moduledef); +#else + m = Py_InitModule3("miniupnpc", miniupnpc_methods, + "miniupnpc module."); +#endif + + Py_INCREF(&UPnPType); + PyModule_AddObject(m, "UPnP", (PyObject *)&UPnPType); + +#if PY_MAJOR_VERSION >= 3 + return m; +#endif +} + diff --git a/ext/miniupnpc/miniupnpcstrings.h.cmake b/ext/miniupnpc/miniupnpcstrings.h.cmake new file mode 100644 index 000000000..78c8fe9c5 --- /dev/null +++ b/ext/miniupnpc/miniupnpcstrings.h.cmake @@ -0,0 +1,15 @@ +#ifndef MINIUPNPCSTRINGS_H_INCLUDED +#define MINIUPNPCSTRINGS_H_INCLUDED + +#define OS_STRING "${CMAKE_SYSTEM_NAME}" +#define MINIUPNPC_VERSION_STRING "${MINIUPNPC_VERSION}" + +#if 0 +/* according to "UPnP Device Architecture 1.0" */ +#define UPNP_VERSION_STRING "UPnP/1.0" +#else +/* according to "UPnP Device Architecture 1.1" */ +#define UPNP_VERSION_STRING "UPnP/1.1" +#endif + +#endif diff --git a/ext/miniupnpc/miniupnpcstrings.h.in b/ext/miniupnpc/miniupnpcstrings.h.in new file mode 100644 index 000000000..68bf4293d --- /dev/null +++ b/ext/miniupnpc/miniupnpcstrings.h.in @@ -0,0 +1,23 @@ +/* $Id: miniupnpcstrings.h.in,v 1.6 2014/11/04 22:31:55 nanard Exp $ */ +/* Project: miniupnp + * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * Author: Thomas Bernard + * Copyright (c) 2005-2014 Thomas Bernard + * This software is subjects to the conditions detailed + * in the LICENCE file provided within this distribution */ +#ifndef MINIUPNPCSTRINGS_H_INCLUDED +#define MINIUPNPCSTRINGS_H_INCLUDED + +#define OS_STRING "OS/version" +#define MINIUPNPC_VERSION_STRING "version" + +#if 0 +/* according to "UPnP Device Architecture 1.0" */ +#define UPNP_VERSION_STRING "UPnP/1.0" +#else +/* according to "UPnP Device Architecture 1.1" */ +#define UPNP_VERSION_STRING "UPnP/1.1" +#endif + +#endif + diff --git a/ext/miniupnpc/miniupnpctypes.h b/ext/miniupnpc/miniupnpctypes.h new file mode 100644 index 000000000..591c32fb6 --- /dev/null +++ b/ext/miniupnpc/miniupnpctypes.h @@ -0,0 +1,19 @@ +/* $Id: miniupnpctypes.h,v 1.2 2012/09/27 15:42:10 nanard Exp $ */ +/* Miniupnp project : http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org + * Author : Thomas Bernard + * Copyright (c) 2011 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided within this distribution */ +#ifndef MINIUPNPCTYPES_H_INCLUDED +#define MINIUPNPCTYPES_H_INCLUDED + +#if (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) +#define UNSIGNED_INTEGER unsigned long long +#define STRTOUI strtoull +#else +#define UNSIGNED_INTEGER unsigned int +#define STRTOUI strtoul +#endif + +#endif + diff --git a/ext/miniupnpc/miniwget.c b/ext/miniupnpc/miniwget.c new file mode 100644 index 000000000..40aa71807 --- /dev/null +++ b/ext/miniupnpc/miniwget.c @@ -0,0 +1,626 @@ +/* $Id: miniwget.c,v 1.72 2015/10/26 17:05:08 nanard Exp $ */ +/* Project : miniupnp + * Website : http://miniupnp.free.fr/ + * Author : Thomas Bernard + * Copyright (c) 2005-2015 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. */ + +#include +#include +#include +#include +#ifdef _WIN32 +#include +#include +#include +#define MAXHOSTNAMELEN 64 +#define snprintf _snprintf +#define socklen_t int +#ifndef strncasecmp +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +#define strncasecmp _memicmp +#else /* defined(_MSC_VER) && (_MSC_VER >= 1400) */ +#define strncasecmp memicmp +#endif /* defined(_MSC_VER) && (_MSC_VER >= 1400) */ +#endif /* #ifndef strncasecmp */ +#else /* #ifdef _WIN32 */ +#include +#include +#if defined(__amigaos__) && !defined(__amigaos4__) +#define socklen_t int +#else /* #if defined(__amigaos__) && !defined(__amigaos4__) */ +#include +#endif /* #else defined(__amigaos__) && !defined(__amigaos4__) */ +#include +#include +#include +#include +#include +#define closesocket close +#include +#endif /* #else _WIN32 */ +#ifdef __GNU__ +#define MAXHOSTNAMELEN 64 +#endif /* __GNU__ */ + +#ifndef MIN +#define MIN(x,y) (((x)<(y))?(x):(y)) +#endif /* MIN */ + + +#include "miniupnpcstrings.h" +#include "miniwget.h" +#include "connecthostport.h" +#include "receivedata.h" + +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 64 +#endif + +/* + * Read a HTTP response from a socket. + * Process Content-Length and Transfer-encoding headers. + * return a pointer to the content buffer, which length is saved + * to the length parameter. + */ +void * +getHTTPResponse(int s, int * size) +{ + char buf[2048]; + int n; + int endofheaders = 0; + int chunked = 0; + int content_length = -1; + unsigned int chunksize = 0; + unsigned int bytestocopy = 0; + /* buffers : */ + char * header_buf; + unsigned int header_buf_len = 2048; + unsigned int header_buf_used = 0; + char * content_buf; + unsigned int content_buf_len = 2048; + unsigned int content_buf_used = 0; + char chunksize_buf[32]; + unsigned int chunksize_buf_index; + + header_buf = malloc(header_buf_len); + if(header_buf == NULL) + { +#ifdef DEBUG + fprintf(stderr, "%s: Memory allocation error\n", "getHTTPResponse"); +#endif /* DEBUG */ + *size = -1; + return NULL; + } + content_buf = malloc(content_buf_len); + if(content_buf == NULL) + { + free(header_buf); +#ifdef DEBUG + fprintf(stderr, "%s: Memory allocation error\n", "getHTTPResponse"); +#endif /* DEBUG */ + *size = -1; + return NULL; + } + chunksize_buf[0] = '\0'; + chunksize_buf_index = 0; + + while((n = receivedata(s, buf, 2048, 5000, NULL)) > 0) + { + if(endofheaders == 0) + { + int i; + int linestart=0; + int colon=0; + int valuestart=0; + if(header_buf_used + n > header_buf_len) { + char * tmp = realloc(header_buf, header_buf_used + n); + if(tmp == NULL) { + /* memory allocation error */ + free(header_buf); + free(content_buf); + *size = -1; + return NULL; + } + header_buf = tmp; + header_buf_len = header_buf_used + n; + } + memcpy(header_buf + header_buf_used, buf, n); + header_buf_used += n; + /* search for CR LF CR LF (end of headers) + * recognize also LF LF */ + i = 0; + while(i < ((int)header_buf_used-1) && (endofheaders == 0)) { + if(header_buf[i] == '\r') { + i++; + if(header_buf[i] == '\n') { + i++; + if(i < (int)header_buf_used && header_buf[i] == '\r') { + i++; + if(i < (int)header_buf_used && header_buf[i] == '\n') { + endofheaders = i+1; + } + } + } + } else if(header_buf[i] == '\n') { + i++; + if(header_buf[i] == '\n') { + endofheaders = i+1; + } + } + i++; + } + if(endofheaders == 0) + continue; + /* parse header lines */ + for(i = 0; i < endofheaders - 1; i++) { + if(colon <= linestart && header_buf[i]==':') + { + colon = i; + while(i < (endofheaders-1) + && (header_buf[i+1] == ' ' || header_buf[i+1] == '\t')) + i++; + valuestart = i + 1; + } + /* detecting end of line */ + else if(header_buf[i]=='\r' || header_buf[i]=='\n') + { + if(colon > linestart && valuestart > colon) + { +#ifdef DEBUG + printf("header='%.*s', value='%.*s'\n", + colon-linestart, header_buf+linestart, + i-valuestart, header_buf+valuestart); +#endif + if(0==strncasecmp(header_buf+linestart, "content-length", colon-linestart)) + { + content_length = atoi(header_buf+valuestart); +#ifdef DEBUG + printf("Content-Length: %d\n", content_length); +#endif + } + else if(0==strncasecmp(header_buf+linestart, "transfer-encoding", colon-linestart) + && 0==strncasecmp(header_buf+valuestart, "chunked", 7)) + { +#ifdef DEBUG + printf("chunked transfer-encoding!\n"); +#endif + chunked = 1; + } + } + while((i < (int)header_buf_used) && (header_buf[i]=='\r' || header_buf[i] == '\n')) + i++; + linestart = i; + colon = linestart; + valuestart = 0; + } + } + /* copy the remaining of the received data back to buf */ + n = header_buf_used - endofheaders; + memcpy(buf, header_buf + endofheaders, n); + /* if(headers) */ + } + if(endofheaders) + { + /* content */ + if(chunked) + { + int i = 0; + while(i < n) + { + if(chunksize == 0) + { + /* reading chunk size */ + if(chunksize_buf_index == 0) { + /* skipping any leading CR LF */ + if(i= '0' + && chunksize_buf[j] <= '9') + chunksize = (chunksize << 4) + (chunksize_buf[j] - '0'); + else + chunksize = (chunksize << 4) + ((chunksize_buf[j] | 32) - 'a' + 10); + } + chunksize_buf[0] = '\0'; + chunksize_buf_index = 0; + i++; + } else { + /* not finished to get chunksize */ + continue; + } +#ifdef DEBUG + printf("chunksize = %u (%x)\n", chunksize, chunksize); +#endif + if(chunksize == 0) + { +#ifdef DEBUG + printf("end of HTTP content - %d %d\n", i, n); + /*printf("'%.*s'\n", n-i, buf+i);*/ +#endif + goto end_of_stream; + } + } + bytestocopy = ((int)chunksize < (n - i))?chunksize:(unsigned int)(n - i); + if((content_buf_used + bytestocopy) > content_buf_len) + { + char * tmp; + if(content_length >= (int)(content_buf_used + bytestocopy)) { + content_buf_len = content_length; + } else { + content_buf_len = content_buf_used + bytestocopy; + } + tmp = realloc(content_buf, content_buf_len); + if(tmp == NULL) { + /* memory allocation error */ + free(content_buf); + free(header_buf); + *size = -1; + return NULL; + } + content_buf = tmp; + } + memcpy(content_buf + content_buf_used, buf + i, bytestocopy); + content_buf_used += bytestocopy; + i += bytestocopy; + chunksize -= bytestocopy; + } + } + else + { + /* not chunked */ + if(content_length > 0 + && (int)(content_buf_used + n) > content_length) { + /* skipping additional bytes */ + n = content_length - content_buf_used; + } + if(content_buf_used + n > content_buf_len) + { + char * tmp; + if(content_length >= (int)(content_buf_used + n)) { + content_buf_len = content_length; + } else { + content_buf_len = content_buf_used + n; + } + tmp = realloc(content_buf, content_buf_len); + if(tmp == NULL) { + /* memory allocation error */ + free(content_buf); + free(header_buf); + *size = -1; + return NULL; + } + content_buf = tmp; + } + memcpy(content_buf + content_buf_used, buf, n); + content_buf_used += n; + } + } + /* use the Content-Length header value if available */ + if(content_length > 0 && (int)content_buf_used >= content_length) + { +#ifdef DEBUG + printf("End of HTTP content\n"); +#endif + break; + } + } +end_of_stream: + free(header_buf); header_buf = NULL; + *size = content_buf_used; + if(content_buf_used == 0) + { + free(content_buf); + content_buf = NULL; + } + return content_buf; +} + +/* miniwget3() : + * do all the work. + * Return NULL if something failed. */ +static void * +miniwget3(const char * host, + unsigned short port, const char * path, + int * size, char * addr_str, int addr_str_len, + const char * httpversion, unsigned int scope_id) +{ + char buf[2048]; + int s; + int n; + int len; + int sent; + void * content; + + *size = 0; + s = connecthostport(host, port, scope_id); + if(s < 0) + return NULL; + + /* get address for caller ! */ + if(addr_str) + { + struct sockaddr_storage saddr; + socklen_t saddrlen; + + saddrlen = sizeof(saddr); + if(getsockname(s, (struct sockaddr *)&saddr, &saddrlen) < 0) + { + perror("getsockname"); + } + else + { +#if defined(__amigaos__) && !defined(__amigaos4__) + /* using INT WINAPI WSAAddressToStringA(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD); + * But his function make a string with the port : nn.nn.nn.nn:port */ +/* if(WSAAddressToStringA((SOCKADDR *)&saddr, sizeof(saddr), + NULL, addr_str, (DWORD *)&addr_str_len)) + { + printf("WSAAddressToStringA() failed : %d\n", WSAGetLastError()); + }*/ + /* the following code is only compatible with ip v4 addresses */ + strncpy(addr_str, inet_ntoa(((struct sockaddr_in *)&saddr)->sin_addr), addr_str_len); +#else +#if 0 + if(saddr.sa_family == AF_INET6) { + inet_ntop(AF_INET6, + &(((struct sockaddr_in6 *)&saddr)->sin6_addr), + addr_str, addr_str_len); + } else { + inet_ntop(AF_INET, + &(((struct sockaddr_in *)&saddr)->sin_addr), + addr_str, addr_str_len); + } +#endif + /* getnameinfo return ip v6 address with the scope identifier + * such as : 2a01:e35:8b2b:7330::%4281128194 */ + n = getnameinfo((const struct sockaddr *)&saddr, saddrlen, + addr_str, addr_str_len, + NULL, 0, + NI_NUMERICHOST | NI_NUMERICSERV); + if(n != 0) { +#ifdef _WIN32 + fprintf(stderr, "getnameinfo() failed : %d\n", n); +#else + fprintf(stderr, "getnameinfo() failed : %s\n", gai_strerror(n)); +#endif + } +#endif + } +#ifdef DEBUG + printf("address miniwget : %s\n", addr_str); +#endif + } + + len = snprintf(buf, sizeof(buf), + "GET %s HTTP/%s\r\n" + "Host: %s:%d\r\n" + "Connection: Close\r\n" + "User-Agent: " OS_STRING ", " UPNP_VERSION_STRING ", MiniUPnPc/" MINIUPNPC_VERSION_STRING "\r\n" + + "\r\n", + path, httpversion, host, port); + if ((unsigned int)len >= sizeof(buf)) + { + closesocket(s); + return NULL; + } + sent = 0; + /* sending the HTTP request */ + while(sent < len) + { + n = send(s, buf+sent, len-sent, 0); + if(n < 0) + { + perror("send"); + closesocket(s); + return NULL; + } + else + { + sent += n; + } + } + content = getHTTPResponse(s, size); + closesocket(s); + return content; +} + +/* miniwget2() : + * Call miniwget3(); retry with HTTP/1.1 if 1.0 fails. */ +static void * +miniwget2(const char * host, + unsigned short port, const char * path, + int * size, char * addr_str, int addr_str_len, + unsigned int scope_id) +{ + char * respbuffer; + +#if 1 + respbuffer = miniwget3(host, port, path, size, + addr_str, addr_str_len, "1.1", scope_id); +#else + respbuffer = miniwget3(host, port, path, size, + addr_str, addr_str_len, "1.0", scope_id); + if (*size == 0) + { +#ifdef DEBUG + printf("Retrying with HTTP/1.1\n"); +#endif + free(respbuffer); + respbuffer = miniwget3(host, port, path, size, + addr_str, addr_str_len, "1.1", scope_id); + } +#endif + return respbuffer; +} + + + + +/* parseURL() + * arguments : + * url : source string not modified + * hostname : hostname destination string (size of MAXHOSTNAMELEN+1) + * port : port (destination) + * path : pointer to the path part of the URL + * + * Return values : + * 0 - Failure + * 1 - Success */ +int +parseURL(const char * url, + char * hostname, unsigned short * port, + char * * path, unsigned int * scope_id) +{ + char * p1, *p2, *p3; + if(!url) + return 0; + p1 = strstr(url, "://"); + if(!p1) + return 0; + p1 += 3; + if( (url[0]!='h') || (url[1]!='t') + ||(url[2]!='t') || (url[3]!='p')) + return 0; + memset(hostname, 0, MAXHOSTNAMELEN + 1); + if(*p1 == '[') + { + /* IP v6 : http://[2a00:1450:8002::6a]/path/abc */ + char * scope; + scope = strchr(p1, '%'); + p2 = strchr(p1, ']'); + if(p2 && scope && scope < p2 && scope_id) { + /* parse scope */ +#ifdef IF_NAMESIZE + char tmp[IF_NAMESIZE]; + int l; + scope++; + /* "%25" is just '%' in URL encoding */ + if(scope[0] == '2' && scope[1] == '5') + scope += 2; /* skip "25" */ + l = p2 - scope; + if(l >= IF_NAMESIZE) + l = IF_NAMESIZE - 1; + memcpy(tmp, scope, l); + tmp[l] = '\0'; + *scope_id = if_nametoindex(tmp); + if(*scope_id == 0) { + *scope_id = (unsigned int)strtoul(tmp, NULL, 10); + } +#else + /* under windows, scope is numerical */ + char tmp[8]; + int l; + scope++; + /* "%25" is just '%' in URL encoding */ + if(scope[0] == '2' && scope[1] == '5') + scope += 2; /* skip "25" */ + l = p2 - scope; + if(l >= sizeof(tmp)) + l = sizeof(tmp) - 1; + memcpy(tmp, scope, l); + tmp[l] = '\0'; + *scope_id = (unsigned int)strtoul(tmp, NULL, 10); +#endif + } + p3 = strchr(p1, '/'); + if(p2 && p3) + { + p2++; + strncpy(hostname, p1, MIN(MAXHOSTNAMELEN, (int)(p2-p1))); + if(*p2 == ':') + { + *port = 0; + p2++; + while( (*p2 >= '0') && (*p2 <= '9')) + { + *port *= 10; + *port += (unsigned short)(*p2 - '0'); + p2++; + } + } + else + { + *port = 80; + } + *path = p3; + return 1; + } + } + p2 = strchr(p1, ':'); + p3 = strchr(p1, '/'); + if(!p3) + return 0; + if(!p2 || (p2>p3)) + { + strncpy(hostname, p1, MIN(MAXHOSTNAMELEN, (int)(p3-p1))); + *port = 80; + } + else + { + strncpy(hostname, p1, MIN(MAXHOSTNAMELEN, (int)(p2-p1))); + *port = 0; + p2++; + while( (*p2 >= '0') && (*p2 <= '9')) + { + *port *= 10; + *port += (unsigned short)(*p2 - '0'); + p2++; + } + } + *path = p3; + return 1; +} + +void * +miniwget(const char * url, int * size, unsigned int scope_id) +{ + unsigned short port; + char * path; + /* protocol://host:port/chemin */ + char hostname[MAXHOSTNAMELEN+1]; + *size = 0; + if(!parseURL(url, hostname, &port, &path, &scope_id)) + return NULL; +#ifdef DEBUG + printf("parsed url : hostname='%s' port=%hu path='%s' scope_id=%u\n", + hostname, port, path, scope_id); +#endif + return miniwget2(hostname, port, path, size, 0, 0, scope_id); +} + +void * +miniwget_getaddr(const char * url, int * size, + char * addr, int addrlen, unsigned int scope_id) +{ + unsigned short port; + char * path; + /* protocol://host:port/path */ + char hostname[MAXHOSTNAMELEN+1]; + *size = 0; + if(addr) + addr[0] = '\0'; + if(!parseURL(url, hostname, &port, &path, &scope_id)) + return NULL; +#ifdef DEBUG + printf("parsed url : hostname='%s' port=%hu path='%s' scope_id=%u\n", + hostname, port, path, scope_id); +#endif + return miniwget2(hostname, port, path, size, addr, addrlen, scope_id); +} + diff --git a/ext/miniupnpc/miniwget.h b/ext/miniupnpc/miniwget.h new file mode 100644 index 000000000..d6db71a85 --- /dev/null +++ b/ext/miniupnpc/miniwget.h @@ -0,0 +1,30 @@ +/* $Id: miniwget.h,v 1.10 2015/07/21 13:16:55 nanard Exp $ */ +/* Project : miniupnp + * Author : Thomas Bernard + * Copyright (c) 2005-2015 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. + * */ +#ifndef MINIWGET_H_INCLUDED +#define MINIWGET_H_INCLUDED + +#include "miniupnpc_declspec.h" + +#ifdef __cplusplus +extern "C" { +#endif + +MINIUPNP_LIBSPEC void * getHTTPResponse(int s, int * size); + +MINIUPNP_LIBSPEC void * miniwget(const char *, int *, unsigned int); + +MINIUPNP_LIBSPEC void * miniwget_getaddr(const char *, int *, char *, int, unsigned int); + +int parseURL(const char *, char *, unsigned short *, char * *, unsigned int *); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/ext/miniupnpc/minixml.c b/ext/miniupnpc/minixml.c new file mode 100644 index 000000000..3e201ec2c --- /dev/null +++ b/ext/miniupnpc/minixml.c @@ -0,0 +1,229 @@ +/* $Id: minixml.c,v 1.11 2014/02/03 15:54:12 nanard Exp $ */ +/* minixml.c : the minimum size a xml parser can be ! */ +/* Project : miniupnp + * webpage: http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * Author : Thomas Bernard + +Copyright (c) 2005-2014, Thomas BERNARD +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +*/ +#include +#include "minixml.h" + +/* parseatt : used to parse the argument list + * return 0 (false) in case of success and -1 (true) if the end + * of the xmlbuffer is reached. */ +static int parseatt(struct xmlparser * p) +{ + const char * attname; + int attnamelen; + const char * attvalue; + int attvaluelen; + while(p->xml < p->xmlend) + { + if(*p->xml=='/' || *p->xml=='>') + return 0; + if( !IS_WHITE_SPACE(*p->xml) ) + { + char sep; + attname = p->xml; + attnamelen = 0; + while(*p->xml!='=' && !IS_WHITE_SPACE(*p->xml) ) + { + attnamelen++; p->xml++; + if(p->xml >= p->xmlend) + return -1; + } + while(*(p->xml++) != '=') + { + if(p->xml >= p->xmlend) + return -1; + } + while(IS_WHITE_SPACE(*p->xml)) + { + p->xml++; + if(p->xml >= p->xmlend) + return -1; + } + sep = *p->xml; + if(sep=='\'' || sep=='\"') + { + p->xml++; + if(p->xml >= p->xmlend) + return -1; + attvalue = p->xml; + attvaluelen = 0; + while(*p->xml != sep) + { + attvaluelen++; p->xml++; + if(p->xml >= p->xmlend) + return -1; + } + } + else + { + attvalue = p->xml; + attvaluelen = 0; + while( !IS_WHITE_SPACE(*p->xml) + && *p->xml != '>' && *p->xml != '/') + { + attvaluelen++; p->xml++; + if(p->xml >= p->xmlend) + return -1; + } + } + /*printf("%.*s='%.*s'\n", + attnamelen, attname, attvaluelen, attvalue);*/ + if(p->attfunc) + p->attfunc(p->data, attname, attnamelen, attvalue, attvaluelen); + } + p->xml++; + } + return -1; +} + +/* parseelt parse the xml stream and + * call the callback functions when needed... */ +static void parseelt(struct xmlparser * p) +{ + int i; + const char * elementname; + while(p->xml < (p->xmlend - 1)) + { + if((p->xml + 4) <= p->xmlend && (0 == memcmp(p->xml, "", 3) != 0); + p->xml += 3; + } + else if((p->xml)[0]=='<' && (p->xml)[1]!='?') + { + i = 0; elementname = ++p->xml; + while( !IS_WHITE_SPACE(*p->xml) + && (*p->xml!='>') && (*p->xml!='/') + ) + { + i++; p->xml++; + if (p->xml >= p->xmlend) + return; + /* to ignore namespace : */ + if(*p->xml==':') + { + i = 0; + elementname = ++p->xml; + } + } + if(i>0) + { + if(p->starteltfunc) + p->starteltfunc(p->data, elementname, i); + if(parseatt(p)) + return; + if(*p->xml!='/') + { + const char * data; + i = 0; data = ++p->xml; + if (p->xml >= p->xmlend) + return; + while( IS_WHITE_SPACE(*p->xml) ) + { + i++; p->xml++; + if (p->xml >= p->xmlend) + return; + } + if(memcmp(p->xml, "xml += 9; + data = p->xml; + i = 0; + while(memcmp(p->xml, "]]>", 3) != 0) + { + i++; p->xml++; + if ((p->xml + 3) >= p->xmlend) + return; + } + if(i>0 && p->datafunc) + p->datafunc(p->data, data, i); + while(*p->xml!='<') + { + p->xml++; + if (p->xml >= p->xmlend) + return; + } + } + else + { + while(*p->xml!='<') + { + i++; p->xml++; + if ((p->xml + 1) >= p->xmlend) + return; + } + if(i>0 && p->datafunc && *(p->xml + 1) == '/') + p->datafunc(p->data, data, i); + } + } + } + else if(*p->xml == '/') + { + i = 0; elementname = ++p->xml; + if (p->xml >= p->xmlend) + return; + while((*p->xml != '>')) + { + i++; p->xml++; + if (p->xml >= p->xmlend) + return; + } + if(p->endeltfunc) + p->endeltfunc(p->data, elementname, i); + p->xml++; + } + } + else + { + p->xml++; + } + } +} + +/* the parser must be initialized before calling this function */ +void parsexml(struct xmlparser * parser) +{ + parser->xml = parser->xmlstart; + parser->xmlend = parser->xmlstart + parser->xmlsize; + parseelt(parser); +} + + diff --git a/ext/miniupnpc/minixml.h b/ext/miniupnpc/minixml.h new file mode 100644 index 000000000..9f43aa48c --- /dev/null +++ b/ext/miniupnpc/minixml.h @@ -0,0 +1,37 @@ +/* $Id: minixml.h,v 1.7 2012/09/27 15:42:10 nanard Exp $ */ +/* minimal xml parser + * + * Project : miniupnp + * Website : http://miniupnp.free.fr/ + * Author : Thomas Bernard + * Copyright (c) 2005 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. + * */ +#ifndef MINIXML_H_INCLUDED +#define MINIXML_H_INCLUDED +#define IS_WHITE_SPACE(c) ((c==' ') || (c=='\t') || (c=='\r') || (c=='\n')) + +/* if a callback function pointer is set to NULL, + * the function is not called */ +struct xmlparser { + const char *xmlstart; + const char *xmlend; + const char *xml; /* pointer to current character */ + int xmlsize; + void * data; + void (*starteltfunc) (void *, const char *, int); + void (*endeltfunc) (void *, const char *, int); + void (*datafunc) (void *, const char *, int); + void (*attfunc) (void *, const char *, int, const char *, int); +}; + +/* parsexml() + * the xmlparser structure must be initialized before the call + * the following structure members have to be initialized : + * xmlstart, xmlsize, data, *func + * xml is for internal usage, xmlend is computed automatically */ +void parsexml(struct xmlparser *); + +#endif + diff --git a/ext/miniupnpc/minixmlvalid.c b/ext/miniupnpc/minixmlvalid.c new file mode 100644 index 000000000..dad148812 --- /dev/null +++ b/ext/miniupnpc/minixmlvalid.c @@ -0,0 +1,163 @@ +/* $Id: minixmlvalid.c,v 1.7 2015/07/15 12:41:15 nanard Exp $ */ +/* MiniUPnP Project + * http://miniupnp.tuxfamily.org/ or http://miniupnp.free.fr/ + * minixmlvalid.c : + * validation program for the minixml parser + * + * (c) 2006-2011 Thomas Bernard */ + +#include +#include +#include +#include "minixml.h" + +/* xml event structure */ +struct event { + enum { ELTSTART, ELTEND, ATT, CHARDATA } type; + const char * data; + int len; +}; + +struct eventlist { + int n; + struct event * events; +}; + +/* compare 2 xml event lists + * return 0 if the two lists are equals */ +int evtlistcmp(struct eventlist * a, struct eventlist * b) +{ + int i; + struct event * ae, * be; + if(a->n != b->n) + { + printf("event number not matching : %d != %d\n", a->n, b->n); + /*return 1;*/ + } + for(i=0; in; i++) + { + ae = a->events + i; + be = b->events + i; + if( (ae->type != be->type) + ||(ae->len != be->len) + ||memcmp(ae->data, be->data, ae->len)) + { + printf("Found a difference : %d '%.*s' != %d '%.*s'\n", + ae->type, ae->len, ae->data, + be->type, be->len, be->data); + return 1; + } + } + return 0; +} + +/* Test data */ +static const char xmldata[] = +"\n" +" " +"character data" +" \n \t" +"" +"\nstuff !\n ]]> \n\n" +" \tchardata1 chardata2 " +""; + +static const struct event evtref[] = +{ + {ELTSTART, "xmlroot", 7}, + {ELTSTART, "elt1", 4}, + /* attributes */ + {CHARDATA, "character data", 14}, + {ELTEND, "elt1", 4}, + {ELTSTART, "elt1b", 5}, + {ELTSTART, "elt1", 4}, + {CHARDATA, " stuff !\n ", 16}, + {ELTEND, "elt1", 4}, + {ELTSTART, "elt2a", 5}, + {ELTSTART, "elt2b", 5}, + {CHARDATA, "chardata1", 9}, + {ELTEND, "elt2b", 5}, + {ELTSTART, "elt2b", 5}, + {CHARDATA, " chardata2 ", 11}, + {ELTEND, "elt2b", 5}, + {ELTEND, "elt2a", 5}, + {ELTEND, "xmlroot", 7} +}; + +void startelt(void * data, const char * p, int l) +{ + struct eventlist * evtlist = data; + struct event * evt; + evt = evtlist->events + evtlist->n; + /*printf("startelt : %.*s\n", l, p);*/ + evt->type = ELTSTART; + evt->data = p; + evt->len = l; + evtlist->n++; +} + +void endelt(void * data, const char * p, int l) +{ + struct eventlist * evtlist = data; + struct event * evt; + evt = evtlist->events + evtlist->n; + /*printf("endelt : %.*s\n", l, p);*/ + evt->type = ELTEND; + evt->data = p; + evt->len = l; + evtlist->n++; +} + +void chardata(void * data, const char * p, int l) +{ + struct eventlist * evtlist = data; + struct event * evt; + evt = evtlist->events + evtlist->n; + /*printf("chardata : '%.*s'\n", l, p);*/ + evt->type = CHARDATA; + evt->data = p; + evt->len = l; + evtlist->n++; +} + +int testxmlparser(const char * xml, int size) +{ + int r; + struct eventlist evtlist; + struct eventlist evtlistref; + struct xmlparser parser; + evtlist.n = 0; + evtlist.events = malloc(sizeof(struct event)*100); + if(evtlist.events == NULL) + { + fprintf(stderr, "Memory allocation error.\n"); + return -1; + } + memset(&parser, 0, sizeof(parser)); + parser.xmlstart = xml; + parser.xmlsize = size; + parser.data = &evtlist; + parser.starteltfunc = startelt; + parser.endeltfunc = endelt; + parser.datafunc = chardata; + parsexml(&parser); + printf("%d events\n", evtlist.n); + /* compare */ + evtlistref.n = sizeof(evtref)/sizeof(struct event); + evtlistref.events = (struct event *)evtref; + r = evtlistcmp(&evtlistref, &evtlist); + free(evtlist.events); + return r; +} + +int main(int argc, char * * argv) +{ + int r; + (void)argc; (void)argv; + + r = testxmlparser(xmldata, sizeof(xmldata)-1); + if(r) + printf("minixml validation test failed\n"); + return r; +} + diff --git a/ext/miniupnpc/msvc/miniupnpc.sln b/ext/miniupnpc/msvc/miniupnpc.sln new file mode 100644 index 000000000..b3da1919e --- /dev/null +++ b/ext/miniupnpc/msvc/miniupnpc.sln @@ -0,0 +1,29 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual C++ Express 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniupnpc", "miniupnpc.vcproj", "{D28CE435-CB33-4BAE-8A52-C6EF915956F5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upnpc-static", "upnpc-static.vcproj", "{469E1CF6-08A2-4B7B-A2AA-5BDB089857C1}" + ProjectSection(ProjectDependencies) = postProject + {D28CE435-CB33-4BAE-8A52-C6EF915956F5} = {D28CE435-CB33-4BAE-8A52-C6EF915956F5} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D28CE435-CB33-4BAE-8A52-C6EF915956F5}.Debug|Win32.ActiveCfg = Debug|Win32 + {D28CE435-CB33-4BAE-8A52-C6EF915956F5}.Debug|Win32.Build.0 = Debug|Win32 + {D28CE435-CB33-4BAE-8A52-C6EF915956F5}.Release|Win32.ActiveCfg = Release|Win32 + {D28CE435-CB33-4BAE-8A52-C6EF915956F5}.Release|Win32.Build.0 = Release|Win32 + {469E1CF6-08A2-4B7B-A2AA-5BDB089857C1}.Debug|Win32.ActiveCfg = Debug|Win32 + {469E1CF6-08A2-4B7B-A2AA-5BDB089857C1}.Debug|Win32.Build.0 = Debug|Win32 + {469E1CF6-08A2-4B7B-A2AA-5BDB089857C1}.Release|Win32.ActiveCfg = Release|Win32 + {469E1CF6-08A2-4B7B-A2AA-5BDB089857C1}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ext/miniupnpc/msvc/miniupnpc.vcproj b/ext/miniupnpc/msvc/miniupnpc.vcproj new file mode 100644 index 000000000..fb301e3b8 --- /dev/null +++ b/ext/miniupnpc/msvc/miniupnpc.vcproj @@ -0,0 +1,283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/miniupnpc/msvc/upnpc-static.vcproj b/ext/miniupnpc/msvc/upnpc-static.vcproj new file mode 100644 index 000000000..c88c9a6e9 --- /dev/null +++ b/ext/miniupnpc/msvc/upnpc-static.vcproj @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/miniupnpc/portlistingparse.c b/ext/miniupnpc/portlistingparse.c new file mode 100644 index 000000000..0e0927803 --- /dev/null +++ b/ext/miniupnpc/portlistingparse.c @@ -0,0 +1,172 @@ +/* $Id: portlistingparse.c,v 1.9 2015/07/15 12:41:13 nanard Exp $ */ +/* MiniUPnP project + * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * (c) 2011-2015 Thomas Bernard + * This software is subject to the conditions detailed + * in the LICENCE file provided within the distribution */ +#include +#include +#ifdef DEBUG +#include +#endif /* DEBUG */ +#include "portlistingparse.h" +#include "minixml.h" + +/* list of the elements */ +static const struct { + const portMappingElt code; + const char * const str; +} elements[] = { + { PortMappingEntry, "PortMappingEntry"}, + { NewRemoteHost, "NewRemoteHost"}, + { NewExternalPort, "NewExternalPort"}, + { NewProtocol, "NewProtocol"}, + { NewInternalPort, "NewInternalPort"}, + { NewInternalClient, "NewInternalClient"}, + { NewEnabled, "NewEnabled"}, + { NewDescription, "NewDescription"}, + { NewLeaseTime, "NewLeaseTime"}, + { PortMappingEltNone, NULL} +}; + +/* Helper function */ +static UNSIGNED_INTEGER +atoui(const char * p, int l) +{ + UNSIGNED_INTEGER r = 0; + while(l > 0 && *p) + { + if(*p >= '0' && *p <= '9') + r = r*10 + (*p - '0'); + else + break; + p++; + l--; + } + return r; +} + +/* Start element handler */ +static void +startelt(void * d, const char * name, int l) +{ + int i; + struct PortMappingParserData * pdata = (struct PortMappingParserData *)d; + pdata->curelt = PortMappingEltNone; + for(i = 0; elements[i].str; i++) + { + if(memcmp(name, elements[i].str, l) == 0) + { + pdata->curelt = elements[i].code; + break; + } + } + if(pdata->curelt == PortMappingEntry) + { + struct PortMapping * pm; + pm = calloc(1, sizeof(struct PortMapping)); + if(pm == NULL) + { + /* malloc error */ +#ifdef DEBUG + fprintf(stderr, "%s: error allocating memory", + "startelt"); +#endif /* DEBUG */ + return; + } + pm->l_next = pdata->l_head; /* insert in list */ + pdata->l_head = pm; + } +} + +/* End element handler */ +static void +endelt(void * d, const char * name, int l) +{ + struct PortMappingParserData * pdata = (struct PortMappingParserData *)d; + (void)name; + (void)l; + pdata->curelt = PortMappingEltNone; +} + +/* Data handler */ +static void +data(void * d, const char * data, int l) +{ + struct PortMapping * pm; + struct PortMappingParserData * pdata = (struct PortMappingParserData *)d; + pm = pdata->l_head; + if(!pm) + return; + if(l > 63) + l = 63; + switch(pdata->curelt) + { + case NewRemoteHost: + memcpy(pm->remoteHost, data, l); + pm->remoteHost[l] = '\0'; + break; + case NewExternalPort: + pm->externalPort = (unsigned short)atoui(data, l); + break; + case NewProtocol: + if(l > 3) + l = 3; + memcpy(pm->protocol, data, l); + pm->protocol[l] = '\0'; + break; + case NewInternalPort: + pm->internalPort = (unsigned short)atoui(data, l); + break; + case NewInternalClient: + memcpy(pm->internalClient, data, l); + pm->internalClient[l] = '\0'; + break; + case NewEnabled: + pm->enabled = (unsigned char)atoui(data, l); + break; + case NewDescription: + memcpy(pm->description, data, l); + pm->description[l] = '\0'; + break; + case NewLeaseTime: + pm->leaseTime = atoui(data, l); + break; + default: + break; + } +} + + +/* Parse the PortMappingList XML document for IGD version 2 + */ +void +ParsePortListing(const char * buffer, int bufsize, + struct PortMappingParserData * pdata) +{ + struct xmlparser parser; + + memset(pdata, 0, sizeof(struct PortMappingParserData)); + /* init xmlparser */ + parser.xmlstart = buffer; + parser.xmlsize = bufsize; + parser.data = pdata; + parser.starteltfunc = startelt; + parser.endeltfunc = endelt; + parser.datafunc = data; + parser.attfunc = 0; + parsexml(&parser); +} + +void +FreePortListing(struct PortMappingParserData * pdata) +{ + struct PortMapping * pm; + while((pm = pdata->l_head) != NULL) + { + /* remove from list */ + pdata->l_head = pm->l_next; + free(pm); + } +} + diff --git a/ext/miniupnpc/portlistingparse.h b/ext/miniupnpc/portlistingparse.h new file mode 100644 index 000000000..661ad1faa --- /dev/null +++ b/ext/miniupnpc/portlistingparse.h @@ -0,0 +1,65 @@ +/* $Id: portlistingparse.h,v 1.11 2015/07/21 13:16:55 nanard Exp $ */ +/* MiniUPnP project + * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * (c) 2011-2015 Thomas Bernard + * This software is subject to the conditions detailed + * in the LICENCE file provided within the distribution */ +#ifndef PORTLISTINGPARSE_H_INCLUDED +#define PORTLISTINGPARSE_H_INCLUDED + +#include "miniupnpc_declspec.h" +/* for the definition of UNSIGNED_INTEGER */ +#include "miniupnpctypes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* sample of PortMappingEntry : + + 202.233.2.1 + 2345 + TCP + 2345 + 192.168.1.137 + 1 + dooom + 345 + + */ +typedef enum { PortMappingEltNone, + PortMappingEntry, NewRemoteHost, + NewExternalPort, NewProtocol, + NewInternalPort, NewInternalClient, + NewEnabled, NewDescription, + NewLeaseTime } portMappingElt; + +struct PortMapping { + struct PortMapping * l_next; /* list next element */ + UNSIGNED_INTEGER leaseTime; + unsigned short externalPort; + unsigned short internalPort; + char remoteHost[64]; + char internalClient[64]; + char description[64]; + char protocol[4]; + unsigned char enabled; +}; + +struct PortMappingParserData { + struct PortMapping * l_head; /* list head */ + portMappingElt curelt; +}; + +MINIUPNP_LIBSPEC void +ParsePortListing(const char * buffer, int bufsize, + struct PortMappingParserData * pdata); + +MINIUPNP_LIBSPEC void +FreePortListing(struct PortMappingParserData * pdata); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/ext/miniupnpc/pymoduletest.py b/ext/miniupnpc/pymoduletest.py new file mode 100644 index 000000000..9fddd9c29 --- /dev/null +++ b/ext/miniupnpc/pymoduletest.py @@ -0,0 +1,88 @@ +#! /usr/bin/python +# vim: tabstop=2 shiftwidth=2 expandtab +# MiniUPnP project +# Author : Thomas Bernard +# This Sample code is public domain. +# website : http://miniupnp.tuxfamily.org/ + +# import the python miniupnpc module +import miniupnpc +import sys + +try: + import argparse + parser = argparse.ArgumentParser() + parser.add_argument('-m', '--multicastif') + parser.add_argument('-p', '--minissdpdsocket') + parser.add_argument('-d', '--discoverdelay', type=int, default=200) + parser.add_argument('-z', '--localport', type=int, default=0) + # create the object + u = miniupnpc.UPnP(**vars(parser.parse_args())) +except: + print 'argparse not available' + i = 1 + multicastif = None + minissdpdsocket = None + discoverdelay = 200 + localport = 0 + while i < len(sys.argv): + print sys.argv[i] + if sys.argv[i] == '-m' or sys.argv[i] == '--multicastif': + multicastif = sys.argv[i+1] + elif sys.argv[i] == '-p' or sys.argv[i] == '--minissdpdsocket': + minissdpdsocket = sys.argv[i+1] + elif sys.argv[i] == '-d' or sys.argv[i] == '--discoverdelay': + discoverdelay = int(sys.argv[i+1]) + elif sys.argv[i] == '-z' or sys.argv[i] == '--localport': + localport = int(sys.argv[i+1]) + else: + raise Exception('invalid argument %s' % sys.argv[i]) + i += 2 + # create the object + u = miniupnpc.UPnP(multicastif, minissdpdsocket, discoverdelay, localport) + +print 'inital(default) values :' +print ' discoverdelay', u.discoverdelay +print ' lanaddr', u.lanaddr +print ' multicastif', u.multicastif +print ' minissdpdsocket', u.minissdpdsocket +#u.minissdpdsocket = '../minissdpd/minissdpd.sock' +# discovery process, it usualy takes several seconds (2 seconds or more) +print 'Discovering... delay=%ums' % u.discoverdelay +print u.discover(), 'device(s) detected' +# select an igd +try: + u.selectigd() +except Exception, e: + print 'Exception :', e + sys.exit(1) +# display information about the IGD and the internet connection +print 'local ip address :', u.lanaddr +print 'external ip address :', u.externalipaddress() +print u.statusinfo(), u.connectiontype() +print 'total bytes : sent', u.totalbytesent(), 'received', u.totalbytereceived() +print 'total packets : sent', u.totalpacketsent(), 'received', u.totalpacketreceived() + +#print u.addportmapping(64000, 'TCP', +# '192.168.1.166', 63000, 'port mapping test', '') +#print u.deleteportmapping(64000, 'TCP') + +port = 0 +proto = 'UDP' +# list the redirections : +i = 0 +while True: + p = u.getgenericportmapping(i) + if p==None: + break + print i, p + (port, proto, (ihost,iport), desc, c, d, e) = p + #print port, desc + i = i + 1 + +print u.getspecificportmapping(port, proto) +try: + print u.getportmappingnumberofentries() +except Exception, e: + print 'GetPortMappingNumberOfEntries() is not supported :', e + diff --git a/ext/miniupnpc/receivedata.c b/ext/miniupnpc/receivedata.c new file mode 100644 index 000000000..fb05e09db --- /dev/null +++ b/ext/miniupnpc/receivedata.c @@ -0,0 +1,105 @@ +/* $Id: receivedata.c,v 1.6 2014/11/13 13:51:52 nanard Exp $ */ +/* Project : miniupnp + * Website : http://miniupnp.free.fr/ + * Author : Thomas Bernard + * Copyright (c) 2011-2014 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. */ + +#include +#include +#ifdef _WIN32 +#include +#include +#else /* _WIN32 */ +#include +#if defined(__amigaos__) && !defined(__amigaos4__) +#define socklen_t int +#else /* #if defined(__amigaos__) && !defined(__amigaos4__) */ +#include +#endif /* #else defined(__amigaos__) && !defined(__amigaos4__) */ +#include +#include +#if !defined(__amigaos__) && !defined(__amigaos4__) +#include +#endif /* !defined(__amigaos__) && !defined(__amigaos4__) */ +#include +#define MINIUPNPC_IGNORE_EINTR +#endif /* _WIN32 */ + +#ifdef _WIN32 +#define PRINT_SOCKET_ERROR(x) printf("Socket error: %s, %d\n", x, WSAGetLastError()); +#else +#define PRINT_SOCKET_ERROR(x) perror(x) +#endif + +#include "receivedata.h" + +int +receivedata(int socket, + char * data, int length, + int timeout, unsigned int * scope_id) +{ +#if MINIUPNPC_GET_SRC_ADDR + struct sockaddr_storage src_addr; + socklen_t src_addr_len = sizeof(src_addr); +#endif /* MINIUPNPC_GET_SRC_ADDR */ + int n; +#if !defined(_WIN32) && !defined(__amigaos__) && !defined(__amigaos4__) + /* using poll */ + struct pollfd fds[1]; /* for the poll */ +#ifdef MINIUPNPC_IGNORE_EINTR + do { +#endif /* MINIUPNPC_IGNORE_EINTR */ + fds[0].fd = socket; + fds[0].events = POLLIN; + n = poll(fds, 1, timeout); +#ifdef MINIUPNPC_IGNORE_EINTR + } while(n < 0 && errno == EINTR); +#endif /* MINIUPNPC_IGNORE_EINTR */ + if(n < 0) { + PRINT_SOCKET_ERROR("poll"); + return -1; + } else if(n == 0) { + /* timeout */ + return 0; + } +#else /* !defined(_WIN32) && !defined(__amigaos__) && !defined(__amigaos4__) */ + /* using select under _WIN32 and amigaos */ + fd_set socketSet; + TIMEVAL timeval; + FD_ZERO(&socketSet); + FD_SET(socket, &socketSet); + timeval.tv_sec = timeout / 1000; + timeval.tv_usec = (timeout % 1000) * 1000; + n = select(FD_SETSIZE, &socketSet, NULL, NULL, &timeval); + if(n < 0) { + PRINT_SOCKET_ERROR("select"); + return -1; + } else if(n == 0) { + return 0; + } +#endif /* !defined(_WIN32) && !defined(__amigaos__) && !defined(__amigaos4__) */ +#if MINIUPNPC_GET_SRC_ADDR + memset(&src_addr, 0, sizeof(src_addr)); + n = recvfrom(socket, data, length, 0, + (struct sockaddr *)&src_addr, &src_addr_len); +#else /* MINIUPNPC_GET_SRC_ADDR */ + n = recv(socket, data, length, 0); +#endif /* MINIUPNPC_GET_SRC_ADDR */ + if(n<0) { + PRINT_SOCKET_ERROR("recv"); + } +#if MINIUPNPC_GET_SRC_ADDR + if (src_addr.ss_family == AF_INET6) { + const struct sockaddr_in6 * src_addr6 = (struct sockaddr_in6 *)&src_addr; +#ifdef DEBUG + printf("scope_id=%u\n", src_addr6->sin6_scope_id); +#endif /* DEBUG */ + if(scope_id) + *scope_id = src_addr6->sin6_scope_id; + } +#endif /* MINIUPNPC_GET_SRC_ADDR */ + return n; +} + diff --git a/ext/miniupnpc/receivedata.h b/ext/miniupnpc/receivedata.h new file mode 100644 index 000000000..0520a11d3 --- /dev/null +++ b/ext/miniupnpc/receivedata.h @@ -0,0 +1,19 @@ +/* $Id: receivedata.h,v 1.4 2012/09/27 15:42:10 nanard Exp $ */ +/* Project: miniupnp + * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * Author: Thomas Bernard + * Copyright (c) 2011-2012 Thomas Bernard + * This software is subjects to the conditions detailed + * in the LICENCE file provided within this distribution */ +#ifndef RECEIVEDATA_H_INCLUDED +#define RECEIVEDATA_H_INCLUDED + +/* Reads data from the specified socket. + * Returns the number of bytes read if successful, zero if no bytes were + * read or if we timed out. Returns negative if there was an error. */ +int receivedata(int socket, + char * data, int length, + int timeout, unsigned int * scope_id); + +#endif + diff --git a/ext/miniupnpc/setup.py b/ext/miniupnpc/setup.py new file mode 100644 index 000000000..97e42bf18 --- /dev/null +++ b/ext/miniupnpc/setup.py @@ -0,0 +1,28 @@ +#! /usr/bin/python +# vim: tabstop=8 shiftwidth=8 expandtab +# $Id: setup.py,v 1.12 2015/10/26 17:03:17 nanard Exp $ +# the MiniUPnP Project (c) 2007-2014 Thomas Bernard +# http://miniupnp.tuxfamily.org/ or http://miniupnp.free.fr/ +# +# python script to build the miniupnpc module under unix +# +# replace libminiupnpc.a by libminiupnpc.so for shared library usage +try: + from setuptools import setup, Extension +except ImportError: + from distutils.core import setup, Extension +from distutils import sysconfig +sysconfig.get_config_vars()["OPT"] = '' +sysconfig.get_config_vars()["CFLAGS"] = '' +setup(name="miniupnpc", + version=open('VERSION').read().strip(), + author='Thomas BERNARD', + author_email='miniupnp@free.fr', + license=open('LICENSE').read(), + url='http://miniupnp.free.fr/', + description='miniUPnP client', + ext_modules=[ + Extension(name="miniupnpc", sources=["miniupnpcmodule.c"], + extra_objects=["libminiupnpc.a"]) + ]) + diff --git a/ext/miniupnpc/setupmingw32.py b/ext/miniupnpc/setupmingw32.py new file mode 100644 index 000000000..43dfb465d --- /dev/null +++ b/ext/miniupnpc/setupmingw32.py @@ -0,0 +1,28 @@ +#! /usr/bin/python +# vim: tabstop=8 shiftwidth=8 expandtab +# $Id: setupmingw32.py,v 1.10 2015/10/26 17:03:17 nanard Exp $ +# the MiniUPnP Project (c) 2007-2014 Thomas Bernard +# http://miniupnp.tuxfamily.org/ or http://miniupnp.free.fr/ +# +# python script to build the miniupnpc module under windows (using mingw32) +# +try: + from setuptools import setup, Extension +except ImportError: + from distutils.core import setup, Extension +from distutils import sysconfig +sysconfig.get_config_vars()["OPT"] = '' +sysconfig.get_config_vars()["CFLAGS"] = '' +setup(name="miniupnpc", + version=open('VERSION').read().strip(), + author='Thomas BERNARD', + author_email='miniupnp@free.fr', + license=open('LICENSE').read(), + url='http://miniupnp.free.fr/', + description='miniUPnP client', + ext_modules=[ + Extension(name="miniupnpc", sources=["miniupnpcmodule.c"], + libraries=["ws2_32", "iphlpapi"], + extra_objects=["libminiupnpc.a"]) + ]) + diff --git a/ext/miniupnpc/testdesc/linksys_WAG200G_desc.values b/ext/miniupnpc/testdesc/linksys_WAG200G_desc.values new file mode 100644 index 000000000..cf4222187 --- /dev/null +++ b/ext/miniupnpc/testdesc/linksys_WAG200G_desc.values @@ -0,0 +1,14 @@ +# values for linksys_WAG200G_desc.xml + +CIF: + servicetype = urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1 + controlurl = /upnp/control/WANCommonIFC1 + eventsuburl = /upnp/event/WANCommonIFC1 + scpdurl = /cmnicfg.xml + +first: + servicetype = urn:schemas-upnp-org:service:WANPPPConnection:1 + controlurl = /upnp/control/WANPPPConn1 + eventsuburl = /upnp/event/WANPPPConn1 + scpdurl = /pppcfg.xml + diff --git a/ext/miniupnpc/testdesc/linksys_WAG200G_desc.xml b/ext/miniupnpc/testdesc/linksys_WAG200G_desc.xml new file mode 100644 index 000000000..d428d73b0 --- /dev/null +++ b/ext/miniupnpc/testdesc/linksys_WAG200G_desc.xml @@ -0,0 +1,110 @@ + + + +1 +0 + +http://192.168.1.1:49152 + +urn:schemas-upnp-org:device:InternetGatewayDevice:1 +LINKSYS WAG200G Gateway +LINKSYS +http://www.linksys.com +LINKSYS WAG200G Gateway +Wireless-G ADSL Home Gateway +WAG200G +http://www.linksys.com +123456789 +uuid:8ca2eb37-1dd2-11b2-86f1-001a709b5aa8 +WAG200G + + +urn:schemas-upnp-org:service:Layer3Forwarding:1 +urn:upnp-org:serviceId:L3Forwarding1 +/upnp/control/L3Forwarding1 +/upnp/event/L3Forwarding1 +/l3frwd.xml + + + + +urn:schemas-upnp-org:device:WANDevice:1 +WANDevice +LINKSYS +http://www.linksys.com/ +Residential Gateway +Internet Connection Sharing +1 +http://www.linksys.com/ +0000001 +uuid:8ca2eb36-1dd2-11b2-86f1-001a709b5aa8 +WAG200G + + +urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1 +urn:upnp-org:serviceId:WANCommonIFC1 +/upnp/control/WANCommonIFC1 +/upnp/event/WANCommonIFC1 +/cmnicfg.xml + + + + +urn:schemas-upnp-org:device:WANConnectionDevice:1 +WANConnectionDevice +LINKSYS +http://www.linksys.com/ +Residential Gateway +Internet Connection Sharing +1 +http://www.linksys.com/ +0000001 +uuid:8ca2eb37-1dd2-11b2-86f0-001a709b5aa8 +WAG200G + + +urn:schemas-upnp-org:service:WANEthernetLinkConfig:1 +urn:upnp-org:serviceId:WANEthLinkC1 +/upnp/control/WANEthLinkC1 +/upnp/event/WANEthLinkC1 +/wanelcfg.xml + + +urn:schemas-upnp-org:service:WANPPPConnection:1 +urn:upnp-org:serviceId:WANPPPConn1 +/upnp/control/WANPPPConn1 +/upnp/event/WANPPPConn1 +/pppcfg.xml + + + + + + +urn:schemas-upnp-org:device:LANDevice:1 +LANDevice +LINKSYS +http://www.linksys.com/ +Residential Gateway +Residential Gateway +1 +http://www.linksys.com/ +0000001 +uuid:8ca2eb36-1dd2-11b2-86f0-001a709b5aa +8 +WAG200G + + +urn:schemas-upnp-org:service:LANHostConfigManagement:1 +urn:upnp-org:serviceId:LANHostCfg1 +/upnp/control/LANHostCfg1 +/upnp/event/LANHostCfg1 +/lanhostc.xml + + + + +http://192.168.1.1/index.htm + + + diff --git a/ext/miniupnpc/testdesc/new_LiveBox_desc.values b/ext/miniupnpc/testdesc/new_LiveBox_desc.values new file mode 100644 index 000000000..c55552e58 --- /dev/null +++ b/ext/miniupnpc/testdesc/new_LiveBox_desc.values @@ -0,0 +1,20 @@ +# values for new_LiveBox_desc.xml + +CIF: + servicetype = urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1 + controlurl = /87895a19/upnp/control/WANCommonIFC1 + eventsuburl = /87895a19/upnp/control/WANCommonIFC1 + scpdurl = /87895a19/gateicfgSCPD.xml + +first: + servicetype = urn:schemas-upnp-org:service:WANPPPConnection:2 + controlurl = /87895a19/upnp/control/WANIPConn1 + eventsuburl = /87895a19/upnp/control/WANIPConn1 + scpdurl = /87895a19/gateconnSCPD_PPP.xml + +IPv6FC: + servicetype = urn:schemas-upnp-org:service:WANIPv6FirewallControl:1 + controlurl = /87895a19/upnp/control/WANIPv6FwCtrl1 + eventsuburl = /87895a19/upnp/control/WANIPv6FwCtrl1 + scpdurl = /87895a19/wanipv6fwctrlSCPD.xml + diff --git a/ext/miniupnpc/testdesc/new_LiveBox_desc.xml b/ext/miniupnpc/testdesc/new_LiveBox_desc.xml new file mode 100644 index 000000000..620eb55af --- /dev/null +++ b/ext/miniupnpc/testdesc/new_LiveBox_desc.xml @@ -0,0 +1,90 @@ + + + + 1 + 0 + + + VEN_0129&DEV_0000&SUBSYS_03&REV_250417 + GenericUmPass + NetworkInfrastructure.Gateway + Network.Gateway + urn:schemas-upnp-org:device:InternetGatewayDevice:2 + Orange Livebox + Sagemcom + http://www.sagemcom.com/ + Residential Livebox,(DSL,WAN Ethernet) + uuid:87895a19-50f9-3736-a87f-115c230155f8 + Sagemcom,fr,SG30_sip-fr-4.28.35.1 + 3 + LK14129DP441489 + http://192.168.1.1 + + + + image/png + 16 + 16 + 8 + /87895a19/ligd.png + + + + + urn:schemas-upnp-org:device:WANDevice:2 + WANDevice + Sagemcom + http://www.sagemcom.com/ + WAN Device on Sagemcom,fr,SG30_sip-fr-4.28.35.1 + Residential Livebox,(DSL,WAN Ethernet) + 3 + http://www.sagemcom.com/ + LK14129DP441489 + http://192.168.1.1 + uuid:e2397374-53d8-3fc6-8306-593ba1a34625 + + + + urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1 + urn:upnp-org:serviceId:WANCommonIFC1 + /87895a19/upnp/control/WANCommonIFC1 + /87895a19/upnp/control/WANCommonIFC1 + /87895a19/gateicfgSCPD.xml + + + + + urn:schemas-upnp-org:device:WANConnectionDevice:2 + WANConnectionDevice + Sagemcom + http://www.sagemcom.com/ + WanConnectionDevice on Sagemcom,fr,SG30_sip-fr-4.28.35.1 + Residential Livebox,(DSL,WAN Ethernet) + 3 + http://www.sagemcom.com/ + LK14129DP441489 + http://192.168.1.1 + uuid:44598a08-288e-32c9-8a4d-d3c008ede331 + + + + urn:schemas-upnp-org:service:WANPPPConnection:2 + urn:upnp-org:serviceId:WANIPConn1 + /87895a19/upnp/control/WANIPConn1 + /87895a19/upnp/control/WANIPConn1 + /87895a19/gateconnSCPD_PPP.xml + + + urn:schemas-upnp-org:service:WANIPv6FirewallControl:1 + urn:upnp-org:serviceId:WANIPv6FwCtrl1 + /87895a19/upnp/control/WANIPv6FwCtrl1 + /87895a19/upnp/control/WANIPv6FwCtrl1 + /87895a19/wanipv6fwctrlSCPD.xml + + + + + + + + \ No newline at end of file diff --git a/ext/miniupnpc/testigddescparse.c b/ext/miniupnpc/testigddescparse.c new file mode 100644 index 000000000..c1907fd05 --- /dev/null +++ b/ext/miniupnpc/testigddescparse.c @@ -0,0 +1,187 @@ +/* $Id: testigddescparse.c,v 1.10 2015/08/06 09:55:24 nanard Exp $ */ +/* Project : miniupnp + * http://miniupnp.free.fr/ + * Author : Thomas Bernard + * Copyright (c) 2008-2015 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. + * */ +#include +#include +#include +#include "igd_desc_parse.h" +#include "minixml.h" +#include "miniupnpc.h" + +/* count number of differences */ +int compare_service(struct IGDdatas_service * s, FILE * f) +{ + int n = 0; + char line[1024]; + + while(fgets(line, sizeof(line), f)) { + char * value; + char * equal; + char * name; + char * parsedvalue; + int l; + l = strlen(line); + while((l > 0) && ((line[l-1] == '\r') || (line[l-1] == '\n') || (line[l-1] == ' '))) + line[--l] = '\0'; + if(l == 0) + break; /* end on blank line */ + if(line[0] == '#') + continue; /* skip comments */ + equal = strchr(line, '='); + if(equal == NULL) { + fprintf(stderr, "Warning, line does not contain '=' : %s\n", line); + continue; + } + *equal = '\0'; + name = line; + while(*name == ' ' || *name == '\t') + name++; + l = strlen(name); + while((l > 0) && (name[l-1] == ' ' || name[l-1] == '\t')) + name[--l] = '\0'; + value = equal + 1; + while(*value == ' ' || *value == '\t') + value++; + if(strcmp(name, "controlurl") == 0) + parsedvalue = s->controlurl; + else if(strcmp(name, "eventsuburl") == 0) + parsedvalue = s->eventsuburl; + else if(strcmp(name, "scpdurl") == 0) + parsedvalue = s->scpdurl; + else if(strcmp(name, "servicetype") == 0) + parsedvalue = s->servicetype; + else { + fprintf(stderr, "unknown field '%s'\n", name); + continue; + } + if(0 != strcmp(parsedvalue, value)) { + fprintf(stderr, "difference : '%s' != '%s'\n", parsedvalue, value); + n++; + } + } + return n; +} + +int compare_igd(struct IGDdatas * p, FILE * f) +{ + int n = 0; + char line[1024]; + struct IGDdatas_service * s; + + while(fgets(line, sizeof(line), f)) { + char * colon; + int l = (int)strlen(line); + while((l > 0) && (line[l-1] == '\r' || (line[l-1] == '\n'))) + line[--l] = '\0'; + if(l == 0 || line[0] == '#') + continue; /* skip blank lines and comments */ + colon = strchr(line, ':'); + if(colon == NULL) { + fprintf(stderr, "Warning, no ':' : %s\n", line); + continue; + } + s = NULL; + *colon = '\0'; + if(strcmp(line, "CIF") == 0) + s = &p->CIF; + else if(strcmp(line, "first") == 0) + s = &p->first; + else if(strcmp(line, "second") == 0) + s = &p->second; + else if(strcmp(line, "IPv6FC") == 0) + s = &p->IPv6FC; + else { + s = NULL; + fprintf(stderr, "*** unknown service '%s' ***\n", line); + n++; + continue; + } + n += compare_service(s, f); + } + if(n > 0) + fprintf(stderr, "*** %d difference%s ***\n", n, (n > 1) ? "s" : ""); + return n; +} + +int test_igd_desc_parse(char * buffer, int len, FILE * f) +{ + int n; + struct IGDdatas igd; + struct xmlparser parser; + struct UPNPUrls urls; + + memset(&igd, 0, sizeof(struct IGDdatas)); + memset(&parser, 0, sizeof(struct xmlparser)); + parser.xmlstart = buffer; + parser.xmlsize = len; + parser.data = &igd; + parser.starteltfunc = IGDstartelt; + parser.endeltfunc = IGDendelt; + parser.datafunc = IGDdata; + parsexml(&parser); +#ifdef DEBUG + printIGD(&igd); +#endif /* DEBUG */ + GetUPNPUrls(&urls, &igd, "http://fake/desc/url/file.xml", 0); + printf("ipcondescURL='%s'\n", urls.ipcondescURL); + printf("controlURL='%s'\n", urls.controlURL); + printf("controlURL_CIF='%s'\n", urls.controlURL_CIF); + n = f ? compare_igd(&igd, f) : 0; + FreeUPNPUrls(&urls); + return n; +} + +int main(int argc, char * * argv) +{ + FILE * f; + char * buffer; + int len; + int r; + if(argc<2) { + fprintf(stderr, "Usage: %s file.xml [file.values]\n", argv[0]); + return 1; + } + f = fopen(argv[1], "r"); + if(!f) { + fprintf(stderr, "Cannot open %s for reading.\n", argv[1]); + return 1; + } + fseek(f, 0, SEEK_END); + len = ftell(f); + fseek(f, 0, SEEK_SET); + buffer = malloc(len); + if(!buffer) { + fprintf(stderr, "Memory allocation error.\n"); + fclose(f); + return 1; + } + r = (int)fread(buffer, 1, len, f); + if(r != len) { + fprintf(stderr, "Failed to read file %s. %d out of %d bytes.\n", + argv[1], r, len); + fclose(f); + free(buffer); + return 1; + } + fclose(f); + f = NULL; + if(argc > 2) { + f = fopen(argv[2], "r"); + if(!f) { + fprintf(stderr, "Cannot open %s for reading.\n", argv[2]); + free(buffer); + return 1; + } + } + r = test_igd_desc_parse(buffer, len, f); + free(buffer); + if(f) + fclose(f); + return r; +} + diff --git a/ext/miniupnpc/testminiwget.c b/ext/miniupnpc/testminiwget.c new file mode 100644 index 000000000..8ae90320e --- /dev/null +++ b/ext/miniupnpc/testminiwget.c @@ -0,0 +1,53 @@ +/* $Id: testminiwget.c,v 1.4 2012/06/23 22:35:59 nanard Exp $ */ +/* Project : miniupnp + * Author : Thomas Bernard + * Copyright (c) 2005-2012 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. + * */ +#include +#include +#include "miniwget.h" + +/** + * This program uses the miniwget / miniwget_getaddr function + * from miniwget.c in order to retreive a web ressource using + * a GET HTTP method, and store it in a file. + */ +int main(int argc, char * * argv) +{ + void * data; + int size, writtensize; + FILE *f; + char addr[64]; + + if(argc < 3) { + fprintf(stderr, "Usage:\t%s url file\n", argv[0]); + fprintf(stderr, "Example:\t%s http://www.google.com/ out.html\n", argv[0]); + return 1; + } + data = miniwget_getaddr(argv[1], &size, addr, sizeof(addr), 0); + if(!data) { + fprintf(stderr, "Error fetching %s\n", argv[1]); + return 1; + } + printf("local address : %s\n", addr); + printf("got %d bytes\n", size); + f = fopen(argv[2], "wb"); + if(!f) { + fprintf(stderr, "Cannot open file %s for writing\n", argv[2]); + free(data); + return 1; + } + writtensize = fwrite(data, 1, size, f); + if(writtensize != size) { + fprintf(stderr, "Could only write %d bytes out of %d to %s\n", + writtensize, size, argv[2]); + } else { + printf("%d bytes written to %s\n", writtensize, argv[2]); + } + fclose(f); + free(data); + return 0; +} + diff --git a/ext/miniupnpc/testminiwget.sh b/ext/miniupnpc/testminiwget.sh new file mode 100755 index 000000000..690b4056f --- /dev/null +++ b/ext/miniupnpc/testminiwget.sh @@ -0,0 +1,96 @@ +#!/bin/sh +# $Id: testminiwget.sh,v 1.13 2015/09/03 17:57:44 nanard Exp $ +# project miniupnp : http://miniupnp.free.fr/ +# (c) 2011-2015 Thomas Bernard +# +# test program for miniwget.c +# is usually invoked by "make check" +# +# This test program : +# 1 - launches a local HTTP server (minihttptestserver) +# 2 - uses testminiwget to retreive data from this server +# 3 - compares served and received data +# 4 - kills the local HTTP server and exits +# +# The script was tested and works with ksh, bash +# it should now also run with dash + +TMPD=`mktemp -d -t miniwgetXXXXXXXXXX` +HTTPSERVEROUT="${TMPD}/httpserverout" +EXPECTEDFILE="${TMPD}/expectedfile" +DOWNLOADEDFILE="${TMPD}/downloadedfile" +PORT= +RET=0 + +case "$HAVE_IPV6" in + n|no|0) + ADDR=localhost + SERVERARGS="" + ;; + *) + ADDR="[::1]" + SERVERARGS="-6" + ;; + +esac + +#make minihttptestserver +#make testminiwget + +# launching the test HTTP server +./minihttptestserver $SERVERARGS -e $EXPECTEDFILE > $HTTPSERVEROUT & +SERVERPID=$! +while [ -z "$PORT" ]; do + sleep 1 + PORT=`cat $HTTPSERVEROUT | sed 's/Listening on port \([0-9]*\)/\1/' ` +done +echo "Test HTTP server is listening on $PORT" + +URL1="http://$ADDR:$PORT/index.html" +URL2="http://$ADDR:$PORT/chunked" +URL3="http://$ADDR:$PORT/addcrap" + +echo "standard test ..." +./testminiwget $URL1 "${DOWNLOADEDFILE}.1" +if cmp $EXPECTEDFILE "${DOWNLOADEDFILE}.1" ; then + echo "ok" +else + echo "standard test FAILED" + RET=1 +fi + +echo "chunked transfert encoding test ..." +./testminiwget $URL2 "${DOWNLOADEDFILE}.2" +if cmp $EXPECTEDFILE "${DOWNLOADEDFILE}.2" ; then + echo "ok" +else + echo "chunked transfert encoding test FAILED" + RET=1 +fi + +echo "response too long test ..." +./testminiwget $URL3 "${DOWNLOADEDFILE}.3" +if cmp $EXPECTEDFILE "${DOWNLOADEDFILE}.3" ; then + echo "ok" +else + echo "response too long test FAILED" + RET=1 +fi + +# kill the test HTTP server +kill $SERVERPID +wait $SERVERPID + +# remove temporary files (for success cases) +if [ $RET -eq 0 ]; then + rm -f "${DOWNLOADEDFILE}.1" + rm -f "${DOWNLOADEDFILE}.2" + rm -f "${DOWNLOADEDFILE}.3" + rm -f $EXPECTEDFILE $HTTPSERVEROUT + rmdir ${TMPD} +else + echo "at least one of the test FAILED" + echo "directory ${TMPD} is left intact" +fi +exit $RET + diff --git a/ext/miniupnpc/testminixml.c b/ext/miniupnpc/testminixml.c new file mode 100644 index 000000000..57c4a85eb --- /dev/null +++ b/ext/miniupnpc/testminixml.c @@ -0,0 +1,89 @@ +/* $Id: testminixml.c,v 1.10 2014/11/17 17:19:13 nanard Exp $ + * MiniUPnP project + * Website : http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * Author : Thomas Bernard. + * Copyright (c) 2005-2014 Thomas Bernard + * + * testminixml.c + * test program for the "minixml" functions. + */ +#include +#include +#include +#include "minixml.h" +#include "igd_desc_parse.h" + +/* ---------------------------------------------------------------------- */ +void printeltname1(void * d, const char * name, int l) +{ + int i; + (void)d; + printf("element "); + for(i=0;i +#include +#include "portlistingparse.h" + +struct port_mapping { + unsigned int leasetime; + unsigned short externalport; + unsigned short internalport; + const char * remotehost; + const char * client; + const char * proto; + const char * desc; + unsigned char enabled; +}; + +/* return the number of differences */ +int test(const char * portListingXml, int portListingXmlLen, + const struct port_mapping * ref, int count) +{ + int i; + int r = 0; + struct PortMappingParserData data; + struct PortMapping * pm; + + memset(&data, 0, sizeof(data)); + ParsePortListing(portListingXml, portListingXmlLen, &data); + for(i = 0, pm = data.l_head; + (pm != NULL) && (i < count); + i++, pm = pm->l_next) { + printf("%2d %s %5hu->%s:%-5hu '%s' '%s' %u\n", + i, pm->protocol, pm->externalPort, pm->internalClient, + pm->internalPort, + pm->description, pm->remoteHost, + (unsigned)pm->leaseTime); + if(0 != strcmp(pm->protocol, ref[i].proto)) { + printf("protocol : '%s' != '%s'\n", pm->protocol, ref[i].proto); + r++; + } + if(pm->externalPort != ref[i].externalport) { + printf("externalPort : %hu != %hu\n", + pm->externalPort, ref[i].externalport); + r++; + } + if(0 != strcmp(pm->internalClient, ref[i].client)) { + printf("client : '%s' != '%s'\n", + pm->internalClient, ref[i].client); + r++; + } + if(pm->internalPort != ref[i].internalport) { + printf("internalPort : %hu != %hu\n", + pm->internalPort, ref[i].internalport); + r++; + } + if(0 != strcmp(pm->description, ref[i].desc)) { + printf("description : '%s' != '%s'\n", + pm->description, ref[i].desc); + r++; + } + if(0 != strcmp(pm->remoteHost, ref[i].remotehost)) { + printf("remoteHost : '%s' != '%s'\n", + pm->remoteHost, ref[i].remotehost); + r++; + } + if((unsigned)pm->leaseTime != ref[i].leasetime) { + printf("leaseTime : %u != %u\n", + (unsigned)pm->leaseTime, ref[i].leasetime); + r++; + } + if(pm->enabled != ref[i].enabled) { + printf("enabled : %d != %d\n", + (int)pm->enabled, (int)ref[i].enabled); + r++; + } + } + if((i != count) || (pm != NULL)) { + printf("count mismatch : i=%d count=%d pm=%p\n", i, count, pm); + r++; + } + FreePortListing(&data); + return r; +} + +const char test_document[] = +"\n" +"\n" +" \n" +" \n" +" 5002\n" +" UDP\n" +" 4001\n" +" 192.168.1.123\n" +" 1\n" +" xxx\n" +" 0\n" +" \n" +" \n" +" 202.233.2.1\n" +" 2345\n" +" TCP\n" +" 2349\n" +" 192.168.1.137\n" +" 1\n" +" dooom\n" +" 346\n" +" \n" +" \n" +" 134.231.2.11\n" +" 12345\n" +" TCP\n" +" 12345\n" +" 192.168.1.137\n" +" 1\n" +" dooom A\n" +" 347\n" +" \n" +""; + +#define PORT_MAPPINGS_COUNT 3 +const struct port_mapping port_mappings[PORT_MAPPINGS_COUNT] = { +{347, 12345, 12345, "134.231.2.11", "192.168.1.137", "TCP", "dooom A", 1}, +{346, 2345, 2349, "202.233.2.1", "192.168.1.137", "TCP", "dooom", 1}, +{0, 5002, 4001, "", "192.168.1.123", "UDP", "xxx", 1} +}; + +/* --- main --- */ +int main(void) +{ + int r; + r = test(test_document, sizeof(test_document) - 1, + port_mappings, PORT_MAPPINGS_COUNT); + if(r == 0) { + printf("test of portlistingparse OK\n"); + return 0; + } else { + printf("test FAILED (%d differences counted)\n", r); + return 1; + } +} + diff --git a/ext/miniupnpc/testreplyparse/DeletePortMapping.namevalue b/ext/miniupnpc/testreplyparse/DeletePortMapping.namevalue new file mode 100644 index 000000000..48ca0cccb --- /dev/null +++ b/ext/miniupnpc/testreplyparse/DeletePortMapping.namevalue @@ -0,0 +1,3 @@ +NewRemoteHost= +NewExternalPort=123 +NewProtocol=TCP diff --git a/ext/miniupnpc/testreplyparse/DeletePortMapping.xml b/ext/miniupnpc/testreplyparse/DeletePortMapping.xml new file mode 100644 index 000000000..a955c53fc --- /dev/null +++ b/ext/miniupnpc/testreplyparse/DeletePortMapping.xml @@ -0,0 +1,6 @@ + +123 +TCP + + + diff --git a/ext/miniupnpc/testreplyparse/GetExternalIPAddress.namevalue b/ext/miniupnpc/testreplyparse/GetExternalIPAddress.namevalue new file mode 100644 index 000000000..5aa75f882 --- /dev/null +++ b/ext/miniupnpc/testreplyparse/GetExternalIPAddress.namevalue @@ -0,0 +1,2 @@ +NewExternalIPAddress=1.2.3.4 + diff --git a/ext/miniupnpc/testreplyparse/GetExternalIPAddress.xml b/ext/miniupnpc/testreplyparse/GetExternalIPAddress.xml new file mode 100644 index 000000000..db7ec1f9c --- /dev/null +++ b/ext/miniupnpc/testreplyparse/GetExternalIPAddress.xml @@ -0,0 +1,2 @@ +1.2.3.4 + diff --git a/ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryReq.namevalue b/ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryReq.namevalue new file mode 100644 index 000000000..26b169c35 --- /dev/null +++ b/ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryReq.namevalue @@ -0,0 +1,3 @@ +NewProtocol=UDP +NewExternalPort=12345 +NewRemoteHost= diff --git a/ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryReq.xml b/ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryReq.xml new file mode 100644 index 000000000..bbb540eac --- /dev/null +++ b/ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryReq.xml @@ -0,0 +1,3 @@ + +12345UDP + diff --git a/ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryResp.namevalue b/ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryResp.namevalue new file mode 100644 index 000000000..2189789b4 --- /dev/null +++ b/ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryResp.namevalue @@ -0,0 +1,5 @@ +NewInternalPort=12345 +NewInternalClient=192.168.10.110 +NewEnabled=1 +NewPortMappingDescription=libminiupnpc +NewLeaseDuration=0 diff --git a/ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryResp.xml b/ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryResp.xml new file mode 100644 index 000000000..77e8d9c7c --- /dev/null +++ b/ext/miniupnpc/testreplyparse/GetSpecificPortMappingEntryResp.xml @@ -0,0 +1,2 @@ +12345192.168.10.1101libminiupnpc0 + diff --git a/ext/miniupnpc/testreplyparse/SetDefaultConnectionService.namevalue b/ext/miniupnpc/testreplyparse/SetDefaultConnectionService.namevalue new file mode 100644 index 000000000..f78c7e2ae --- /dev/null +++ b/ext/miniupnpc/testreplyparse/SetDefaultConnectionService.namevalue @@ -0,0 +1 @@ +NewDefaultConnectionService=uuid:c6c05a33-f704-48df-9910-e099b3471d81:WANConnectionDevice:1,INVALID_SERVICE_ID diff --git a/ext/miniupnpc/testreplyparse/SetDefaultConnectionService.xml b/ext/miniupnpc/testreplyparse/SetDefaultConnectionService.xml new file mode 100644 index 000000000..ac04c07a9 --- /dev/null +++ b/ext/miniupnpc/testreplyparse/SetDefaultConnectionService.xml @@ -0,0 +1 @@ +uuid:c6c05a33-f704-48df-9910-e099b3471d81:WANConnectionDevice:1,INVALID_SERVICE_ID diff --git a/ext/miniupnpc/testreplyparse/readme.txt b/ext/miniupnpc/testreplyparse/readme.txt new file mode 100644 index 000000000..3eb1f015f --- /dev/null +++ b/ext/miniupnpc/testreplyparse/readme.txt @@ -0,0 +1,7 @@ +This directory contains files used for validation of upnpreplyparse.c code. + +Each .xml file to parse should give the results which are in the .namevalue +file. + +A .namevalue file contain name=value lines. + diff --git a/ext/miniupnpc/testupnpigd.py b/ext/miniupnpc/testupnpigd.py new file mode 100755 index 000000000..6d167a4ce --- /dev/null +++ b/ext/miniupnpc/testupnpigd.py @@ -0,0 +1,84 @@ +#! /usr/bin/python +# $Id: testupnpigd.py,v 1.4 2008/10/11 10:27:20 nanard Exp $ +# MiniUPnP project +# Author : Thomas Bernard +# This Sample code is public domain. +# website : http://miniupnp.tuxfamily.org/ + +# import the python miniupnpc module +import miniupnpc +import socket +import BaseHTTPServer + +# function definition +def list_redirections(): + i = 0 + while True: + p = u.getgenericportmapping(i) + if p==None: + break + print i, p + i = i + 1 + +#define the handler class for HTTP connections +class handler_class(BaseHTTPServer.BaseHTTPRequestHandler): + def do_GET(self): + self.send_response(200) + self.end_headers() + self.wfile.write("OK MON GARS") + +# create the object +u = miniupnpc.UPnP() +#print 'inital(default) values :' +#print ' discoverdelay', u.discoverdelay +#print ' lanaddr', u.lanaddr +#print ' multicastif', u.multicastif +#print ' minissdpdsocket', u.minissdpdsocket +u.discoverdelay = 200; + +try: + print 'Discovering... delay=%ums' % u.discoverdelay + ndevices = u.discover() + print ndevices, 'device(s) detected' + + # select an igd + u.selectigd() + # display information about the IGD and the internet connection + print 'local ip address :', u.lanaddr + externalipaddress = u.externalipaddress() + print 'external ip address :', externalipaddress + print u.statusinfo(), u.connectiontype() + + #instanciate a HTTPd object. The port is assigned by the system. + httpd = BaseHTTPServer.HTTPServer((u.lanaddr, 0), handler_class) + eport = httpd.server_port + + # find a free port for the redirection + r = u.getspecificportmapping(eport, 'TCP') + while r != None and eport < 65536: + eport = eport + 1 + r = u.getspecificportmapping(eport, 'TCP') + + print 'trying to redirect %s port %u TCP => %s port %u TCP' % (externalipaddress, eport, u.lanaddr, httpd.server_port) + + b = u.addportmapping(eport, 'TCP', u.lanaddr, httpd.server_port, + 'UPnP IGD Tester port %u' % eport, '') + if b: + print 'Success. Now waiting for some HTTP request on http://%s:%u' % (externalipaddress ,eport) + try: + httpd.handle_request() + httpd.server_close() + except KeyboardInterrupt, details: + print "CTRL-C exception!", details + b = u.deleteportmapping(eport, 'TCP') + if b: + print 'Successfully deleted port mapping' + else: + print 'Failed to remove port mapping' + else: + print 'Failed' + + httpd.server_close() + +except Exception, e: + print 'Exception :', e diff --git a/ext/miniupnpc/testupnpreplyparse.c b/ext/miniupnpc/testupnpreplyparse.c new file mode 100644 index 000000000..7ba7131ea --- /dev/null +++ b/ext/miniupnpc/testupnpreplyparse.c @@ -0,0 +1,96 @@ +/* $Id: testupnpreplyparse.c,v 1.4 2014/01/27 11:45:19 nanard Exp $ */ +/* MiniUPnP project + * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * (c) 2006-2014 Thomas Bernard + * This software is subject to the conditions detailed + * in the LICENCE file provided within the distribution */ +#include +#include +#include +#include "upnpreplyparse.h" + +int +test_parsing(const char * buf, int len, FILE * f) +{ + char line[1024]; + struct NameValueParserData pdata; + int ok = 1; + ParseNameValue(buf, len, &pdata); + /* check result */ + if(f != NULL) + { + while(fgets(line, sizeof(line), f)) + { + char * value; + char * equal; + char * parsedvalue; + int l; + l = strlen(line); + while((l > 0) && ((line[l-1] == '\r') || (line[l-1] == '\n'))) + line[--l] = '\0'; + /* skip empty lines */ + if(l == 0) + continue; + equal = strchr(line, '='); + if(equal == NULL) + { + fprintf(stderr, "Warning, line does not contain '=' : %s\n", line); + continue; + } + *equal = '\0'; + value = equal + 1; + parsedvalue = GetValueFromNameValueList(&pdata, line); + if((parsedvalue == NULL) || (strcmp(parsedvalue, value) != 0)) + { + fprintf(stderr, "Element <%s> : expecting value '%s', got '%s'\n", + line, value, parsedvalue ? parsedvalue : ""); + ok = 0; + } + } + } + ClearNameValueList(&pdata); + return ok; +} + +int main(int argc, char * * argv) +{ + FILE * f; + char buffer[4096]; + int l; + int ok; + + if(argc<2) + { + fprintf(stderr, "Usage: %s file.xml [file.namevalues]\n", argv[0]); + return 1; + } + f = fopen(argv[1], "r"); + if(!f) + { + fprintf(stderr, "Error : can not open file %s\n", argv[1]); + return 2; + } + l = fread(buffer, 1, sizeof(buffer)-1, f); + fclose(f); + f = NULL; + buffer[l] = '\0'; + if(argc > 2) + { + f = fopen(argv[2], "r"); + if(!f) + { + fprintf(stderr, "Error : can not open file %s\n", argv[2]); + return 2; + } + } +#ifdef DEBUG + DisplayNameValueList(buffer, l); +#endif + ok = test_parsing(buffer, l, f); + if(f) + { + fclose(f); + } + return ok ? 0 : 3; +} + diff --git a/ext/miniupnpc/testupnpreplyparse.sh b/ext/miniupnpc/testupnpreplyparse.sh new file mode 100755 index 000000000..992930b7b --- /dev/null +++ b/ext/miniupnpc/testupnpreplyparse.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +for f in testreplyparse/*.xml ; do + bf="`dirname $f`/`basename $f .xml`" + if ./testupnpreplyparse $f $bf.namevalue ; then + echo "$f : passed" + else + echo "$f : FAILED" + exit 1 + fi +done + +exit 0 + diff --git a/ext/miniupnpc/updateminiupnpcstrings.sh b/ext/miniupnpc/updateminiupnpcstrings.sh new file mode 100755 index 000000000..dde4354a8 --- /dev/null +++ b/ext/miniupnpc/updateminiupnpcstrings.sh @@ -0,0 +1,53 @@ +#! /bin/sh +# $Id: updateminiupnpcstrings.sh,v 1.7 2011/01/04 11:41:53 nanard Exp $ +# project miniupnp : http://miniupnp.free.fr/ +# (c) 2009 Thomas Bernard + +FILE=miniupnpcstrings.h +TMPFILE=miniupnpcstrings.h.tmp +TEMPLATE_FILE=${FILE}.in + +# detecting the OS name and version +OS_NAME=`uname -s` +OS_VERSION=`uname -r` +if [ -f /etc/debian_version ]; then + OS_NAME=Debian + OS_VERSION=`cat /etc/debian_version` +fi +# use lsb_release (Linux Standard Base) when available +LSB_RELEASE=`which lsb_release` +if [ 0 -eq $? -a -x "${LSB_RELEASE}" ]; then + OS_NAME=`${LSB_RELEASE} -i -s` + OS_VERSION=`${LSB_RELEASE} -r -s` + case $OS_NAME in + Debian) + #OS_VERSION=`${LSB_RELEASE} -c -s` + ;; + Ubuntu) + #OS_VERSION=`${LSB_RELEASE} -c -s` + ;; + esac +fi + +# on AmigaOS 3, uname -r returns "unknown", so we use uname -v +if [ "$OS_NAME" = "AmigaOS" ]; then + if [ "$OS_VERSION" = "unknown" ]; then + OS_VERSION=`uname -v` + fi +fi + +echo "Detected OS [$OS_NAME] version [$OS_VERSION]" +MINIUPNPC_VERSION=`cat VERSION` +echo "MiniUPnPc version [${MINIUPNPC_VERSION}]" + +EXPR="s|OS_STRING \".*\"|OS_STRING \"${OS_NAME}/${OS_VERSION}\"|" +#echo $EXPR +test -f ${FILE}.in +echo "setting OS_STRING macro value to ${OS_NAME}/${OS_VERSION} in $FILE." +sed -e "$EXPR" < $TEMPLATE_FILE > $TMPFILE + +EXPR="s|MINIUPNPC_VERSION_STRING \".*\"|MINIUPNPC_VERSION_STRING \"${MINIUPNPC_VERSION}\"|" +echo "setting MINIUPNPC_VERSION_STRING macro value to ${MINIUPNPC_VERSION} in $FILE." +sed -e "$EXPR" < $TMPFILE > $FILE +rm $TMPFILE + diff --git a/ext/miniupnpc/upnpc.c b/ext/miniupnpc/upnpc.c new file mode 100644 index 000000000..8bc552efe --- /dev/null +++ b/ext/miniupnpc/upnpc.c @@ -0,0 +1,833 @@ +/* $Id: upnpc.c,v 1.112 2015/10/08 16:15:48 nanard Exp $ */ +/* Project : miniupnp + * Author : Thomas Bernard + * Copyright (c) 2005-2015 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided in this distribution. */ + +#include +#include +#include +#include +#ifdef _WIN32 +#include +#define snprintf _snprintf +#else +/* for IPPROTO_TCP / IPPROTO_UDP */ +#include +#endif +#include +#include "miniwget.h" +#include "miniupnpc.h" +#include "upnpcommands.h" +#include "upnperrors.h" +#include "miniupnpcstrings.h" + +/* protofix() checks if protocol is "UDP" or "TCP" + * returns NULL if not */ +const char * protofix(const char * proto) +{ + static const char proto_tcp[4] = { 'T', 'C', 'P', 0}; + static const char proto_udp[4] = { 'U', 'D', 'P', 0}; + int i, b; + for(i=0, b=1; i<4; i++) + b = b && ( (proto[i] == proto_tcp[i]) + || (proto[i] == (proto_tcp[i] | 32)) ); + if(b) + return proto_tcp; + for(i=0, b=1; i<4; i++) + b = b && ( (proto[i] == proto_udp[i]) + || (proto[i] == (proto_udp[i] | 32)) ); + if(b) + return proto_udp; + return 0; +} + +/* is_int() checks if parameter is an integer or not + * 1 for integer + * 0 for not an integer */ +int is_int(char const* s) +{ + if(s == NULL) + return 0; + while(*s) { + /* #define isdigit(c) ((c) >= '0' && (c) <= '9') */ + if(!isdigit(*s)) + return 0; + s++; + } + return 1; +} + +static void DisplayInfos(struct UPNPUrls * urls, + struct IGDdatas * data) +{ + char externalIPAddress[40]; + char connectionType[64]; + char status[64]; + char lastconnerr[64]; + unsigned int uptime; + unsigned int brUp, brDown; + time_t timenow, timestarted; + int r; + if(UPNP_GetConnectionTypeInfo(urls->controlURL, + data->first.servicetype, + connectionType) != UPNPCOMMAND_SUCCESS) + printf("GetConnectionTypeInfo failed.\n"); + else + printf("Connection Type : %s\n", connectionType); + if(UPNP_GetStatusInfo(urls->controlURL, data->first.servicetype, + status, &uptime, lastconnerr) != UPNPCOMMAND_SUCCESS) + printf("GetStatusInfo failed.\n"); + else + printf("Status : %s, uptime=%us, LastConnectionError : %s\n", + status, uptime, lastconnerr); + timenow = time(NULL); + timestarted = timenow - uptime; + printf(" Time started : %s", ctime(×tarted)); + if(UPNP_GetLinkLayerMaxBitRates(urls->controlURL_CIF, data->CIF.servicetype, + &brDown, &brUp) != UPNPCOMMAND_SUCCESS) { + printf("GetLinkLayerMaxBitRates failed.\n"); + } else { + printf("MaxBitRateDown : %u bps", brDown); + if(brDown >= 1000000) { + printf(" (%u.%u Mbps)", brDown / 1000000, (brDown / 100000) % 10); + } else if(brDown >= 1000) { + printf(" (%u Kbps)", brDown / 1000); + } + printf(" MaxBitRateUp %u bps", brUp); + if(brUp >= 1000000) { + printf(" (%u.%u Mbps)", brUp / 1000000, (brUp / 100000) % 10); + } else if(brUp >= 1000) { + printf(" (%u Kbps)", brUp / 1000); + } + printf("\n"); + } + r = UPNP_GetExternalIPAddress(urls->controlURL, + data->first.servicetype, + externalIPAddress); + if(r != UPNPCOMMAND_SUCCESS) { + printf("GetExternalIPAddress failed. (errorcode=%d)\n", r); + } else { + printf("ExternalIPAddress = %s\n", externalIPAddress); + } +} + +static void GetConnectionStatus(struct UPNPUrls * urls, + struct IGDdatas * data) +{ + unsigned int bytessent, bytesreceived, packetsreceived, packetssent; + DisplayInfos(urls, data); + bytessent = UPNP_GetTotalBytesSent(urls->controlURL_CIF, data->CIF.servicetype); + bytesreceived = UPNP_GetTotalBytesReceived(urls->controlURL_CIF, data->CIF.servicetype); + packetssent = UPNP_GetTotalPacketsSent(urls->controlURL_CIF, data->CIF.servicetype); + packetsreceived = UPNP_GetTotalPacketsReceived(urls->controlURL_CIF, data->CIF.servicetype); + printf("Bytes: Sent: %8u\tRecv: %8u\n", bytessent, bytesreceived); + printf("Packets: Sent: %8u\tRecv: %8u\n", packetssent, packetsreceived); +} + +static void ListRedirections(struct UPNPUrls * urls, + struct IGDdatas * data) +{ + int r; + int i = 0; + char index[6]; + char intClient[40]; + char intPort[6]; + char extPort[6]; + char protocol[4]; + char desc[80]; + char enabled[6]; + char rHost[64]; + char duration[16]; + /*unsigned int num=0; + UPNP_GetPortMappingNumberOfEntries(urls->controlURL, data->servicetype, &num); + printf("PortMappingNumberOfEntries : %u\n", num);*/ + printf(" i protocol exPort->inAddr:inPort description remoteHost leaseTime\n"); + do { + snprintf(index, 6, "%d", i); + rHost[0] = '\0'; enabled[0] = '\0'; + duration[0] = '\0'; desc[0] = '\0'; + extPort[0] = '\0'; intPort[0] = '\0'; intClient[0] = '\0'; + r = UPNP_GetGenericPortMappingEntry(urls->controlURL, + data->first.servicetype, + index, + extPort, intClient, intPort, + protocol, desc, enabled, + rHost, duration); + if(r==0) + /* + printf("%02d - %s %s->%s:%s\tenabled=%s leaseDuration=%s\n" + " desc='%s' rHost='%s'\n", + i, protocol, extPort, intClient, intPort, + enabled, duration, + desc, rHost); + */ + printf("%2d %s %5s->%s:%-5s '%s' '%s' %s\n", + i, protocol, extPort, intClient, intPort, + desc, rHost, duration); + else + printf("GetGenericPortMappingEntry() returned %d (%s)\n", + r, strupnperror(r)); + i++; + } while(r==0); +} + +static void NewListRedirections(struct UPNPUrls * urls, + struct IGDdatas * data) +{ + int r; + int i = 0; + struct PortMappingParserData pdata; + struct PortMapping * pm; + + memset(&pdata, 0, sizeof(struct PortMappingParserData)); + r = UPNP_GetListOfPortMappings(urls->controlURL, + data->first.servicetype, + "0", + "65535", + "TCP", + "1000", + &pdata); + if(r == UPNPCOMMAND_SUCCESS) + { + printf(" i protocol exPort->inAddr:inPort description remoteHost leaseTime\n"); + for(pm = pdata.l_head; pm != NULL; pm = pm->l_next) + { + printf("%2d %s %5hu->%s:%-5hu '%s' '%s' %u\n", + i, pm->protocol, pm->externalPort, pm->internalClient, + pm->internalPort, + pm->description, pm->remoteHost, + (unsigned)pm->leaseTime); + i++; + } + FreePortListing(&pdata); + } + else + { + printf("GetListOfPortMappings() returned %d (%s)\n", + r, strupnperror(r)); + } + r = UPNP_GetListOfPortMappings(urls->controlURL, + data->first.servicetype, + "0", + "65535", + "UDP", + "1000", + &pdata); + if(r == UPNPCOMMAND_SUCCESS) + { + for(pm = pdata.l_head; pm != NULL; pm = pm->l_next) + { + printf("%2d %s %5hu->%s:%-5hu '%s' '%s' %u\n", + i, pm->protocol, pm->externalPort, pm->internalClient, + pm->internalPort, + pm->description, pm->remoteHost, + (unsigned)pm->leaseTime); + i++; + } + FreePortListing(&pdata); + } + else + { + printf("GetListOfPortMappings() returned %d (%s)\n", + r, strupnperror(r)); + } +} + +/* Test function + * 1 - get connection type + * 2 - get extenal ip address + * 3 - Add port mapping + * 4 - get this port mapping from the IGD */ +static void SetRedirectAndTest(struct UPNPUrls * urls, + struct IGDdatas * data, + const char * iaddr, + const char * iport, + const char * eport, + const char * proto, + const char * leaseDuration, + const char * description, + int addAny) +{ + char externalIPAddress[40]; + char intClient[40]; + char intPort[6]; + char reservedPort[6]; + char duration[16]; + int r; + + if(!iaddr || !iport || !eport || !proto) + { + fprintf(stderr, "Wrong arguments\n"); + return; + } + proto = protofix(proto); + if(!proto) + { + fprintf(stderr, "invalid protocol\n"); + return; + } + + r = UPNP_GetExternalIPAddress(urls->controlURL, + data->first.servicetype, + externalIPAddress); + if(r!=UPNPCOMMAND_SUCCESS) + printf("GetExternalIPAddress failed.\n"); + else + printf("ExternalIPAddress = %s\n", externalIPAddress); + + if (addAny) { + r = UPNP_AddAnyPortMapping(urls->controlURL, data->first.servicetype, + eport, iport, iaddr, description, + proto, 0, leaseDuration, reservedPort); + if(r==UPNPCOMMAND_SUCCESS) + eport = reservedPort; + else + printf("AddAnyPortMapping(%s, %s, %s) failed with code %d (%s)\n", + eport, iport, iaddr, r, strupnperror(r)); + } else { + r = UPNP_AddPortMapping(urls->controlURL, data->first.servicetype, + eport, iport, iaddr, description, + proto, 0, leaseDuration); + if(r!=UPNPCOMMAND_SUCCESS) + printf("AddPortMapping(%s, %s, %s) failed with code %d (%s)\n", + eport, iport, iaddr, r, strupnperror(r)); + } + + r = UPNP_GetSpecificPortMappingEntry(urls->controlURL, + data->first.servicetype, + eport, proto, NULL/*remoteHost*/, + intClient, intPort, NULL/*desc*/, + NULL/*enabled*/, duration); + if(r!=UPNPCOMMAND_SUCCESS) + printf("GetSpecificPortMappingEntry() failed with code %d (%s)\n", + r, strupnperror(r)); + else { + printf("InternalIP:Port = %s:%s\n", intClient, intPort); + printf("external %s:%s %s is redirected to internal %s:%s (duration=%s)\n", + externalIPAddress, eport, proto, intClient, intPort, duration); + } +} + +static void +RemoveRedirect(struct UPNPUrls * urls, + struct IGDdatas * data, + const char * eport, + const char * proto, + const char * remoteHost) +{ + int r; + if(!proto || !eport) + { + fprintf(stderr, "invalid arguments\n"); + return; + } + proto = protofix(proto); + if(!proto) + { + fprintf(stderr, "protocol invalid\n"); + return; + } + r = UPNP_DeletePortMapping(urls->controlURL, data->first.servicetype, eport, proto, remoteHost); + printf("UPNP_DeletePortMapping() returned : %d\n", r); +} + +static void +RemoveRedirectRange(struct UPNPUrls * urls, + struct IGDdatas * data, + const char * ePortStart, char const * ePortEnd, + const char * proto, const char * manage) +{ + int r; + + if (!manage) + manage = "0"; + + if(!proto || !ePortStart || !ePortEnd) + { + fprintf(stderr, "invalid arguments\n"); + return; + } + proto = protofix(proto); + if(!proto) + { + fprintf(stderr, "protocol invalid\n"); + return; + } + r = UPNP_DeletePortMappingRange(urls->controlURL, data->first.servicetype, ePortStart, ePortEnd, proto, manage); + printf("UPNP_DeletePortMappingRange() returned : %d\n", r); +} + +/* IGD:2, functions for service WANIPv6FirewallControl:1 */ +static void GetFirewallStatus(struct UPNPUrls * urls, struct IGDdatas * data) +{ + unsigned int bytessent, bytesreceived, packetsreceived, packetssent; + int firewallEnabled = 0, inboundPinholeAllowed = 0; + + UPNP_GetFirewallStatus(urls->controlURL_6FC, data->IPv6FC.servicetype, &firewallEnabled, &inboundPinholeAllowed); + printf("FirewallEnabled: %d & Inbound Pinhole Allowed: %d\n", firewallEnabled, inboundPinholeAllowed); + printf("GetFirewallStatus:\n Firewall Enabled: %s\n Inbound Pinhole Allowed: %s\n", (firewallEnabled)? "Yes":"No", (inboundPinholeAllowed)? "Yes":"No"); + + bytessent = UPNP_GetTotalBytesSent(urls->controlURL_CIF, data->CIF.servicetype); + bytesreceived = UPNP_GetTotalBytesReceived(urls->controlURL_CIF, data->CIF.servicetype); + packetssent = UPNP_GetTotalPacketsSent(urls->controlURL_CIF, data->CIF.servicetype); + packetsreceived = UPNP_GetTotalPacketsReceived(urls->controlURL_CIF, data->CIF.servicetype); + printf("Bytes: Sent: %8u\tRecv: %8u\n", bytessent, bytesreceived); + printf("Packets: Sent: %8u\tRecv: %8u\n", packetssent, packetsreceived); +} + +/* Test function + * 1 - Add pinhole + * 2 - Check if pinhole is working from the IGD side */ +static void SetPinholeAndTest(struct UPNPUrls * urls, struct IGDdatas * data, + const char * remoteaddr, const char * eport, + const char * intaddr, const char * iport, + const char * proto, const char * lease_time) +{ + char uniqueID[8]; + /*int isWorking = 0;*/ + int r; + char proto_tmp[8]; + + if(!intaddr || !remoteaddr || !iport || !eport || !proto || !lease_time) + { + fprintf(stderr, "Wrong arguments\n"); + return; + } + if(atoi(proto) == 0) + { + const char * protocol; + protocol = protofix(proto); + if(protocol && (strcmp("TCP", protocol) == 0)) + { + snprintf(proto_tmp, sizeof(proto_tmp), "%d", IPPROTO_TCP); + proto = proto_tmp; + } + else if(protocol && (strcmp("UDP", protocol) == 0)) + { + snprintf(proto_tmp, sizeof(proto_tmp), "%d", IPPROTO_UDP); + proto = proto_tmp; + } + else + { + fprintf(stderr, "invalid protocol\n"); + return; + } + } + r = UPNP_AddPinhole(urls->controlURL_6FC, data->IPv6FC.servicetype, remoteaddr, eport, intaddr, iport, proto, lease_time, uniqueID); + if(r!=UPNPCOMMAND_SUCCESS) + printf("AddPinhole([%s]:%s -> [%s]:%s) failed with code %d (%s)\n", + remoteaddr, eport, intaddr, iport, r, strupnperror(r)); + else + { + printf("AddPinhole: ([%s]:%s -> [%s]:%s) / Pinhole ID = %s\n", + remoteaddr, eport, intaddr, iport, uniqueID); + /*r = UPNP_CheckPinholeWorking(urls->controlURL_6FC, data->servicetype_6FC, uniqueID, &isWorking); + if(r!=UPNPCOMMAND_SUCCESS) + printf("CheckPinholeWorking() failed with code %d (%s)\n", r, strupnperror(r)); + printf("CheckPinholeWorking: Pinhole ID = %s / IsWorking = %s\n", uniqueID, (isWorking)? "Yes":"No");*/ + } +} + +/* Test function + * 1 - Check if pinhole is working from the IGD side + * 2 - Update pinhole */ +static void GetPinholeAndUpdate(struct UPNPUrls * urls, struct IGDdatas * data, + const char * uniqueID, const char * lease_time) +{ + int isWorking = 0; + int r; + + if(!uniqueID || !lease_time) + { + fprintf(stderr, "Wrong arguments\n"); + return; + } + r = UPNP_CheckPinholeWorking(urls->controlURL_6FC, data->IPv6FC.servicetype, uniqueID, &isWorking); + printf("CheckPinholeWorking: Pinhole ID = %s / IsWorking = %s\n", uniqueID, (isWorking)? "Yes":"No"); + if(r!=UPNPCOMMAND_SUCCESS) + printf("CheckPinholeWorking() failed with code %d (%s)\n", r, strupnperror(r)); + if(isWorking || r==709) + { + r = UPNP_UpdatePinhole(urls->controlURL_6FC, data->IPv6FC.servicetype, uniqueID, lease_time); + printf("UpdatePinhole: Pinhole ID = %s with Lease Time: %s\n", uniqueID, lease_time); + if(r!=UPNPCOMMAND_SUCCESS) + printf("UpdatePinhole: ID (%s) failed with code %d (%s)\n", uniqueID, r, strupnperror(r)); + } +} + +/* Test function + * Get pinhole timeout + */ +static void GetPinholeOutboundTimeout(struct UPNPUrls * urls, struct IGDdatas * data, + const char * remoteaddr, const char * eport, + const char * intaddr, const char * iport, + const char * proto) +{ + int timeout = 0; + int r; + + if(!intaddr || !remoteaddr || !iport || !eport || !proto) + { + fprintf(stderr, "Wrong arguments\n"); + return; + } + + r = UPNP_GetOutboundPinholeTimeout(urls->controlURL_6FC, data->IPv6FC.servicetype, remoteaddr, eport, intaddr, iport, proto, &timeout); + if(r!=UPNPCOMMAND_SUCCESS) + printf("GetOutboundPinholeTimeout([%s]:%s -> [%s]:%s) failed with code %d (%s)\n", + intaddr, iport, remoteaddr, eport, r, strupnperror(r)); + else + printf("GetOutboundPinholeTimeout: ([%s]:%s -> [%s]:%s) / Timeout = %d\n", intaddr, iport, remoteaddr, eport, timeout); +} + +static void +GetPinholePackets(struct UPNPUrls * urls, + struct IGDdatas * data, const char * uniqueID) +{ + int r, pinholePackets = 0; + if(!uniqueID) + { + fprintf(stderr, "invalid arguments\n"); + return; + } + r = UPNP_GetPinholePackets(urls->controlURL_6FC, data->IPv6FC.servicetype, uniqueID, &pinholePackets); + if(r!=UPNPCOMMAND_SUCCESS) + printf("GetPinholePackets() failed with code %d (%s)\n", r, strupnperror(r)); + else + printf("GetPinholePackets: Pinhole ID = %s / PinholePackets = %d\n", uniqueID, pinholePackets); +} + +static void +CheckPinhole(struct UPNPUrls * urls, + struct IGDdatas * data, const char * uniqueID) +{ + int r, isWorking = 0; + if(!uniqueID) + { + fprintf(stderr, "invalid arguments\n"); + return; + } + r = UPNP_CheckPinholeWorking(urls->controlURL_6FC, data->IPv6FC.servicetype, uniqueID, &isWorking); + if(r!=UPNPCOMMAND_SUCCESS) + printf("CheckPinholeWorking() failed with code %d (%s)\n", r, strupnperror(r)); + else + printf("CheckPinholeWorking: Pinhole ID = %s / IsWorking = %s\n", uniqueID, (isWorking)? "Yes":"No"); +} + +static void +RemovePinhole(struct UPNPUrls * urls, + struct IGDdatas * data, const char * uniqueID) +{ + int r; + if(!uniqueID) + { + fprintf(stderr, "invalid arguments\n"); + return; + } + r = UPNP_DeletePinhole(urls->controlURL_6FC, data->IPv6FC.servicetype, uniqueID); + printf("UPNP_DeletePinhole() returned : %d\n", r); +} + + +/* sample upnp client program */ +int main(int argc, char ** argv) +{ + char command = 0; + char ** commandargv = 0; + int commandargc = 0; + struct UPNPDev * devlist = 0; + char lanaddr[64]; /* my ip address on the LAN */ + int i; + const char * rootdescurl = 0; + const char * multicastif = 0; + const char * minissdpdpath = 0; + int localport = UPNP_LOCAL_PORT_ANY; + int retcode = 0; + int error = 0; + int ipv6 = 0; + unsigned char ttl = 2; /* defaulting to 2 */ + const char * description = 0; + +#ifdef _WIN32 + WSADATA wsaData; + int nResult = WSAStartup(MAKEWORD(2,2), &wsaData); + if(nResult != NO_ERROR) + { + fprintf(stderr, "WSAStartup() failed.\n"); + return -1; + } +#endif + printf("upnpc : miniupnpc library test client, version %s.\n", MINIUPNPC_VERSION_STRING); + printf(" (c) 2005-2015 Thomas Bernard.\n"); + printf("Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/\n" + "for more information.\n"); + /* command line processing */ + for(i=1; i65535 || + (localport >1 && localport < 1024)) + { + fprintf(stderr, "Invalid localport '%s'\n", argv[i]); + localport = UPNP_LOCAL_PORT_ANY; + break; + } + } + else if(argv[i][1] == 'p') + minissdpdpath = argv[++i]; + else if(argv[i][1] == '6') + ipv6 = 1; + else if(argv[i][1] == 'e') + description = argv[++i]; + else if(argv[i][1] == 't') + ttl = (unsigned char)atoi(argv[++i]); + else + { + command = argv[i][1]; + i++; + commandargv = argv + i; + commandargc = argc - i; + break; + } + } + else + { + fprintf(stderr, "option '%s' invalid\n", argv[i]); + } + } + + if(!command + || (command == 'a' && commandargc<4) + || (command == 'd' && argc<2) + || (command == 'r' && argc<2) + || (command == 'A' && commandargc<6) + || (command == 'U' && commandargc<2) + || (command == 'D' && commandargc<1)) + { + fprintf(stderr, "Usage :\t%s [options] -a ip port external_port protocol [duration]\n\t\tAdd port redirection\n", argv[0]); + fprintf(stderr, " \t%s [options] -d external_port protocol \n\t\tDelete port redirection\n", argv[0]); + fprintf(stderr, " \t%s [options] -s\n\t\tGet Connection status\n", argv[0]); + fprintf(stderr, " \t%s [options] -l\n\t\tList redirections\n", argv[0]); + fprintf(stderr, " \t%s [options] -L\n\t\tList redirections (using GetListOfPortMappings (for IGD:2 only)\n", argv[0]); + fprintf(stderr, " \t%s [options] -n ip port external_port protocol [duration]\n\t\tAdd (any) port redirection allowing IGD to use alternative external_port (for IGD:2 only)\n", argv[0]); + fprintf(stderr, " \t%s [options] -N external_port_start external_port_end protocol [manage]\n\t\tDelete range of port redirections (for IGD:2 only)\n", argv[0]); + fprintf(stderr, " \t%s [options] -r port1 [external_port1] protocol1 [port2 [external_port2] protocol2] [...]\n\t\tAdd all redirections to the current host\n", argv[0]); + fprintf(stderr, " \t%s [options] -A remote_ip remote_port internal_ip internal_port protocol lease_time\n\t\tAdd Pinhole (for IGD:2 only)\n", argv[0]); + fprintf(stderr, " \t%s [options] -U uniqueID new_lease_time\n\t\tUpdate Pinhole (for IGD:2 only)\n", argv[0]); + fprintf(stderr, " \t%s [options] -C uniqueID\n\t\tCheck if Pinhole is Working (for IGD:2 only)\n", argv[0]); + fprintf(stderr, " \t%s [options] -K uniqueID\n\t\tGet Number of packets going through the rule (for IGD:2 only)\n", argv[0]); + fprintf(stderr, " \t%s [options] -D uniqueID\n\t\tDelete Pinhole (for IGD:2 only)\n", argv[0]); + fprintf(stderr, " \t%s [options] -S\n\t\tGet Firewall status (for IGD:2 only)\n", argv[0]); + fprintf(stderr, " \t%s [options] -G remote_ip remote_port internal_ip internal_port protocol\n\t\tGet Outbound Pinhole Timeout (for IGD:2 only)\n", argv[0]); + fprintf(stderr, " \t%s [options] -P\n\t\tGet Presentation url\n", argv[0]); + fprintf(stderr, "\nprotocol is UDP or TCP\n"); + fprintf(stderr, "Options:\n"); + fprintf(stderr, " -e description : set description for port mapping.\n"); + fprintf(stderr, " -6 : use ip v6 instead of ip v4.\n"); + fprintf(stderr, " -u url : bypass discovery process by providing the XML root description url.\n"); + fprintf(stderr, " -m address/interface : provide ip address (ip v4) or interface name (ip v4 or v6) to use for sending SSDP multicast packets.\n"); + fprintf(stderr, " -z localport : SSDP packets local (source) port (1024-65535).\n"); + fprintf(stderr, " -p path : use this path for MiniSSDPd socket.\n"); + fprintf(stderr, " -t ttl : set multicast TTL. Default value is 2.\n"); + return 1; + } + + if( rootdescurl + || (devlist = upnpDiscover(2000, multicastif, minissdpdpath, + localport, ipv6, ttl, &error))) + { + struct UPNPDev * device; + struct UPNPUrls urls; + struct IGDdatas data; + if(devlist) + { + printf("List of UPNP devices found on the network :\n"); + for(device = devlist; device; device = device->pNext) + { + printf(" desc: %s\n st: %s\n\n", + device->descURL, device->st); + } + } + else if(!rootdescurl) + { + printf("upnpDiscover() error code=%d\n", error); + } + i = 1; + if( (rootdescurl && UPNP_GetIGDFromUrl(rootdescurl, &urls, &data, lanaddr, sizeof(lanaddr))) + || (i = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)))) + { + switch(i) { + case 1: + printf("Found valid IGD : %s\n", urls.controlURL); + break; + case 2: + printf("Found a (not connected?) IGD : %s\n", urls.controlURL); + printf("Trying to continue anyway\n"); + break; + case 3: + printf("UPnP device found. Is it an IGD ? : %s\n", urls.controlURL); + printf("Trying to continue anyway\n"); + break; + default: + printf("Found device (igd ?) : %s\n", urls.controlURL); + printf("Trying to continue anyway\n"); + } + printf("Local LAN ip address : %s\n", lanaddr); + #if 0 + printf("getting \"%s\"\n", urls.ipcondescURL); + descXML = miniwget(urls.ipcondescURL, &descXMLsize); + if(descXML) + { + /*fwrite(descXML, 1, descXMLsize, stdout);*/ + free(descXML); descXML = NULL; + } + #endif + + switch(command) + { + case 'l': + DisplayInfos(&urls, &data); + ListRedirections(&urls, &data); + break; + case 'L': + NewListRedirections(&urls, &data); + break; + case 'a': + SetRedirectAndTest(&urls, &data, + commandargv[0], commandargv[1], + commandargv[2], commandargv[3], + (commandargc > 4)?commandargv[4]:"0", + description, 0); + break; + case 'd': + RemoveRedirect(&urls, &data, commandargv[0], commandargv[1], + commandargc > 2 ? commandargv[2] : NULL); + break; + case 'n': /* aNy */ + SetRedirectAndTest(&urls, &data, + commandargv[0], commandargv[1], + commandargv[2], commandargv[3], + (commandargc > 4)?commandargv[4]:"0", + description, 1); + break; + case 'N': + if (commandargc < 3) + fprintf(stderr, "too few arguments\n"); + + RemoveRedirectRange(&urls, &data, commandargv[0], commandargv[1], commandargv[2], + commandargc > 3 ? commandargv[3] : NULL); + break; + case 's': + GetConnectionStatus(&urls, &data); + break; + case 'r': + i = 0; + while(i */ + SetRedirectAndTest(&urls, &data, + lanaddr, commandargv[i], + commandargv[i+1], commandargv[i+2], "0", + description, 0); + i+=3; /* 3 parameters parsed */ + } else { + /* 2nd parameter not an integer : */ + SetRedirectAndTest(&urls, &data, + lanaddr, commandargv[i], + commandargv[i], commandargv[i+1], "0", + description, 0); + i+=2; /* 2 parameters parsed */ + } + } + break; + case 'A': + SetPinholeAndTest(&urls, &data, + commandargv[0], commandargv[1], + commandargv[2], commandargv[3], + commandargv[4], commandargv[5]); + break; + case 'U': + GetPinholeAndUpdate(&urls, &data, + commandargv[0], commandargv[1]); + break; + case 'C': + for(i=0; i +#include +#include +#include "upnpcommands.h" +#include "miniupnpc.h" +#include "portlistingparse.h" + +static UNSIGNED_INTEGER +my_atoui(const char * s) +{ + return s ? ((UNSIGNED_INTEGER)STRTOUI(s, NULL, 0)) : 0; +} + +/* + * */ +MINIUPNP_LIBSPEC UNSIGNED_INTEGER +UPNP_GetTotalBytesSent(const char * controlURL, + const char * servicetype) +{ + struct NameValueParserData pdata; + char * buffer; + int bufsize; + unsigned int r = 0; + char * p; + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetTotalBytesSent", 0, &bufsize))) { + return UPNPCOMMAND_HTTP_ERROR; + } + ParseNameValue(buffer, bufsize, &pdata); + /*DisplayNameValueList(buffer, bufsize);*/ + free(buffer); buffer = NULL; + p = GetValueFromNameValueList(&pdata, "NewTotalBytesSent"); + r = my_atoui(p); + ClearNameValueList(&pdata); + return r; +} + +/* + * */ +MINIUPNP_LIBSPEC UNSIGNED_INTEGER +UPNP_GetTotalBytesReceived(const char * controlURL, + const char * servicetype) +{ + struct NameValueParserData pdata; + char * buffer; + int bufsize; + unsigned int r = 0; + char * p; + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetTotalBytesReceived", 0, &bufsize))) { + return UPNPCOMMAND_HTTP_ERROR; + } + ParseNameValue(buffer, bufsize, &pdata); + /*DisplayNameValueList(buffer, bufsize);*/ + free(buffer); buffer = NULL; + p = GetValueFromNameValueList(&pdata, "NewTotalBytesReceived"); + r = my_atoui(p); + ClearNameValueList(&pdata); + return r; +} + +/* + * */ +MINIUPNP_LIBSPEC UNSIGNED_INTEGER +UPNP_GetTotalPacketsSent(const char * controlURL, + const char * servicetype) +{ + struct NameValueParserData pdata; + char * buffer; + int bufsize; + unsigned int r = 0; + char * p; + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetTotalPacketsSent", 0, &bufsize))) { + return UPNPCOMMAND_HTTP_ERROR; + } + ParseNameValue(buffer, bufsize, &pdata); + /*DisplayNameValueList(buffer, bufsize);*/ + free(buffer); buffer = NULL; + p = GetValueFromNameValueList(&pdata, "NewTotalPacketsSent"); + r = my_atoui(p); + ClearNameValueList(&pdata); + return r; +} + +/* + * */ +MINIUPNP_LIBSPEC UNSIGNED_INTEGER +UPNP_GetTotalPacketsReceived(const char * controlURL, + const char * servicetype) +{ + struct NameValueParserData pdata; + char * buffer; + int bufsize; + unsigned int r = 0; + char * p; + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetTotalPacketsReceived", 0, &bufsize))) { + return UPNPCOMMAND_HTTP_ERROR; + } + ParseNameValue(buffer, bufsize, &pdata); + /*DisplayNameValueList(buffer, bufsize);*/ + free(buffer); buffer = NULL; + p = GetValueFromNameValueList(&pdata, "NewTotalPacketsReceived"); + r = my_atoui(p); + ClearNameValueList(&pdata); + return r; +} + +/* UPNP_GetStatusInfo() call the corresponding UPNP method + * returns the current status and uptime */ +MINIUPNP_LIBSPEC int +UPNP_GetStatusInfo(const char * controlURL, + const char * servicetype, + char * status, + unsigned int * uptime, + char * lastconnerror) +{ + struct NameValueParserData pdata; + char * buffer; + int bufsize; + char * p; + char * up; + char * err; + int ret = UPNPCOMMAND_UNKNOWN_ERROR; + + if(!status && !uptime) + return UPNPCOMMAND_INVALID_ARGS; + + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetStatusInfo", 0, &bufsize))) { + return UPNPCOMMAND_HTTP_ERROR; + } + ParseNameValue(buffer, bufsize, &pdata); + /*DisplayNameValueList(buffer, bufsize);*/ + free(buffer); buffer = NULL; + up = GetValueFromNameValueList(&pdata, "NewUptime"); + p = GetValueFromNameValueList(&pdata, "NewConnectionStatus"); + err = GetValueFromNameValueList(&pdata, "NewLastConnectionError"); + if(p && up) + ret = UPNPCOMMAND_SUCCESS; + + if(status) { + if(p){ + strncpy(status, p, 64 ); + status[63] = '\0'; + }else + status[0]= '\0'; + } + + if(uptime) { + if(up) + sscanf(up,"%u",uptime); + else + *uptime = 0; + } + + if(lastconnerror) { + if(err) { + strncpy(lastconnerror, err, 64 ); + lastconnerror[63] = '\0'; + } else + lastconnerror[0] = '\0'; + } + + p = GetValueFromNameValueList(&pdata, "errorCode"); + if(p) { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(p, "%d", &ret); + } + ClearNameValueList(&pdata); + return ret; +} + +/* UPNP_GetConnectionTypeInfo() call the corresponding UPNP method + * returns the connection type */ +MINIUPNP_LIBSPEC int +UPNP_GetConnectionTypeInfo(const char * controlURL, + const char * servicetype, + char * connectionType) +{ + struct NameValueParserData pdata; + char * buffer; + int bufsize; + char * p; + int ret = UPNPCOMMAND_UNKNOWN_ERROR; + + if(!connectionType) + return UPNPCOMMAND_INVALID_ARGS; + + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetConnectionTypeInfo", 0, &bufsize))) { + return UPNPCOMMAND_HTTP_ERROR; + } + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + p = GetValueFromNameValueList(&pdata, "NewConnectionType"); + /*p = GetValueFromNameValueList(&pdata, "NewPossibleConnectionTypes");*/ + /* PossibleConnectionTypes will have several values.... */ + if(p) { + strncpy(connectionType, p, 64 ); + connectionType[63] = '\0'; + ret = UPNPCOMMAND_SUCCESS; + } else + connectionType[0] = '\0'; + p = GetValueFromNameValueList(&pdata, "errorCode"); + if(p) { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(p, "%d", &ret); + } + ClearNameValueList(&pdata); + return ret; +} + +/* UPNP_GetLinkLayerMaxBitRate() call the corresponding UPNP method. + * Returns 2 values: Downloadlink bandwidth and Uplink bandwidth. + * One of the values can be null + * Note : GetLinkLayerMaxBitRates belongs to WANPPPConnection:1 only + * We can use the GetCommonLinkProperties from WANCommonInterfaceConfig:1 */ +MINIUPNP_LIBSPEC int +UPNP_GetLinkLayerMaxBitRates(const char * controlURL, + const char * servicetype, + unsigned int * bitrateDown, + unsigned int * bitrateUp) +{ + struct NameValueParserData pdata; + char * buffer; + int bufsize; + int ret = UPNPCOMMAND_UNKNOWN_ERROR; + char * down; + char * up; + char * p; + + if(!bitrateDown && !bitrateUp) + return UPNPCOMMAND_INVALID_ARGS; + + /* shouldn't we use GetCommonLinkProperties ? */ + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetCommonLinkProperties", 0, &bufsize))) { + /*"GetLinkLayerMaxBitRates", 0, &bufsize);*/ + return UPNPCOMMAND_HTTP_ERROR; + } + /*DisplayNameValueList(buffer, bufsize);*/ + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + /*down = GetValueFromNameValueList(&pdata, "NewDownstreamMaxBitRate");*/ + /*up = GetValueFromNameValueList(&pdata, "NewUpstreamMaxBitRate");*/ + down = GetValueFromNameValueList(&pdata, "NewLayer1DownstreamMaxBitRate"); + up = GetValueFromNameValueList(&pdata, "NewLayer1UpstreamMaxBitRate"); + /*GetValueFromNameValueList(&pdata, "NewWANAccessType");*/ + /*GetValueFromNameValueList(&pdata, "NewPhysicalLinkStatus");*/ + if(down && up) + ret = UPNPCOMMAND_SUCCESS; + + if(bitrateDown) { + if(down) + sscanf(down,"%u",bitrateDown); + else + *bitrateDown = 0; + } + + if(bitrateUp) { + if(up) + sscanf(up,"%u",bitrateUp); + else + *bitrateUp = 0; + } + p = GetValueFromNameValueList(&pdata, "errorCode"); + if(p) { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(p, "%d", &ret); + } + ClearNameValueList(&pdata); + return ret; +} + + +/* UPNP_GetExternalIPAddress() call the corresponding UPNP method. + * if the third arg is not null the value is copied to it. + * at least 16 bytes must be available + * + * Return values : + * 0 : SUCCESS + * NON ZERO : ERROR Either an UPnP error code or an unknown error. + * + * 402 Invalid Args - See UPnP Device Architecture section on Control. + * 501 Action Failed - See UPnP Device Architecture section on Control. + */ +MINIUPNP_LIBSPEC int +UPNP_GetExternalIPAddress(const char * controlURL, + const char * servicetype, + char * extIpAdd) +{ + struct NameValueParserData pdata; + char * buffer; + int bufsize; + char * p; + int ret = UPNPCOMMAND_UNKNOWN_ERROR; + + if(!extIpAdd || !controlURL || !servicetype) + return UPNPCOMMAND_INVALID_ARGS; + + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetExternalIPAddress", 0, &bufsize))) { + return UPNPCOMMAND_HTTP_ERROR; + } + /*DisplayNameValueList(buffer, bufsize);*/ + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + /*printf("external ip = %s\n", GetValueFromNameValueList(&pdata, "NewExternalIPAddress") );*/ + p = GetValueFromNameValueList(&pdata, "NewExternalIPAddress"); + if(p) { + strncpy(extIpAdd, p, 16 ); + extIpAdd[15] = '\0'; + ret = UPNPCOMMAND_SUCCESS; + } else + extIpAdd[0] = '\0'; + + p = GetValueFromNameValueList(&pdata, "errorCode"); + if(p) { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(p, "%d", &ret); + } + + ClearNameValueList(&pdata); + return ret; +} + +MINIUPNP_LIBSPEC int +UPNP_AddPortMapping(const char * controlURL, const char * servicetype, + const char * extPort, + const char * inPort, + const char * inClient, + const char * desc, + const char * proto, + const char * remoteHost, + const char * leaseDuration) +{ + struct UPNParg * AddPortMappingArgs; + char * buffer; + int bufsize; + struct NameValueParserData pdata; + const char * resVal; + int ret; + + if(!inPort || !inClient || !proto || !extPort) + return UPNPCOMMAND_INVALID_ARGS; + + AddPortMappingArgs = calloc(9, sizeof(struct UPNParg)); + if(AddPortMappingArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + AddPortMappingArgs[0].elt = "NewRemoteHost"; + AddPortMappingArgs[0].val = remoteHost; + AddPortMappingArgs[1].elt = "NewExternalPort"; + AddPortMappingArgs[1].val = extPort; + AddPortMappingArgs[2].elt = "NewProtocol"; + AddPortMappingArgs[2].val = proto; + AddPortMappingArgs[3].elt = "NewInternalPort"; + AddPortMappingArgs[3].val = inPort; + AddPortMappingArgs[4].elt = "NewInternalClient"; + AddPortMappingArgs[4].val = inClient; + AddPortMappingArgs[5].elt = "NewEnabled"; + AddPortMappingArgs[5].val = "1"; + AddPortMappingArgs[6].elt = "NewPortMappingDescription"; + AddPortMappingArgs[6].val = desc?desc:"libminiupnpc"; + AddPortMappingArgs[7].elt = "NewLeaseDuration"; + AddPortMappingArgs[7].val = leaseDuration?leaseDuration:"0"; + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "AddPortMapping", AddPortMappingArgs, + &bufsize))) { + free(AddPortMappingArgs); + return UPNPCOMMAND_HTTP_ERROR; + } + /*DisplayNameValueList(buffer, bufsize);*/ + /*buffer[bufsize] = '\0';*/ + /*puts(buffer);*/ + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + resVal = GetValueFromNameValueList(&pdata, "errorCode"); + if(resVal) { + /*printf("AddPortMapping errorCode = '%s'\n", resVal); */ + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(resVal, "%d", &ret); + } else { + ret = UPNPCOMMAND_SUCCESS; + } + ClearNameValueList(&pdata); + free(AddPortMappingArgs); + return ret; +} + +MINIUPNP_LIBSPEC int +UPNP_AddAnyPortMapping(const char * controlURL, const char * servicetype, + const char * extPort, + const char * inPort, + const char * inClient, + const char * desc, + const char * proto, + const char * remoteHost, + const char * leaseDuration, + char * reservedPort) +{ + struct UPNParg * AddPortMappingArgs; + char * buffer; + int bufsize; + struct NameValueParserData pdata; + const char * resVal; + int ret; + + if(!inPort || !inClient || !proto || !extPort) + return UPNPCOMMAND_INVALID_ARGS; + + AddPortMappingArgs = calloc(9, sizeof(struct UPNParg)); + if(AddPortMappingArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + AddPortMappingArgs[0].elt = "NewRemoteHost"; + AddPortMappingArgs[0].val = remoteHost; + AddPortMappingArgs[1].elt = "NewExternalPort"; + AddPortMappingArgs[1].val = extPort; + AddPortMappingArgs[2].elt = "NewProtocol"; + AddPortMappingArgs[2].val = proto; + AddPortMappingArgs[3].elt = "NewInternalPort"; + AddPortMappingArgs[3].val = inPort; + AddPortMappingArgs[4].elt = "NewInternalClient"; + AddPortMappingArgs[4].val = inClient; + AddPortMappingArgs[5].elt = "NewEnabled"; + AddPortMappingArgs[5].val = "1"; + AddPortMappingArgs[6].elt = "NewPortMappingDescription"; + AddPortMappingArgs[6].val = desc?desc:"libminiupnpc"; + AddPortMappingArgs[7].elt = "NewLeaseDuration"; + AddPortMappingArgs[7].val = leaseDuration?leaseDuration:"0"; + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "AddAnyPortMapping", AddPortMappingArgs, + &bufsize))) { + free(AddPortMappingArgs); + return UPNPCOMMAND_HTTP_ERROR; + } + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + resVal = GetValueFromNameValueList(&pdata, "errorCode"); + if(resVal) { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(resVal, "%d", &ret); + } else { + char *p; + + p = GetValueFromNameValueList(&pdata, "NewReservedPort"); + if(p) { + strncpy(reservedPort, p, 6); + reservedPort[5] = '\0'; + ret = UPNPCOMMAND_SUCCESS; + } else { + ret = UPNPCOMMAND_INVALID_RESPONSE; + } + } + ClearNameValueList(&pdata); + free(AddPortMappingArgs); + return ret; +} + +MINIUPNP_LIBSPEC int +UPNP_DeletePortMapping(const char * controlURL, const char * servicetype, + const char * extPort, const char * proto, + const char * remoteHost) +{ + /*struct NameValueParserData pdata;*/ + struct UPNParg * DeletePortMappingArgs; + char * buffer; + int bufsize; + struct NameValueParserData pdata; + const char * resVal; + int ret; + + if(!extPort || !proto) + return UPNPCOMMAND_INVALID_ARGS; + + DeletePortMappingArgs = calloc(4, sizeof(struct UPNParg)); + if(DeletePortMappingArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + DeletePortMappingArgs[0].elt = "NewRemoteHost"; + DeletePortMappingArgs[0].val = remoteHost; + DeletePortMappingArgs[1].elt = "NewExternalPort"; + DeletePortMappingArgs[1].val = extPort; + DeletePortMappingArgs[2].elt = "NewProtocol"; + DeletePortMappingArgs[2].val = proto; + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "DeletePortMapping", + DeletePortMappingArgs, &bufsize))) { + free(DeletePortMappingArgs); + return UPNPCOMMAND_HTTP_ERROR; + } + /*DisplayNameValueList(buffer, bufsize);*/ + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + resVal = GetValueFromNameValueList(&pdata, "errorCode"); + if(resVal) { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(resVal, "%d", &ret); + } else { + ret = UPNPCOMMAND_SUCCESS; + } + ClearNameValueList(&pdata); + free(DeletePortMappingArgs); + return ret; +} + +MINIUPNP_LIBSPEC int +UPNP_DeletePortMappingRange(const char * controlURL, const char * servicetype, + const char * extPortStart, const char * extPortEnd, + const char * proto, + const char * manage) +{ + struct UPNParg * DeletePortMappingArgs; + char * buffer; + int bufsize; + struct NameValueParserData pdata; + const char * resVal; + int ret; + + if(!extPortStart || !extPortEnd || !proto || !manage) + return UPNPCOMMAND_INVALID_ARGS; + + DeletePortMappingArgs = calloc(5, sizeof(struct UPNParg)); + if(DeletePortMappingArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + DeletePortMappingArgs[0].elt = "NewStartPort"; + DeletePortMappingArgs[0].val = extPortStart; + DeletePortMappingArgs[1].elt = "NewEndPort"; + DeletePortMappingArgs[1].val = extPortEnd; + DeletePortMappingArgs[2].elt = "NewProtocol"; + DeletePortMappingArgs[2].val = proto; + DeletePortMappingArgs[3].elt = "NewManage"; + DeletePortMappingArgs[3].val = manage; + + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "DeletePortMappingRange", + DeletePortMappingArgs, &bufsize))) { + free(DeletePortMappingArgs); + return UPNPCOMMAND_HTTP_ERROR; + } + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + resVal = GetValueFromNameValueList(&pdata, "errorCode"); + if(resVal) { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(resVal, "%d", &ret); + } else { + ret = UPNPCOMMAND_SUCCESS; + } + ClearNameValueList(&pdata); + free(DeletePortMappingArgs); + return ret; +} + +MINIUPNP_LIBSPEC int +UPNP_GetGenericPortMappingEntry(const char * controlURL, + const char * servicetype, + const char * index, + char * extPort, + char * intClient, + char * intPort, + char * protocol, + char * desc, + char * enabled, + char * rHost, + char * duration) +{ + struct NameValueParserData pdata; + struct UPNParg * GetPortMappingArgs; + char * buffer; + int bufsize; + char * p; + int r = UPNPCOMMAND_UNKNOWN_ERROR; + if(!index) + return UPNPCOMMAND_INVALID_ARGS; + intClient[0] = '\0'; + intPort[0] = '\0'; + GetPortMappingArgs = calloc(2, sizeof(struct UPNParg)); + if(GetPortMappingArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + GetPortMappingArgs[0].elt = "NewPortMappingIndex"; + GetPortMappingArgs[0].val = index; + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetGenericPortMappingEntry", + GetPortMappingArgs, &bufsize))) { + free(GetPortMappingArgs); + return UPNPCOMMAND_HTTP_ERROR; + } + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + + p = GetValueFromNameValueList(&pdata, "NewRemoteHost"); + if(p && rHost) + { + strncpy(rHost, p, 64); + rHost[63] = '\0'; + } + p = GetValueFromNameValueList(&pdata, "NewExternalPort"); + if(p && extPort) + { + strncpy(extPort, p, 6); + extPort[5] = '\0'; + r = UPNPCOMMAND_SUCCESS; + } + p = GetValueFromNameValueList(&pdata, "NewProtocol"); + if(p && protocol) + { + strncpy(protocol, p, 4); + protocol[3] = '\0'; + } + p = GetValueFromNameValueList(&pdata, "NewInternalClient"); + if(p && intClient) + { + strncpy(intClient, p, 16); + intClient[15] = '\0'; + r = 0; + } + p = GetValueFromNameValueList(&pdata, "NewInternalPort"); + if(p && intPort) + { + strncpy(intPort, p, 6); + intPort[5] = '\0'; + } + p = GetValueFromNameValueList(&pdata, "NewEnabled"); + if(p && enabled) + { + strncpy(enabled, p, 4); + enabled[3] = '\0'; + } + p = GetValueFromNameValueList(&pdata, "NewPortMappingDescription"); + if(p && desc) + { + strncpy(desc, p, 80); + desc[79] = '\0'; + } + p = GetValueFromNameValueList(&pdata, "NewLeaseDuration"); + if(p && duration) + { + strncpy(duration, p, 16); + duration[15] = '\0'; + } + p = GetValueFromNameValueList(&pdata, "errorCode"); + if(p) { + r = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(p, "%d", &r); + } + ClearNameValueList(&pdata); + free(GetPortMappingArgs); + return r; +} + +MINIUPNP_LIBSPEC int +UPNP_GetPortMappingNumberOfEntries(const char * controlURL, + const char * servicetype, + unsigned int * numEntries) +{ + struct NameValueParserData pdata; + char * buffer; + int bufsize; + char* p; + int ret = UPNPCOMMAND_UNKNOWN_ERROR; + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetPortMappingNumberOfEntries", 0, + &bufsize))) { + return UPNPCOMMAND_HTTP_ERROR; + } +#ifdef DEBUG + DisplayNameValueList(buffer, bufsize); +#endif + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + + p = GetValueFromNameValueList(&pdata, "NewPortMappingNumberOfEntries"); + if(numEntries && p) { + *numEntries = 0; + sscanf(p, "%u", numEntries); + ret = UPNPCOMMAND_SUCCESS; + } + + p = GetValueFromNameValueList(&pdata, "errorCode"); + if(p) { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(p, "%d", &ret); + } + + ClearNameValueList(&pdata); + return ret; +} + +/* UPNP_GetSpecificPortMappingEntry retrieves an existing port mapping + * the result is returned in the intClient and intPort strings + * please provide 16 and 6 bytes of data */ +MINIUPNP_LIBSPEC int +UPNP_GetSpecificPortMappingEntry(const char * controlURL, + const char * servicetype, + const char * extPort, + const char * proto, + const char * remoteHost, + char * intClient, + char * intPort, + char * desc, + char * enabled, + char * leaseDuration) +{ + struct NameValueParserData pdata; + struct UPNParg * GetPortMappingArgs; + char * buffer; + int bufsize; + char * p; + int ret = UPNPCOMMAND_UNKNOWN_ERROR; + + if(!intPort || !intClient || !extPort || !proto) + return UPNPCOMMAND_INVALID_ARGS; + + GetPortMappingArgs = calloc(4, sizeof(struct UPNParg)); + if(GetPortMappingArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + GetPortMappingArgs[0].elt = "NewRemoteHost"; + GetPortMappingArgs[0].val = remoteHost; + GetPortMappingArgs[1].elt = "NewExternalPort"; + GetPortMappingArgs[1].val = extPort; + GetPortMappingArgs[2].elt = "NewProtocol"; + GetPortMappingArgs[2].val = proto; + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetSpecificPortMappingEntry", + GetPortMappingArgs, &bufsize))) { + free(GetPortMappingArgs); + return UPNPCOMMAND_HTTP_ERROR; + } + /*DisplayNameValueList(buffer, bufsize);*/ + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + + p = GetValueFromNameValueList(&pdata, "NewInternalClient"); + if(p) { + strncpy(intClient, p, 16); + intClient[15] = '\0'; + ret = UPNPCOMMAND_SUCCESS; + } else + intClient[0] = '\0'; + + p = GetValueFromNameValueList(&pdata, "NewInternalPort"); + if(p) { + strncpy(intPort, p, 6); + intPort[5] = '\0'; + } else + intPort[0] = '\0'; + + p = GetValueFromNameValueList(&pdata, "NewEnabled"); + if(p && enabled) { + strncpy(enabled, p, 4); + enabled[3] = '\0'; + } + + p = GetValueFromNameValueList(&pdata, "NewPortMappingDescription"); + if(p && desc) { + strncpy(desc, p, 80); + desc[79] = '\0'; + } + + p = GetValueFromNameValueList(&pdata, "NewLeaseDuration"); + if(p && leaseDuration) + { + strncpy(leaseDuration, p, 16); + leaseDuration[15] = '\0'; + } + + p = GetValueFromNameValueList(&pdata, "errorCode"); + if(p) { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(p, "%d", &ret); + } + + ClearNameValueList(&pdata); + free(GetPortMappingArgs); + return ret; +} + +/* UPNP_GetListOfPortMappings() + * + * Possible UPNP Error codes : + * 606 Action not Authorized + * 730 PortMappingNotFound - no port mapping is found in the specified range. + * 733 InconsistantParameters - NewStartPort and NewEndPort values are not + * consistent. + */ +MINIUPNP_LIBSPEC int +UPNP_GetListOfPortMappings(const char * controlURL, + const char * servicetype, + const char * startPort, + const char * endPort, + const char * protocol, + const char * numberOfPorts, + struct PortMappingParserData * data) +{ + struct NameValueParserData pdata; + struct UPNParg * GetListOfPortMappingsArgs; + const char * p; + char * buffer; + int bufsize; + int ret = UPNPCOMMAND_UNKNOWN_ERROR; + + if(!startPort || !endPort || !protocol) + return UPNPCOMMAND_INVALID_ARGS; + + GetListOfPortMappingsArgs = calloc(6, sizeof(struct UPNParg)); + if(GetListOfPortMappingsArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + GetListOfPortMappingsArgs[0].elt = "NewStartPort"; + GetListOfPortMappingsArgs[0].val = startPort; + GetListOfPortMappingsArgs[1].elt = "NewEndPort"; + GetListOfPortMappingsArgs[1].val = endPort; + GetListOfPortMappingsArgs[2].elt = "NewProtocol"; + GetListOfPortMappingsArgs[2].val = protocol; + GetListOfPortMappingsArgs[3].elt = "NewManage"; + GetListOfPortMappingsArgs[3].val = "1"; + GetListOfPortMappingsArgs[4].elt = "NewNumberOfPorts"; + GetListOfPortMappingsArgs[4].val = numberOfPorts?numberOfPorts:"1000"; + + if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetListOfPortMappings", + GetListOfPortMappingsArgs, &bufsize))) { + free(GetListOfPortMappingsArgs); + return UPNPCOMMAND_HTTP_ERROR; + } + free(GetListOfPortMappingsArgs); + + /*DisplayNameValueList(buffer, bufsize);*/ + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + + /*p = GetValueFromNameValueList(&pdata, "NewPortListing");*/ + /*if(p) { + printf("NewPortListing : %s\n", p); + }*/ + /*printf("NewPortListing(%d chars) : %s\n", + pdata.portListingLength, pdata.portListing);*/ + if(pdata.portListing) + { + /*struct PortMapping * pm; + int i = 0;*/ + ParsePortListing(pdata.portListing, pdata.portListingLength, + data); + ret = UPNPCOMMAND_SUCCESS; + /* + for(pm = data->head.lh_first; pm != NULL; pm = pm->entries.le_next) + { + printf("%2d %s %5hu->%s:%-5hu '%s' '%s'\n", + i, pm->protocol, pm->externalPort, pm->internalClient, + pm->internalPort, + pm->description, pm->remoteHost); + i++; + } + */ + /*FreePortListing(&data);*/ + } + + p = GetValueFromNameValueList(&pdata, "errorCode"); + if(p) { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(p, "%d", &ret); + } + ClearNameValueList(&pdata); + + /*printf("%.*s", bufsize, buffer);*/ + + return ret; +} + +/* IGD:2, functions for service WANIPv6FirewallControl:1 */ +MINIUPNP_LIBSPEC int +UPNP_GetFirewallStatus(const char * controlURL, + const char * servicetype, + int * firewallEnabled, + int * inboundPinholeAllowed) +{ + struct NameValueParserData pdata; + char * buffer; + int bufsize; + char * fe, *ipa, *p; + int ret = UPNPCOMMAND_UNKNOWN_ERROR; + + if(!firewallEnabled || !inboundPinholeAllowed) + return UPNPCOMMAND_INVALID_ARGS; + + buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetFirewallStatus", 0, &bufsize); + if(!buffer) { + return UPNPCOMMAND_HTTP_ERROR; + } + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + fe = GetValueFromNameValueList(&pdata, "FirewallEnabled"); + ipa = GetValueFromNameValueList(&pdata, "InboundPinholeAllowed"); + if(ipa && fe) + ret = UPNPCOMMAND_SUCCESS; + if(fe) + *firewallEnabled = my_atoui(fe); + /*else + *firewallEnabled = 0;*/ + if(ipa) + *inboundPinholeAllowed = my_atoui(ipa); + /*else + *inboundPinholeAllowed = 0;*/ + p = GetValueFromNameValueList(&pdata, "errorCode"); + if(p) + { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(p, "%d", &ret); + } + ClearNameValueList(&pdata); + return ret; +} + +MINIUPNP_LIBSPEC int +UPNP_GetOutboundPinholeTimeout(const char * controlURL, const char * servicetype, + const char * remoteHost, + const char * remotePort, + const char * intClient, + const char * intPort, + const char * proto, + int * opTimeout) +{ + struct UPNParg * GetOutboundPinholeTimeoutArgs; + char * buffer; + int bufsize; + struct NameValueParserData pdata; + const char * resVal; + char * p; + int ret; + + if(!intPort || !intClient || !proto || !remotePort || !remoteHost) + return UPNPCOMMAND_INVALID_ARGS; + + GetOutboundPinholeTimeoutArgs = calloc(6, sizeof(struct UPNParg)); + if(GetOutboundPinholeTimeoutArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + GetOutboundPinholeTimeoutArgs[0].elt = "RemoteHost"; + GetOutboundPinholeTimeoutArgs[0].val = remoteHost; + GetOutboundPinholeTimeoutArgs[1].elt = "RemotePort"; + GetOutboundPinholeTimeoutArgs[1].val = remotePort; + GetOutboundPinholeTimeoutArgs[2].elt = "Protocol"; + GetOutboundPinholeTimeoutArgs[2].val = proto; + GetOutboundPinholeTimeoutArgs[3].elt = "InternalPort"; + GetOutboundPinholeTimeoutArgs[3].val = intPort; + GetOutboundPinholeTimeoutArgs[4].elt = "InternalClient"; + GetOutboundPinholeTimeoutArgs[4].val = intClient; + buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetOutboundPinholeTimeout", GetOutboundPinholeTimeoutArgs, &bufsize); + if(!buffer) + return UPNPCOMMAND_HTTP_ERROR; + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + resVal = GetValueFromNameValueList(&pdata, "errorCode"); + if(resVal) + { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(resVal, "%d", &ret); + } + else + { + ret = UPNPCOMMAND_SUCCESS; + p = GetValueFromNameValueList(&pdata, "OutboundPinholeTimeout"); + if(p) + *opTimeout = my_atoui(p); + } + ClearNameValueList(&pdata); + free(GetOutboundPinholeTimeoutArgs); + return ret; +} + +MINIUPNP_LIBSPEC int +UPNP_AddPinhole(const char * controlURL, const char * servicetype, + const char * remoteHost, + const char * remotePort, + const char * intClient, + const char * intPort, + const char * proto, + const char * leaseTime, + char * uniqueID) +{ + struct UPNParg * AddPinholeArgs; + char * buffer; + int bufsize; + struct NameValueParserData pdata; + const char * resVal; + char * p; + int ret; + + if(!intPort || !intClient || !proto || !remoteHost || !remotePort || !leaseTime) + return UPNPCOMMAND_INVALID_ARGS; + + AddPinholeArgs = calloc(7, sizeof(struct UPNParg)); + if(AddPinholeArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + /* RemoteHost can be wilcarded */ + if(strncmp(remoteHost, "empty", 5)==0) + { + AddPinholeArgs[0].elt = "RemoteHost"; + AddPinholeArgs[0].val = ""; + } + else + { + AddPinholeArgs[0].elt = "RemoteHost"; + AddPinholeArgs[0].val = remoteHost; + } + AddPinholeArgs[1].elt = "RemotePort"; + AddPinholeArgs[1].val = remotePort; + AddPinholeArgs[2].elt = "Protocol"; + AddPinholeArgs[2].val = proto; + AddPinholeArgs[3].elt = "InternalPort"; + AddPinholeArgs[3].val = intPort; + if(strncmp(intClient, "empty", 5)==0) + { + AddPinholeArgs[4].elt = "InternalClient"; + AddPinholeArgs[4].val = ""; + } + else + { + AddPinholeArgs[4].elt = "InternalClient"; + AddPinholeArgs[4].val = intClient; + } + AddPinholeArgs[5].elt = "LeaseTime"; + AddPinholeArgs[5].val = leaseTime; + buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "AddPinhole", AddPinholeArgs, &bufsize); + if(!buffer) + return UPNPCOMMAND_HTTP_ERROR; + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + p = GetValueFromNameValueList(&pdata, "UniqueID"); + if(p) + { + strncpy(uniqueID, p, 8); + uniqueID[7] = '\0'; + } + resVal = GetValueFromNameValueList(&pdata, "errorCode"); + if(resVal) + { + /*printf("AddPortMapping errorCode = '%s'\n", resVal);*/ + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(resVal, "%d", &ret); + } + else + { + ret = UPNPCOMMAND_SUCCESS; + } + ClearNameValueList(&pdata); + free(AddPinholeArgs); + return ret; +} + +MINIUPNP_LIBSPEC int +UPNP_UpdatePinhole(const char * controlURL, const char * servicetype, + const char * uniqueID, + const char * leaseTime) +{ + struct UPNParg * UpdatePinholeArgs; + char * buffer; + int bufsize; + struct NameValueParserData pdata; + const char * resVal; + int ret; + + if(!uniqueID || !leaseTime) + return UPNPCOMMAND_INVALID_ARGS; + + UpdatePinholeArgs = calloc(3, sizeof(struct UPNParg)); + if(UpdatePinholeArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + UpdatePinholeArgs[0].elt = "UniqueID"; + UpdatePinholeArgs[0].val = uniqueID; + UpdatePinholeArgs[1].elt = "NewLeaseTime"; + UpdatePinholeArgs[1].val = leaseTime; + buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "UpdatePinhole", UpdatePinholeArgs, &bufsize); + if(!buffer) + return UPNPCOMMAND_HTTP_ERROR; + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + resVal = GetValueFromNameValueList(&pdata, "errorCode"); + if(resVal) + { + /*printf("AddPortMapping errorCode = '%s'\n", resVal); */ + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(resVal, "%d", &ret); + } + else + { + ret = UPNPCOMMAND_SUCCESS; + } + ClearNameValueList(&pdata); + free(UpdatePinholeArgs); + return ret; +} + +MINIUPNP_LIBSPEC int +UPNP_DeletePinhole(const char * controlURL, const char * servicetype, const char * uniqueID) +{ + /*struct NameValueParserData pdata;*/ + struct UPNParg * DeletePinholeArgs; + char * buffer; + int bufsize; + struct NameValueParserData pdata; + const char * resVal; + int ret; + + if(!uniqueID) + return UPNPCOMMAND_INVALID_ARGS; + + DeletePinholeArgs = calloc(2, sizeof(struct UPNParg)); + if(DeletePinholeArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + DeletePinholeArgs[0].elt = "UniqueID"; + DeletePinholeArgs[0].val = uniqueID; + buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "DeletePinhole", DeletePinholeArgs, &bufsize); + if(!buffer) + return UPNPCOMMAND_HTTP_ERROR; + /*DisplayNameValueList(buffer, bufsize);*/ + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + resVal = GetValueFromNameValueList(&pdata, "errorCode"); + if(resVal) + { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(resVal, "%d", &ret); + } + else + { + ret = UPNPCOMMAND_SUCCESS; + } + ClearNameValueList(&pdata); + free(DeletePinholeArgs); + return ret; +} + +MINIUPNP_LIBSPEC int +UPNP_CheckPinholeWorking(const char * controlURL, const char * servicetype, + const char * uniqueID, int * isWorking) +{ + struct NameValueParserData pdata; + struct UPNParg * CheckPinholeWorkingArgs; + char * buffer; + int bufsize; + char * p; + int ret = UPNPCOMMAND_UNKNOWN_ERROR; + + if(!uniqueID) + return UPNPCOMMAND_INVALID_ARGS; + + CheckPinholeWorkingArgs = calloc(4, sizeof(struct UPNParg)); + if(CheckPinholeWorkingArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + CheckPinholeWorkingArgs[0].elt = "UniqueID"; + CheckPinholeWorkingArgs[0].val = uniqueID; + buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "CheckPinholeWorking", CheckPinholeWorkingArgs, &bufsize); + if(!buffer) + return UPNPCOMMAND_HTTP_ERROR; + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + + p = GetValueFromNameValueList(&pdata, "IsWorking"); + if(p) + { + *isWorking=my_atoui(p); + ret = UPNPCOMMAND_SUCCESS; + } + else + *isWorking = 0; + + p = GetValueFromNameValueList(&pdata, "errorCode"); + if(p) + { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(p, "%d", &ret); + } + + ClearNameValueList(&pdata); + free(CheckPinholeWorkingArgs); + return ret; +} + +MINIUPNP_LIBSPEC int +UPNP_GetPinholePackets(const char * controlURL, const char * servicetype, + const char * uniqueID, int * packets) +{ + struct NameValueParserData pdata; + struct UPNParg * GetPinholePacketsArgs; + char * buffer; + int bufsize; + char * p; + int ret = UPNPCOMMAND_UNKNOWN_ERROR; + + if(!uniqueID) + return UPNPCOMMAND_INVALID_ARGS; + + GetPinholePacketsArgs = calloc(4, sizeof(struct UPNParg)); + if(GetPinholePacketsArgs == NULL) + return UPNPCOMMAND_MEM_ALLOC_ERROR; + GetPinholePacketsArgs[0].elt = "UniqueID"; + GetPinholePacketsArgs[0].val = uniqueID; + buffer = simpleUPnPcommand(-1, controlURL, servicetype, + "GetPinholePackets", GetPinholePacketsArgs, &bufsize); + if(!buffer) + return UPNPCOMMAND_HTTP_ERROR; + ParseNameValue(buffer, bufsize, &pdata); + free(buffer); buffer = NULL; + + p = GetValueFromNameValueList(&pdata, "PinholePackets"); + if(p) + { + *packets=my_atoui(p); + ret = UPNPCOMMAND_SUCCESS; + } + + p = GetValueFromNameValueList(&pdata, "errorCode"); + if(p) + { + ret = UPNPCOMMAND_UNKNOWN_ERROR; + sscanf(p, "%d", &ret); + } + + ClearNameValueList(&pdata); + free(GetPinholePacketsArgs); + return ret; +} + + diff --git a/ext/miniupnpc/upnpcommands.h b/ext/miniupnpc/upnpcommands.h new file mode 100644 index 000000000..22eda5e39 --- /dev/null +++ b/ext/miniupnpc/upnpcommands.h @@ -0,0 +1,348 @@ +/* $Id: upnpcommands.h,v 1.31 2015/07/21 13:16:55 nanard Exp $ */ +/* Miniupnp project : http://miniupnp.free.fr/ + * Author : Thomas Bernard + * Copyright (c) 2005-2015 Thomas Bernard + * This software is subject to the conditions detailed in the + * LICENCE file provided within this distribution */ +#ifndef UPNPCOMMANDS_H_INCLUDED +#define UPNPCOMMANDS_H_INCLUDED + +#include "upnpreplyparse.h" +#include "portlistingparse.h" +#include "miniupnpc_declspec.h" +#include "miniupnpctypes.h" + +/* MiniUPnPc return codes : */ +#define UPNPCOMMAND_SUCCESS (0) +#define UPNPCOMMAND_UNKNOWN_ERROR (-1) +#define UPNPCOMMAND_INVALID_ARGS (-2) +#define UPNPCOMMAND_HTTP_ERROR (-3) +#define UPNPCOMMAND_INVALID_RESPONSE (-4) +#define UPNPCOMMAND_MEM_ALLOC_ERROR (-5) + +#ifdef __cplusplus +extern "C" { +#endif + +MINIUPNP_LIBSPEC UNSIGNED_INTEGER +UPNP_GetTotalBytesSent(const char * controlURL, + const char * servicetype); + +MINIUPNP_LIBSPEC UNSIGNED_INTEGER +UPNP_GetTotalBytesReceived(const char * controlURL, + const char * servicetype); + +MINIUPNP_LIBSPEC UNSIGNED_INTEGER +UPNP_GetTotalPacketsSent(const char * controlURL, + const char * servicetype); + +MINIUPNP_LIBSPEC UNSIGNED_INTEGER +UPNP_GetTotalPacketsReceived(const char * controlURL, + const char * servicetype); + +/* UPNP_GetStatusInfo() + * status and lastconnerror are 64 byte buffers + * Return values : + * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR + * or a UPnP Error code */ +MINIUPNP_LIBSPEC int +UPNP_GetStatusInfo(const char * controlURL, + const char * servicetype, + char * status, + unsigned int * uptime, + char * lastconnerror); + +/* UPNP_GetConnectionTypeInfo() + * argument connectionType is a 64 character buffer + * Return Values : + * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR + * or a UPnP Error code */ +MINIUPNP_LIBSPEC int +UPNP_GetConnectionTypeInfo(const char * controlURL, + const char * servicetype, + char * connectionType); + +/* UPNP_GetExternalIPAddress() call the corresponding UPNP method. + * if the third arg is not null the value is copied to it. + * at least 16 bytes must be available + * + * Return values : + * 0 : SUCCESS + * NON ZERO : ERROR Either an UPnP error code or an unknown error. + * + * possible UPnP Errors : + * 402 Invalid Args - See UPnP Device Architecture section on Control. + * 501 Action Failed - See UPnP Device Architecture section on Control. */ +MINIUPNP_LIBSPEC int +UPNP_GetExternalIPAddress(const char * controlURL, + const char * servicetype, + char * extIpAdd); + +/* UPNP_GetLinkLayerMaxBitRates() + * call WANCommonInterfaceConfig:1#GetCommonLinkProperties + * + * return values : + * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR + * or a UPnP Error Code. */ +MINIUPNP_LIBSPEC int +UPNP_GetLinkLayerMaxBitRates(const char* controlURL, + const char* servicetype, + unsigned int * bitrateDown, + unsigned int * bitrateUp); + +/* UPNP_AddPortMapping() + * if desc is NULL, it will be defaulted to "libminiupnpc" + * remoteHost is usually NULL because IGD don't support it. + * + * Return values : + * 0 : SUCCESS + * NON ZERO : ERROR. Either an UPnP error code or an unknown error. + * + * List of possible UPnP errors for AddPortMapping : + * errorCode errorDescription (short) - Description (long) + * 402 Invalid Args - See UPnP Device Architecture section on Control. + * 501 Action Failed - See UPnP Device Architecture section on Control. + * 606 Action not authorized - The action requested REQUIRES authorization and + * the sender was not authorized. + * 715 WildCardNotPermittedInSrcIP - The source IP address cannot be + * wild-carded + * 716 WildCardNotPermittedInExtPort - The external port cannot be wild-carded + * 718 ConflictInMappingEntry - The port mapping entry specified conflicts + * with a mapping assigned previously to another client + * 724 SamePortValuesRequired - Internal and External port values + * must be the same + * 725 OnlyPermanentLeasesSupported - The NAT implementation only supports + * permanent lease times on port mappings + * 726 RemoteHostOnlySupportsWildcard - RemoteHost must be a wildcard + * and cannot be a specific IP address or DNS name + * 727 ExternalPortOnlySupportsWildcard - ExternalPort must be a wildcard and + * cannot be a specific port value + * 728 NoPortMapsAvailable - There are not enough free ports available to + * complete port mapping. + * 729 ConflictWithOtherMechanisms - Attempted port mapping is not allowed + * due to conflict with other mechanisms. + * 732 WildCardNotPermittedInIntPort - The internal port cannot be wild-carded + */ +MINIUPNP_LIBSPEC int +UPNP_AddPortMapping(const char * controlURL, const char * servicetype, + const char * extPort, + const char * inPort, + const char * inClient, + const char * desc, + const char * proto, + const char * remoteHost, + const char * leaseDuration); + +/* UPNP_AddAnyPortMapping() + * if desc is NULL, it will be defaulted to "libminiupnpc" + * remoteHost is usually NULL because IGD don't support it. + * + * Return values : + * 0 : SUCCESS + * NON ZERO : ERROR. Either an UPnP error code or an unknown error. + * + * List of possible UPnP errors for AddPortMapping : + * errorCode errorDescription (short) - Description (long) + * 402 Invalid Args - See UPnP Device Architecture section on Control. + * 501 Action Failed - See UPnP Device Architecture section on Control. + * 606 Action not authorized - The action requested REQUIRES authorization and + * the sender was not authorized. + * 715 WildCardNotPermittedInSrcIP - The source IP address cannot be + * wild-carded + * 716 WildCardNotPermittedInExtPort - The external port cannot be wild-carded + * 728 NoPortMapsAvailable - There are not enough free ports available to + * complete port mapping. + * 729 ConflictWithOtherMechanisms - Attempted port mapping is not allowed + * due to conflict with other mechanisms. + * 732 WildCardNotPermittedInIntPort - The internal port cannot be wild-carded + */ +MINIUPNP_LIBSPEC int +UPNP_AddAnyPortMapping(const char * controlURL, const char * servicetype, + const char * extPort, + const char * inPort, + const char * inClient, + const char * desc, + const char * proto, + const char * remoteHost, + const char * leaseDuration, + char * reservedPort); + +/* UPNP_DeletePortMapping() + * Use same argument values as what was used for AddPortMapping(). + * remoteHost is usually NULL because IGD don't support it. + * Return Values : + * 0 : SUCCESS + * NON ZERO : error. Either an UPnP error code or an undefined error. + * + * List of possible UPnP errors for DeletePortMapping : + * 402 Invalid Args - See UPnP Device Architecture section on Control. + * 606 Action not authorized - The action requested REQUIRES authorization + * and the sender was not authorized. + * 714 NoSuchEntryInArray - The specified value does not exist in the array */ +MINIUPNP_LIBSPEC int +UPNP_DeletePortMapping(const char * controlURL, const char * servicetype, + const char * extPort, const char * proto, + const char * remoteHost); + +/* UPNP_DeletePortRangeMapping() + * Use same argument values as what was used for AddPortMapping(). + * remoteHost is usually NULL because IGD don't support it. + * Return Values : + * 0 : SUCCESS + * NON ZERO : error. Either an UPnP error code or an undefined error. + * + * List of possible UPnP errors for DeletePortMapping : + * 606 Action not authorized - The action requested REQUIRES authorization + * and the sender was not authorized. + * 730 PortMappingNotFound - This error message is returned if no port + * mapping is found in the specified range. + * 733 InconsistentParameters - NewStartPort and NewEndPort values are not consistent. */ +MINIUPNP_LIBSPEC int +UPNP_DeletePortMappingRange(const char * controlURL, const char * servicetype, + const char * extPortStart, const char * extPortEnd, + const char * proto, + const char * manage); + +/* UPNP_GetPortMappingNumberOfEntries() + * not supported by all routers */ +MINIUPNP_LIBSPEC int +UPNP_GetPortMappingNumberOfEntries(const char* controlURL, + const char* servicetype, + unsigned int * num); + +/* UPNP_GetSpecificPortMappingEntry() + * retrieves an existing port mapping + * params : + * in extPort + * in proto + * in remoteHost + * out intClient (16 bytes) + * out intPort (6 bytes) + * out desc (80 bytes) + * out enabled (4 bytes) + * out leaseDuration (16 bytes) + * + * return value : + * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR + * or a UPnP Error Code. + * + * List of possible UPnP errors for _GetSpecificPortMappingEntry : + * 402 Invalid Args - See UPnP Device Architecture section on Control. + * 501 Action Failed - See UPnP Device Architecture section on Control. + * 606 Action not authorized - The action requested REQUIRES authorization + * and the sender was not authorized. + * 714 NoSuchEntryInArray - The specified value does not exist in the array. + */ +MINIUPNP_LIBSPEC int +UPNP_GetSpecificPortMappingEntry(const char * controlURL, + const char * servicetype, + const char * extPort, + const char * proto, + const char * remoteHost, + char * intClient, + char * intPort, + char * desc, + char * enabled, + char * leaseDuration); + +/* UPNP_GetGenericPortMappingEntry() + * params : + * in index + * out extPort (6 bytes) + * out intClient (16 bytes) + * out intPort (6 bytes) + * out protocol (4 bytes) + * out desc (80 bytes) + * out enabled (4 bytes) + * out rHost (64 bytes) + * out duration (16 bytes) + * + * return value : + * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR + * or a UPnP Error Code. + * + * Possible UPNP Error codes : + * 402 Invalid Args - See UPnP Device Architecture section on Control. + * 606 Action not authorized - The action requested REQUIRES authorization + * and the sender was not authorized. + * 713 SpecifiedArrayIndexInvalid - The specified array index is out of bounds + */ +MINIUPNP_LIBSPEC int +UPNP_GetGenericPortMappingEntry(const char * controlURL, + const char * servicetype, + const char * index, + char * extPort, + char * intClient, + char * intPort, + char * protocol, + char * desc, + char * enabled, + char * rHost, + char * duration); + +/* UPNP_GetListOfPortMappings() Available in IGD v2 + * + * + * Possible UPNP Error codes : + * 606 Action not Authorized + * 730 PortMappingNotFound - no port mapping is found in the specified range. + * 733 InconsistantParameters - NewStartPort and NewEndPort values are not + * consistent. + */ +MINIUPNP_LIBSPEC int +UPNP_GetListOfPortMappings(const char * controlURL, + const char * servicetype, + const char * startPort, + const char * endPort, + const char * protocol, + const char * numberOfPorts, + struct PortMappingParserData * data); + +/* IGD:2, functions for service WANIPv6FirewallControl:1 */ +MINIUPNP_LIBSPEC int +UPNP_GetFirewallStatus(const char * controlURL, + const char * servicetype, + int * firewallEnabled, + int * inboundPinholeAllowed); + +MINIUPNP_LIBSPEC int +UPNP_GetOutboundPinholeTimeout(const char * controlURL, const char * servicetype, + const char * remoteHost, + const char * remotePort, + const char * intClient, + const char * intPort, + const char * proto, + int * opTimeout); + +MINIUPNP_LIBSPEC int +UPNP_AddPinhole(const char * controlURL, const char * servicetype, + const char * remoteHost, + const char * remotePort, + const char * intClient, + const char * intPort, + const char * proto, + const char * leaseTime, + char * uniqueID); + +MINIUPNP_LIBSPEC int +UPNP_UpdatePinhole(const char * controlURL, const char * servicetype, + const char * uniqueID, + const char * leaseTime); + +MINIUPNP_LIBSPEC int +UPNP_DeletePinhole(const char * controlURL, const char * servicetype, const char * uniqueID); + +MINIUPNP_LIBSPEC int +UPNP_CheckPinholeWorking(const char * controlURL, const char * servicetype, + const char * uniqueID, int * isWorking); + +MINIUPNP_LIBSPEC int +UPNP_GetPinholePackets(const char * controlURL, const char * servicetype, + const char * uniqueID, int * packets); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/ext/miniupnpc/upnpdev.c b/ext/miniupnpc/upnpdev.c new file mode 100644 index 000000000..d89a9934c --- /dev/null +++ b/ext/miniupnpc/upnpdev.c @@ -0,0 +1,23 @@ +/* $Id: upnpdev.c,v 1.1 2015/08/28 12:14:19 nanard Exp $ */ +/* Project : miniupnp + * Web : http://miniupnp.free.fr/ + * Author : Thomas BERNARD + * copyright (c) 2005-2015 Thomas Bernard + * This software is subjet to the conditions detailed in the + * provided LICENSE file. */ +#include +#include "upnpdev.h" + +/* freeUPNPDevlist() should be used to + * free the chained list returned by upnpDiscover() */ +void freeUPNPDevlist(struct UPNPDev * devlist) +{ + struct UPNPDev * next; + while(devlist) + { + next = devlist->pNext; + free(devlist); + devlist = next; + } +} + diff --git a/ext/miniupnpc/upnpdev.h b/ext/miniupnpc/upnpdev.h new file mode 100644 index 000000000..f49fbe17c --- /dev/null +++ b/ext/miniupnpc/upnpdev.h @@ -0,0 +1,36 @@ +/* $Id: upnpdev.h,v 1.1 2015/08/28 12:14:19 nanard Exp $ */ +/* Project : miniupnp + * Web : http://miniupnp.free.fr/ + * Author : Thomas BERNARD + * copyright (c) 2005-2015 Thomas Bernard + * This software is subjet to the conditions detailed in the + * provided LICENSE file. */ +#ifndef UPNPDEV_H_INCLUDED +#define UPNPDEV_H_INCLUDED + +#include "miniupnpc_declspec.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct UPNPDev { + struct UPNPDev * pNext; + char * descURL; + char * st; + unsigned int scope_id; + char * usn; + char buffer[3]; +}; + +/* freeUPNPDevlist() + * free list returned by upnpDiscover() */ +MINIUPNP_LIBSPEC void freeUPNPDevlist(struct UPNPDev * devlist); + + +#ifdef __cplusplus +} +#endif + + +#endif /* UPNPDEV_H_INCLUDED */ diff --git a/ext/miniupnpc/upnperrors.c b/ext/miniupnpc/upnperrors.c new file mode 100644 index 000000000..7ab8ee96f --- /dev/null +++ b/ext/miniupnpc/upnperrors.c @@ -0,0 +1,107 @@ +/* $Id: upnperrors.c,v 1.8 2014/06/10 09:41:48 nanard Exp $ */ +/* Project : miniupnp + * Author : Thomas BERNARD + * copyright (c) 2007 Thomas Bernard + * All Right reserved. + * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * This software is subjet to the conditions detailed in the + * provided LICENCE file. */ +#include +#include "upnperrors.h" +#include "upnpcommands.h" +#include "miniupnpc.h" + +const char * strupnperror(int err) +{ + const char * s = NULL; + switch(err) { + case UPNPCOMMAND_SUCCESS: + s = "Success"; + break; + case UPNPCOMMAND_UNKNOWN_ERROR: + s = "Miniupnpc Unknown Error"; + break; + case UPNPCOMMAND_INVALID_ARGS: + s = "Miniupnpc Invalid Arguments"; + break; + case UPNPCOMMAND_INVALID_RESPONSE: + s = "Miniupnpc Invalid response"; + break; + case UPNPDISCOVER_SOCKET_ERROR: + s = "Miniupnpc Socket error"; + break; + case UPNPDISCOVER_MEMORY_ERROR: + s = "Miniupnpc Memory allocation error"; + break; + case 401: + s = "Invalid Action"; + break; + case 402: + s = "Invalid Args"; + break; + case 501: + s = "Action Failed"; + break; + case 606: + s = "Action not authorized"; + break; + case 701: + s = "PinholeSpaceExhausted"; + break; + case 702: + s = "FirewallDisabled"; + break; + case 703: + s = "InboundPinholeNotAllowed"; + break; + case 704: + s = "NoSuchEntry"; + break; + case 705: + s = "ProtocolNotSupported"; + break; + case 706: + s = "InternalPortWildcardingNotAllowed"; + break; + case 707: + s = "ProtocolWildcardingNotAllowed"; + break; + case 708: + s = "WildcardNotPermittedInSrcIP"; + break; + case 709: + s = "NoPacketSent"; + break; + case 713: + s = "SpecifiedArrayIndexInvalid"; + break; + case 714: + s = "NoSuchEntryInArray"; + break; + case 715: + s = "WildCardNotPermittedInSrcIP"; + break; + case 716: + s = "WildCardNotPermittedInExtPort"; + break; + case 718: + s = "ConflictInMappingEntry"; + break; + case 724: + s = "SamePortValuesRequired"; + break; + case 725: + s = "OnlyPermanentLeasesSupported"; + break; + case 726: + s = "RemoteHostOnlySupportsWildcard"; + break; + case 727: + s = "ExternalPortOnlySupportsWildcard"; + break; + default: + s = "UnknownError"; + break; + } + return s; +} diff --git a/ext/miniupnpc/upnperrors.h b/ext/miniupnpc/upnperrors.h new file mode 100644 index 000000000..3115aee5b --- /dev/null +++ b/ext/miniupnpc/upnperrors.h @@ -0,0 +1,26 @@ +/* $Id: upnperrors.h,v 1.6 2015/07/21 13:16:55 nanard Exp $ */ +/* (c) 2007-2015 Thomas Bernard + * All rights reserved. + * MiniUPnP Project. + * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * This software is subjet to the conditions detailed in the + * provided LICENCE file. */ +#ifndef UPNPERRORS_H_INCLUDED +#define UPNPERRORS_H_INCLUDED + +#include "miniupnpc_declspec.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* strupnperror() + * Return a string description of the UPnP error code + * or NULL for undefinded errors */ +MINIUPNP_LIBSPEC const char * strupnperror(int err); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/ext/miniupnpc/upnpreplyparse.c b/ext/miniupnpc/upnpreplyparse.c new file mode 100644 index 000000000..5de5796a3 --- /dev/null +++ b/ext/miniupnpc/upnpreplyparse.c @@ -0,0 +1,197 @@ +/* $Id: upnpreplyparse.c,v 1.19 2015/07/15 10:29:11 nanard Exp $ */ +/* MiniUPnP project + * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * (c) 2006-2015 Thomas Bernard + * This software is subject to the conditions detailed + * in the LICENCE file provided within the distribution */ + +#include +#include +#include + +#include "upnpreplyparse.h" +#include "minixml.h" + +static void +NameValueParserStartElt(void * d, const char * name, int l) +{ + struct NameValueParserData * data = (struct NameValueParserData *)d; + data->topelt = 1; + if(l>63) + l = 63; + memcpy(data->curelt, name, l); + data->curelt[l] = '\0'; + data->cdata = NULL; + data->cdatalen = 0; +} + +static void +NameValueParserEndElt(void * d, const char * name, int l) +{ + struct NameValueParserData * data = (struct NameValueParserData *)d; + struct NameValue * nv; + (void)name; + (void)l; + if(!data->topelt) + return; + if(strcmp(data->curelt, "NewPortListing") != 0) + { + int l; + /* standard case. Limited to n chars strings */ + l = data->cdatalen; + nv = malloc(sizeof(struct NameValue)); + if(nv == NULL) + { + /* malloc error */ +#ifdef DEBUG + fprintf(stderr, "%s: error allocating memory", + "NameValueParserEndElt"); +#endif /* DEBUG */ + return; + } + if(l>=(int)sizeof(nv->value)) + l = sizeof(nv->value) - 1; + strncpy(nv->name, data->curelt, 64); + nv->name[63] = '\0'; + if(data->cdata != NULL) + { + memcpy(nv->value, data->cdata, l); + nv->value[l] = '\0'; + } + else + { + nv->value[0] = '\0'; + } + nv->l_next = data->l_head; /* insert in list */ + data->l_head = nv; + } + data->cdata = NULL; + data->cdatalen = 0; + data->topelt = 0; +} + +static void +NameValueParserGetData(void * d, const char * datas, int l) +{ + struct NameValueParserData * data = (struct NameValueParserData *)d; + if(strcmp(data->curelt, "NewPortListing") == 0) + { + /* specific case for NewPortListing which is a XML Document */ + data->portListing = malloc(l + 1); + if(!data->portListing) + { + /* malloc error */ +#ifdef DEBUG + fprintf(stderr, "%s: error allocating memory", + "NameValueParserGetData"); +#endif /* DEBUG */ + return; + } + memcpy(data->portListing, datas, l); + data->portListing[l] = '\0'; + data->portListingLength = l; + } + else + { + /* standard case. */ + data->cdata = datas; + data->cdatalen = l; + } +} + +void +ParseNameValue(const char * buffer, int bufsize, + struct NameValueParserData * data) +{ + struct xmlparser parser; + data->l_head = NULL; + data->portListing = NULL; + data->portListingLength = 0; + /* init xmlparser object */ + parser.xmlstart = buffer; + parser.xmlsize = bufsize; + parser.data = data; + parser.starteltfunc = NameValueParserStartElt; + parser.endeltfunc = NameValueParserEndElt; + parser.datafunc = NameValueParserGetData; + parser.attfunc = 0; + parsexml(&parser); +} + +void +ClearNameValueList(struct NameValueParserData * pdata) +{ + struct NameValue * nv; + if(pdata->portListing) + { + free(pdata->portListing); + pdata->portListing = NULL; + pdata->portListingLength = 0; + } + while((nv = pdata->l_head) != NULL) + { + pdata->l_head = nv->l_next; + free(nv); + } +} + +char * +GetValueFromNameValueList(struct NameValueParserData * pdata, + const char * Name) +{ + struct NameValue * nv; + char * p = NULL; + for(nv = pdata->l_head; + (nv != NULL) && (p == NULL); + nv = nv->l_next) + { + if(strcmp(nv->name, Name) == 0) + p = nv->value; + } + return p; +} + +#if 0 +/* useless now that minixml ignores namespaces by itself */ +char * +GetValueFromNameValueListIgnoreNS(struct NameValueParserData * pdata, + const char * Name) +{ + struct NameValue * nv; + char * p = NULL; + char * pname; + for(nv = pdata->head.lh_first; + (nv != NULL) && (p == NULL); + nv = nv->entries.le_next) + { + pname = strrchr(nv->name, ':'); + if(pname) + pname++; + else + pname = nv->name; + if(strcmp(pname, Name)==0) + p = nv->value; + } + return p; +} +#endif + +/* debug all-in-one function + * do parsing then display to stdout */ +#ifdef DEBUG +void +DisplayNameValueList(char * buffer, int bufsize) +{ + struct NameValueParserData pdata; + struct NameValue * nv; + ParseNameValue(buffer, bufsize, &pdata); + for(nv = pdata.l_head; + nv != NULL; + nv = nv->l_next) + { + printf("%s = %s\n", nv->name, nv->value); + } + ClearNameValueList(&pdata); +} +#endif /* DEBUG */ + diff --git a/ext/miniupnpc/upnpreplyparse.h b/ext/miniupnpc/upnpreplyparse.h new file mode 100644 index 000000000..6badd15b2 --- /dev/null +++ b/ext/miniupnpc/upnpreplyparse.h @@ -0,0 +1,63 @@ +/* $Id: upnpreplyparse.h,v 1.19 2014/10/27 16:33:19 nanard Exp $ */ +/* MiniUPnP project + * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * (c) 2006-2013 Thomas Bernard + * This software is subject to the conditions detailed + * in the LICENCE file provided within the distribution */ + +#ifndef UPNPREPLYPARSE_H_INCLUDED +#define UPNPREPLYPARSE_H_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +struct NameValue { + struct NameValue * l_next; + char name[64]; + char value[128]; +}; + +struct NameValueParserData { + struct NameValue * l_head; + char curelt[64]; + char * portListing; + int portListingLength; + int topelt; + const char * cdata; + int cdatalen; +}; + +/* ParseNameValue() */ +void +ParseNameValue(const char * buffer, int bufsize, + struct NameValueParserData * data); + +/* ClearNameValueList() */ +void +ClearNameValueList(struct NameValueParserData * pdata); + +/* GetValueFromNameValueList() */ +char * +GetValueFromNameValueList(struct NameValueParserData * pdata, + const char * Name); + +#if 0 +/* GetValueFromNameValueListIgnoreNS() */ +char * +GetValueFromNameValueListIgnoreNS(struct NameValueParserData * pdata, + const char * Name); +#endif + +/* DisplayNameValueList() */ +#ifdef DEBUG +void +DisplayNameValueList(char * buffer, int bufsize); +#endif + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/ext/miniupnpc/wingenminiupnpcstrings.c b/ext/miniupnpc/wingenminiupnpcstrings.c new file mode 100644 index 000000000..50df06a76 --- /dev/null +++ b/ext/miniupnpc/wingenminiupnpcstrings.c @@ -0,0 +1,83 @@ +/* $Id: wingenminiupnpcstrings.c,v 1.4 2015/02/08 08:46:06 nanard Exp $ */ +/* Project: miniupnp + * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ + * Author: Thomas Bernard + * Copyright (c) 2005-2015 Thomas Bernard + * This software is subjects to the conditions detailed + * in the LICENSE file provided within this distribution */ +#include +#include + +/* This program display the Windows version and is used to + * generate the miniupnpcstrings.h + * wingenminiupnpcstrings miniupnpcstrings.h.in miniupnpcstrings.h + */ +int main(int argc, char * * argv) { + char buffer[256]; + OSVERSIONINFO osvi; + FILE * fin; + FILE * fout; + int n; + char miniupnpcVersion[32]; + /* dwMajorVersion : + The major version number of the operating system. For more information, see Remarks. + dwMinorVersion : + The minor version number of the operating system. For more information, see Remarks. + dwBuildNumber : + The build number of the operating system. + dwPlatformId + The operating system platform. This member can be the following value. + szCSDVersion + A null-terminated string, such as "Service Pack 3", that indicates the + latest Service Pack installed on the system. If no Service Pack has + been installed, the string is empty. + */ + ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + + GetVersionEx(&osvi); + + printf("Windows %lu.%lu Build %lu %s\n", + osvi.dwMajorVersion, osvi.dwMinorVersion, + osvi.dwBuildNumber, (const char *)&(osvi.szCSDVersion)); + + fin = fopen("VERSION", "r"); + fgets(miniupnpcVersion, sizeof(miniupnpcVersion), fin); + fclose(fin); + for(n = 0; n < sizeof(miniupnpcVersion); n++) { + if(miniupnpcVersion[n] < ' ') + miniupnpcVersion[n] = '\0'; + } + printf("MiniUPnPc version %s\n", miniupnpcVersion); + + if(argc >= 3) { + fin = fopen(argv[1], "r"); + if(!fin) { + fprintf(stderr, "Cannot open %s for reading.\n", argv[1]); + return 1; + } + fout = fopen(argv[2], "w"); + if(!fout) { + fprintf(stderr, "Cannot open %s for writing.\n", argv[2]); + fclose(fin); + return 1; + } + n = 0; + while(fgets(buffer, sizeof(buffer), fin)) { + if(0 == memcmp(buffer, "#define OS_STRING \"OS/version\"", 30)) { + sprintf(buffer, "#define OS_STRING \"MSWindows/%ld.%ld.%ld\"\n", + osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.dwBuildNumber); + } else if(0 == memcmp(buffer, "#define MINIUPNPC_VERSION_STRING \"version\"", 42)) { + sprintf(buffer, "#define MINIUPNPC_VERSION_STRING \"%s\"\n", + miniupnpcVersion); + } + /*fputs(buffer, stdout);*/ + fputs(buffer, fout); + n++; + } + fclose(fin); + fclose(fout); + printf("%d lines written to %s.\n", n, argv[2]); + } + return 0; +} diff --git a/make-mac.mk b/make-mac.mk index 6ea238597..d30fc5bd2 100644 --- a/make-mac.mk +++ b/make-mac.mk @@ -13,15 +13,15 @@ ARCH_FLAGS=-arch x86_64 include objects.mk OBJS+=osdep/OSXEthernetTap.o -# Comment out to disable building against shipped libminiupnpc binary for Mac -ZT_USE_MINIUPNPC?=1 - # Disable codesign since open source users will not have ZeroTier's certs CODESIGN=echo PRODUCTSIGN=echo CODESIGN_APP_CERT= CODESIGN_INSTALLER_CERT= +# Build with libminiupnpc by default for Mac +ZT_USE_MINIUPNPC?=1 + # For internal use only -- signs everything with ZeroTier's developer cert ifeq ($(ZT_OFFICIAL_RELEASE),1) DEFS+=-DZT_OFFICIAL_RELEASE -DZT_AUTO_UPDATE @@ -34,7 +34,7 @@ endif # Build with ZT_ENABLE_CLUSTER=1 to build with cluster support ifeq ($(ZT_ENABLE_CLUSTER),1) - DEFS+=-DZT_ENABLE_CLUSTER + DEFS+=-DZT_ENABLE_CLUSTER endif ifeq ($(ZT_AUTO_UPDATE),1) @@ -43,7 +43,7 @@ endif ifeq ($(ZT_USE_MINIUPNPC),1) DEFS+=-DZT_USE_MINIUPNPC - LIBS+=ext/bin/miniupnpc/mac-x64/libminiupnpc.a + LIBS+=ext/miniupnpc/libminiupnpc.a OBJS+=osdep/UPNPClient.o endif @@ -73,6 +73,9 @@ CXXFLAGS=$(CFLAGS) -fno-rtti all: one one: $(OBJS) one.o +ifeq ($(ZT_USE_MINIUPNPC),1) + cd ext/miniupnpc ; make clean ; make 'CFLAGS=-D_DARWIN_C_SOURCE -O2 -fstack-protector -fPIE -flto -pthread -mmacosx-version-min=10.7 -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE' -j 2 libminiupnpc.a +endif $(CXX) $(CXXFLAGS) -o zerotier-one $(OBJS) one.o $(LIBS) $(STRIP) zerotier-one ln -sf zerotier-one zerotier-idtool @@ -99,6 +102,7 @@ official: FORCE clean: rm -rf *.dSYM build-* *.pkg *.dmg *.o node/*.o controller/*.o service/*.o osdep/*.o ext/http-parser/*.o ext/lz4/*.o ext/json-parser/*.o zerotier-one zerotier-idtool zerotier-selftest zerotier-cli ZeroTierOneInstaller-* mkworld + cd ext/miniupnpc ; make clean # For those building from source -- installs signed binary tap driver in system ZT home install-mac-tap: FORCE From dc8edea0c62a39b147c12a037f42df3cabc232c4 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Nov 2015 18:33:52 -0800 Subject: [PATCH 302/314] Linux make rules to make libminiupnpc from source. --- make-linux.mk | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/make-linux.mk b/make-linux.mk index 339b548d1..d4414e38a 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -43,23 +43,7 @@ endif ifeq ($(ZT_USE_MINIUPNPC),1) DEFS+=-DZT_USE_MINIUPNPC -ifeq ($(UNAME_M),armv6l) - MINIUPNPC_LIB=ext/bin/miniupnpc/linux-arm32/libminiupnpc.a -endif -ifeq ($(UNAME_M),armv7l) - MINIUPNPC_LIB=ext/bin/miniupnpc/linux-arm32/libminiupnpc.a -endif -ifeq ($(UNAME_M),x86_64) - MINIUPNPC_LIB=ext/bin/miniupnpc/linux-x64/libminiupnpc.a -endif -ifeq ($(UNAME_M),i386) - MINIUPNPC_LIB=ext/bin/miniupnpc/linux-x86/libminiupnpc.a -endif -ifeq ($(UNAME_M),i686) - MINIUPNPC_LIB=ext/bin/miniupnpc/linux-x86/libminiupnpc.a -endif - MINIUPNPC_LIB?=-lminiupnpc - LDLIBS+=$(MINIUPNPC_LIB) + LDLIBS+=ext/miniupnpc/libminiupnpc.a OBJS+=osdep/UPNPClient.o endif @@ -106,6 +90,9 @@ endif all: one one: $(OBJS) one.o +ifeq ($(ZT_USE_MINIUPNPC),1) + cd ext/miniupnpc ; make clean ; make 'CFLAGS=-O2 -fstack-protector -fPIE -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600' -j 2 libminiupnpc.a +endif $(CXX) $(CXXFLAGS) $(LDFLAGS) -o zerotier-one $(OBJS) one.o $(LDLIBS) $(STRIP) zerotier-one ln -sf zerotier-one zerotier-idtool @@ -120,6 +107,7 @@ installer: one FORCE clean: rm -rf *.o node/*.o controller/*.o osdep/*.o service/*.o ext/http-parser/*.o ext/lz4/*.o ext/json-parser/*.o zerotier-one zerotier-idtool zerotier-cli zerotier-selftest build-* ZeroTierOneInstaller-* *.deb *.rpm + cd ext/miniupnpc ; make clean debug: FORCE make ZT_DEBUG=1 one From 0f5fb48a0ba70ced52aa69ca7ff00824cf8fb829 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Nov 2015 19:04:04 -0800 Subject: [PATCH 303/314] Turns out it wasn't hard to add miniupnpc to the VS2012 project and just have it build with the rest of the code. --- ext/bin/miniupnpc/Changelog.txt | 633 ------------------ ext/bin/miniupnpc/LICENSE | 27 - ext/bin/miniupnpc/README.md | 4 - ext/bin/miniupnpc/VERSION | 1 - .../miniupnpc/include/miniupnpc/codelength.h | 54 -- .../include/miniupnpc/connecthostport.h | 18 - .../include/miniupnpc/igd_desc_parse.h | 49 -- .../miniupnpc/include/miniupnpc/minisoap.h | 15 - .../miniupnpc/include/miniupnpc/minissdpc.h | 15 - .../miniupnpc/include/miniupnpc/miniupnpc.h | 154 ----- .../include/miniupnpc/miniupnpc_declspec.h | 21 - .../include/miniupnpc/miniupnpcstrings.h | 23 - .../include/miniupnpc/miniupnpctypes.h | 19 - .../miniupnpc/include/miniupnpc/miniwget.h | 30 - ext/bin/miniupnpc/include/miniupnpc/minixml.h | 37 - .../include/miniupnpc/portlistingparse.h | 65 -- .../miniupnpc/include/miniupnpc/receivedata.h | 19 - .../include/miniupnpc/upnpcommands.h | 348 ---------- .../miniupnpc/include/miniupnpc/upnperrors.h | 26 - .../include/miniupnpc/upnpreplyparse.h | 63 -- ext/bin/miniupnpc/windows-x64/miniupnpc.lib | Bin 731616 -> 0 bytes ext/bin/miniupnpc/windows-x86/miniupnpc.lib | Bin 702786 -> 0 bytes ext/installfiles/windows/ZeroTier One.aip | 2 +- ext/miniupnpc/connecthostport.c | 2 + ext/miniupnpc/minisoap.c | 7 + ext/miniupnpc/minissdpc.c | 2 + ext/miniupnpc/miniupnpc.c | 1 + ext/miniupnpc/miniwget.c | 7 + ext/miniupnpc/minixml.c | 1 + ext/miniupnpc/minixmlvalid.c | 1 + ext/miniupnpc/upnpcommands.c | 1 + ext/miniupnpc/upnpreplyparse.c | 1 + osdep/UPNPClient.cpp | 6 +- windows/ZeroTierOne/ZeroTierOne.vcxproj | 45 +- .../ZeroTierOne/ZeroTierOne.vcxproj.filters | 93 +++ 35 files changed, 157 insertions(+), 1633 deletions(-) delete mode 100644 ext/bin/miniupnpc/Changelog.txt delete mode 100644 ext/bin/miniupnpc/LICENSE delete mode 100644 ext/bin/miniupnpc/README.md delete mode 100644 ext/bin/miniupnpc/VERSION delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/codelength.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/connecthostport.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/igd_desc_parse.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/minisoap.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/minissdpc.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/miniupnpc.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/miniupnpc_declspec.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/miniupnpcstrings.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/miniupnpctypes.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/miniwget.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/minixml.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/portlistingparse.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/receivedata.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/upnpcommands.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/upnperrors.h delete mode 100644 ext/bin/miniupnpc/include/miniupnpc/upnpreplyparse.h delete mode 100644 ext/bin/miniupnpc/windows-x64/miniupnpc.lib delete mode 100644 ext/bin/miniupnpc/windows-x86/miniupnpc.lib diff --git a/ext/bin/miniupnpc/Changelog.txt b/ext/bin/miniupnpc/Changelog.txt deleted file mode 100644 index bb2abb7ee..000000000 --- a/ext/bin/miniupnpc/Changelog.txt +++ /dev/null @@ -1,633 +0,0 @@ -$Id: Changelog.txt,v 1.208 2015/07/15 12:18:59 nanard Exp $ -miniUPnP client Changelog. - -2015/07/15: - Check malloc/calloc - -2015/06/16: - update getDevicesFromMiniSSDPD() to process longer minissdpd - responses - -2015/05/22: - add searchalltypes param to upnpDiscoverDevices() - increments API_VERSION to 13 - -2015/04/30: - upnpc: output version on the terminal - -2015/04/27: - _BSD_SOURCE is deprecated in favor of _DEFAULT_SOURCE - fix CMakeLists.txt COMPILE_DEFINITIONS - fix getDevicesFromMiniSSDPD() not setting scope_id - improve -r command of upnpc command line tool - -2014/11/17: - search all : - upnpDiscoverDevices() / upnpDiscoverAll() functions - listdevices executable - increment API_VERSION to 12 - validate igd_desc_parse - -2014/11/13: - increment API_VERSION to 11 - -2014/11/05: - simplified function GetUPNPUrls() - -2014/09/11: - use remoteHost arg of DeletePortMapping - -2014/09/06: - Fix python3 build - -2014/07/01: - Fix parsing of IGD2 root descriptions - -2014/06/10: - rename LIBSPEC to MINIUPNP_LIBSPEC - -2014/05/15: - Add support for IGD2 AddAnyPortMapping and DeletePortMappingRange - -2014/02/05: - handle EINPROGRESS after connect() - -2014/02/03: - minixml now handle XML comments - -VERSION 1.9 : released 2014/01/31 - -2014/01/31: - added argument remoteHost to UPNP_GetSpecificPortMappingEntry() - increment API_VERSION to 10 - -2013/12/09: - --help and -h arguments in upnpc.c - -2013/10/07: - fixed potential buffer overrun in miniwget.c - Modified UPNP_GetValidIGD() to check for ExternalIpAddress - -2013/08/01: - define MAXHOSTNAMELEN if not already done - -2013/06/06: - update upnpreplyparse to allow larger values (128 chars instead of 64) - -2013/05/14: - Update upnpreplyparse to take into account "empty" elements - validate upnpreplyparse.c code with "make check" - -2013/05/03: - Fix Solaris build thanks to Maciej MaÅ‚ecki - -2013/04/27: - Fix testminiwget.sh for BSD - -2013/03/23: - Fixed Makefile for *BSD - -2013/03/11: - Update Makefile to use JNAerator version 0.11 - -2013/02/11: - Fix testminiwget.sh for use with dash - Use $(DESTDIR) in Makefile - -VERSION 1.8 : released 2013/02/06 - -2012/10/16: - fix testminiwget with no IPv6 support - -2012/09/27: - Rename all include guards to not clash with C99 - (7.1.3 Reserved identifiers). - -2012/08/30: - Added -e option to upnpc program (set description for port mappings) - -2012/08/29: - Python 3 support (thanks to Christopher Foo) - -2012/08/11: - Fix a memory link in UPNP_GetValidIGD() - Try to handle scope id in link local IPv6 URL under MS Windows - -2012/07/20: - Disable HAS_IP_MREQN on DragonFly BSD - -2012/06/28: - GetUPNPUrls() now inserts scope into link-local IPv6 addresses - -2012/06/23: - More error return checks in upnpc.c - #define MINIUPNPC_GET_SRC_ADDR enables receivedata() to get scope_id - parseURL() now parses IPv6 addresses scope - new parameter for miniwget() : IPv6 address scope - increment API_VERSION to 9 - -2012/06/20: - fixed CMakeLists.txt - -2012/05/29 - Improvements in testminiwget.sh - -VERSION 1.7 : released 2012/05/24 - -2012/05/01: - Cleanup settings of CFLAGS in Makefile - Fix signed/unsigned integer comparaisons - -2012/04/20: - Allow to specify protocol with TCP or UDP for -A option - -2012/04/09: - Only try to fetch XML description once in UPNP_GetValidIGD() - Added -ansi flag to compilation, and fixed C++ comments to ANSI C comments. - -2012/04/05: - minor improvements to minihttptestserver.c - -2012/03/15: - upnperrors.c returns valid error string for unrecognized error codes - -2012/03/08: - make minihttptestserver listen on loopback interface instead of 0.0.0.0 - -2012/01/25: - Maven installation thanks to Alexey Kuznetsov - -2012/01/21: - Replace WIN32 macro by _WIN32 - -2012/01/19: - Fixes in java wrappers thanks to Alexey Kuznetsov : - https://github.com/axet/miniupnp/tree/fix-javatest/miniupnpc - Make and install .deb packages (python) thanks to Alexey Kuznetsov : - https://github.com/axet/miniupnp/tree/feature-debbuild/miniupnpc - -2012/01/07: - The multicast interface can now be specified by name with IPv4. - -2012/01/02: - Install man page - -2011/11/25: - added header to Port Mappings list in upnpc.c - -2011/10/09: - Makefile : make clean now removes jnaerator generated files. - MINIUPNPC_VERSION in miniupnpc.h (updated by make) - -2011/09/12: - added rootdescURL to UPNPUrls structure. - -VERSION 1.6 : released 2011/07/25 - -2011/07/25: - Update doc for version 1.6 release - -2011/06/18: - Fix for windows in miniwget.c - -2011/06/04: - display remote host in port mapping listing - -2011/06/03: - Fix in make install : there were missing headers - -2011/05/26: - Fix the socket leak in miniwget thanks to Richard Marsh. - Permit to add leaseduration in -a command. Display lease duration. - -2011/05/15: - Try both LinkLocal and SiteLocal multicast address for SSDP in IPv6 - -2011/05/09: - add a test in testminiwget.sh. - more error checking in miniwget.c - -2011/05/06: - Adding some tool to test and validate miniwget.c - simplified and debugged miniwget.c - -2011/04/11: - moving ReceiveData() to a receivedata.c file. - parsing presentation url - adding IGD v2 WANIPv6FirewallControl commands - -2011/04/10: - update of miniupnpcmodule.c - comments in miniwget.c, update in testminiwget - Adding errors codes from IGD v2 - new functions in upnpc.c for IGD v2 - -2011/04/09: - Support for litteral ip v6 address in miniwget - -2011/04/08: - Adding support for urn:schemas-upnp-org:service:WANIPv6FirewallControl:1 - Updating APIVERSION - Supporting IPV6 in upnpDiscover() - Adding a -6 option to upnpc command line tool - -2011/03/18: - miniwget/parseURL() : return an error when url param is null. - fixing GetListOfPortMappings() - -2011/03/14: - upnpDiscover() now reporting an error code. - improvements in comments. - -2011/03/11: - adding miniupnpcstrings.h.cmake and CMakeLists.txt files. - -2011/02/15: - Implementation of GetListOfPortMappings() - -2011/02/07: - updates to minixml to support character data starting with spaces - minixml now support CDATA - upnpreplyparse treats specificaly - change in simpleUPnPcommand to return the buffer (simplification) - -2011/02/06: - Added leaseDuration argument to AddPortMapping() - Starting to implement GetListOfPortMappings() - -2011/01/11: - updating wingenminiupnpcstrings.c - -2011/01/04: - improving updateminiupnpcstrings.sh - -VERSION 1.5 : released 2011/01/01 - -2010/12/21: - use NO_GETADDRINFO macro to disable the use of getaddrinfo/freeaddrinfo - -2010/12/11: - Improvements on getHTTPResponse() code. - -2010/12/09: - new code for miniwget that handle Chunked transfer encoding - using getHTTPResponse() in SOAP call code - Adding MANIFEST.in for 'python setup.py bdist_rpm' - -2010/11/25: - changes to minissdpc.c to compile under Win32. - see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=729 - -2010/09/17: - Various improvement to Makefile from MichaÅ‚ Górny - -2010/08/05: - Adding the script "external-ip.sh" from Reuben Hawkins - -2010/06/09: - update to python module to match modification made on 2010/04/05 - update to Java test code to match modification made on 2010/04/05 - all UPNP_* function now return an error if the SOAP request failed - at HTTP level. - -2010/04/17: - Using GetBestRoute() under win32 in order to find the - right interface to use. - -2010/04/12: - Retrying with HTTP/1.1 if HTTP/1.0 failed. see - http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=1703 - -2010/04/07: - avoid returning duplicates in upnpDiscover() - -2010/04/05: - Create a connecthostport.h/.c with connecthostport() function - and use it in miniwget and miniupnpc. - Use getnameinfo() instead of inet_ntop or inet_ntoa - Work to make miniupnpc IPV6 compatible... - Add java test code. - Big changes in order to support device having both WANIPConnection - and WANPPPConnection. - -2010/04/04: - Use getaddrinfo() instead of gethostbyname() in miniwget. - -2010/01/06: - #define _DARWIN_C_SOURCE for Mac OS X - -2009/12/19: - Improve MinGW32 build - -2009/12/11: - adding a MSVC9 project to build the static library and executable - -2009/12/10: - Fixing some compilation stuff for Windows/MinGW - -2009/12/07: - adaptations in Makefile and updateminiupnpcstring.sh for AmigaOS - some fixes for Windows when using virtual ethernet adapters (it is the - case with VMWare installed). - -2009/12/04: - some fixes for AmigaOS compilation - Changed HTTP version to HTTP/1.0 for Soap too (to prevent chunked - transfer encoding) - -2009/12/03: - updating printIDG and testigddescparse.c for debug. - modifications to compile under AmigaOS - adding a testminiwget program - Changed miniwget to advertise itself as HTTP/1.0 to prevent chunked - transfer encoding - -2009/11/26: - fixing updateminiupnpcstrings.sh to take into account - which command that does not return an error code. - -VERSION 1.4 : released 2009/10/30 - -2009/10/16: - using Py_BEGIN_ALLOW_THREADS and Py_END_ALLOW_THREADS in python module. - -2009/10/10: - Some fixes for compilation under Solaris - compilation fixes : http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=1464 - -2009/09/21: - fixing the code to ignore EINTR during connect() calls. - -2009/08/07: - Set socket timeout for connect() - Some cleanup in miniwget.c - -2009/08/04: - remove multiple redirections with -d in upnpc.c - Print textual error code in upnpc.c - Ignore EINTR during the connect() and poll() calls. - -2009/07/29: - fix in updateminiupnpcstrings.sh if OS name contains "/" - Sending a correct value for MX: field in SSDP request - -2009/07/20: - Change the Makefile to compile under Mac OS X - Fixed a stackoverflow in getDevicesFromMiniSSDPD() - -2009/07/09: - Compile under Haiku - generate miniupnpcstrings.h.in from miniupnpcstrings.h - -2009/06/04: - patching to compile under CygWin and cross compile for minGW - -VERSION 1.3 : - -2009/04/17: - updating python module - Use strtoull() when using C99 - -2009/02/28: - Fixed miniwget.c for compiling under sun - -2008/12/18: - cleanup in Makefile (thanks to Paul de Weerd) - minissdpc.c : win32 compatibility - miniupnpc.c : changed xmlns prefix from 'm' to 'u' - Removed NDEBUG (using DEBUG) - -2008/10/14: - Added the ExternalHost argument to DeletePortMapping() - -2008/10/11: - Added the ExternalHost argument to AddPortMapping() - Put a correct User-Agent: header in HTTP requests. - -VERSION 1.2 : - -2008/10/07: - Update docs - -2008/09/25: - Integrated sameport patch from Dario Meloni : Added a "sameport" - argument to upnpDiscover(). - -2008/07/18: - small modif to make Clang happy :) - -2008/07/17: - #define SOAPPREFIX "s" in miniupnpc.c in order to remove SOAP-ENV... - -2008/07/14: - include declspec.h in installation (to /usr/include/miniupnpc) - -VERSION 1.1 : - -2008/07/04: - standard options for install/ln instead of gnu-specific stuff. - -2008/07/03: - now builds a .dll and .lib with win32. (mingw32) - -2008/04/28: - make install now install the binary of the upnpc tool - -2008/04/27: - added testupnpigd.py - added error strings for miniupnpc "internal" errors - improved python module error/exception reporting. - -2008/04/23: - Completely rewrite igd_desc_parse.c in order to be compatible with - Linksys WAG200G - Added testigddescparse - updated python module - -VERSION 1.0 : - -2008/02/21: - put some #ifdef DEBUG around DisplayNameValueList() - -2008/02/18: - Improved error reporting in upnpcommands.c - UPNP_GetStatusInfo() returns LastConnectionError - -2008/02/16: - better error handling in minisoap.c - improving display of "valid IGD found" in upnpc.c - -2008/02/03: - Fixing UPNP_GetValidIGD() - improved make install :) - -2007/12/22: - Adding upnperrors.c/h to provide a strupnperror() function - used to translate UPnP error codes to string. - -2007/12/19: - Fixing getDevicesFromMiniSSDPD() - improved error reporting of UPnP functions - -2007/12/18: - It is now possible to specify a different location for MiniSSDPd socket. - working with MiniSSDPd is now more efficient. - python module improved. - -2007/12/16: - improving error reporting - -2007/12/13: - Try to improve compatibility by using HTTP/1.0 instead of 1.1 and - XML a bit different for SOAP. - -2007/11/25: - fixed select() call for linux - -2007/11/15: - Added -fPIC to CFLAG for better shared library code. - -2007/11/02: - Fixed a potential socket leak in miniwget2() - -2007/10/16: - added a parameter to upnpDiscover() in order to allow the use of another - interface than the default multicast interface. - -2007/10/12: - Fixed the creation of symbolic link in Makefile - -2007/10/08: - Added man page - -2007/10/02: - fixed memory bug in GetUPNPUrls() - -2007/10/01: - fixes in the Makefile - Added UPNP_GetIGDFromUrl() and adapted the sample program accordingly. - Added SONAME in the shared library to please debian :) - fixed MS Windows compilation (minissdpd is not available under MS Windows). - -2007/09/25: - small change to Makefile to be able to install in a different location - (default is /usr) - -2007/09/24: - now compiling both shared and static library - -2007/09/19: - Cosmetic changes on upnpc.c - -2007/09/02: - adapting to new miniSSDPd (release version ?) - -2007/08/31: - Usage of miniSSDPd to skip discovery process. - -2007/08/27: - fixed python module to allow compilation with Python older than Python 2.4 - -2007/06/12: - Added a python module. - -2007/05/19: - Fixed compilation under MinGW - -2007/05/15: - fixed a memory leak in AddPortMapping() - Added testupnpreplyparse executable to check the parsing of - upnp soap messages - minixml now ignore namespace prefixes. - -2007/04/26: - upnpc now displays external ip address with -s or -l - -2007/04/11: - changed MINIUPNPC_URL_MAXSIZE to 128 to accomodate the "BT Voyager 210" - -2007/03/19: - cleanup in miniwget.c - -2007/03/01: - Small typo fix... - -2007/01/30: - Now parsing the HTTP header from SOAP responses in order to - get content-length value. - -2007/01/29: - Fixed the Soap Query to speedup the HTTP request. - added some Win32 DLL stuff... - -2007/01/27: - Fixed some WIN32 compatibility issues - -2006/12/14: - Added UPNPIGD_IsConnected() function in miniupnp.c/.h - Added UPNP_GetValidIGD() in miniupnp.c/.h - cleaned upnpc.c main(). now using UPNP_GetValidIGD() - -2006/12/07: - Version 1.0-RC1 released - -2006/12/03: - Minor changes to compile under SunOS/Solaris - -2006/11/30: - made a minixml parser validator program - updated minixml to handle attributes correctly - -2006/11/22: - Added a -r option to the upnpc sample thanks to Alexander Hubmann. - -2006/11/19: - Cleanup code to make it more ANSI C compliant - -2006/11/10: - detect and display local lan address. - -2006/11/04: - Packets and Bytes Sent/Received are now unsigned int. - -2006/11/01: - Bug fix thanks to Giuseppe D'Angelo - -2006/10/31: - C++ compatibility for .h files. - Added a way to get ip Address on the LAN used to reach the IGD. - -2006/10/25: - Added M-SEARCH to the services in the discovery process. - -2006/10/22: - updated the Makefile to use makedepend, added a "make install" - update Makefile - -2006/10/20: - fixing the description url parsing thanks to patch sent by - Wayne Dawe. - Fixed/translated some comments. - Implemented a better discover process, first looking - for IGD then for root devices (as some devices only reply to - M-SEARCH for root devices). - -2006/09/02: - added freeUPNPDevlist() function. - -2006/08/04: - More command line arguments checking - -2006/08/01: - Added the .bat file to compile under Win32 with minGW32 - -2006/07/31: - Fixed the rootdesc parser (igd_desc_parse.c) - -2006/07/20: - parseMSEARCHReply() is now returning the ST: line as well - starting changes to detect several UPnP devices on the network - -2006/07/19: - using GetCommonLinkProperties to get down/upload bitrate - diff --git a/ext/bin/miniupnpc/LICENSE b/ext/bin/miniupnpc/LICENSE deleted file mode 100644 index cb5a06044..000000000 --- a/ext/bin/miniupnpc/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -MiniUPnPc -Copyright (c) 2005-2015, Thomas BERNARD -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - diff --git a/ext/bin/miniupnpc/README.md b/ext/bin/miniupnpc/README.md deleted file mode 100644 index c3d538ba9..000000000 --- a/ext/bin/miniupnpc/README.md +++ /dev/null @@ -1,4 +0,0 @@ -libminiupnpc binaries -====== - -This is a binary build of [libminiupnpc](http://miniupnp.free.fr) for certain architectures to faciliate easy building. Where possible the build flags were set for improved security by enabling options like stack protector (a.k.a. stack canary), ASLR support, etc. diff --git a/ext/bin/miniupnpc/VERSION b/ext/bin/miniupnpc/VERSION deleted file mode 100644 index 2e0e38c63..000000000 --- a/ext/bin/miniupnpc/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.9 diff --git a/ext/bin/miniupnpc/include/miniupnpc/codelength.h b/ext/bin/miniupnpc/include/miniupnpc/codelength.h deleted file mode 100644 index f5f8e30f9..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/codelength.h +++ /dev/null @@ -1,54 +0,0 @@ -/* $Id: codelength.h,v 1.5 2015/07/09 12:40:18 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas BERNARD - * copyright (c) 2005-2015 Thomas Bernard - * This software is subjet to the conditions detailed in the - * provided LICENCE file. */ -#ifndef CODELENGTH_H_INCLUDED -#define CODELENGTH_H_INCLUDED - -/* Encode length by using 7bit per Byte : - * Most significant bit of each byte specifies that the - * following byte is part of the code */ - -/* n : unsigned - * p : unsigned char * - */ -#define DECODELENGTH(n, p) n = 0; \ - do { n = (n << 7) | (*p & 0x7f); } \ - while((*(p++)&0x80) && (n<(1<<25))); - -/* n : unsigned - * READ : function/macro to read one byte (unsigned char) - */ -#define DECODELENGTH_READ(n, READ) \ - n = 0; \ - do { \ - unsigned char c; \ - READ(c); \ - n = (n << 7) | (c & 0x07f); \ - if(!(c&0x80)) break; \ - } while(n<(1<<25)); - -/* n : unsigned - * p : unsigned char * - * p_limit : unsigned char * - */ -#define DECODELENGTH_CHECKLIMIT(n, p, p_limit) \ - n = 0; \ - do { \ - if((p) >= (p_limit)) break; \ - n = (n << 7) | (*(p) & 0x7f); \ - } while((*((p)++)&0x80) && (n<(1<<25))); - - -/* n : unsigned - * p : unsigned char * - */ -#define CODELENGTH(n, p) if(n>=268435456) *(p++) = (n >> 28) | 0x80; \ - if(n>=2097152) *(p++) = (n >> 21) | 0x80; \ - if(n>=16384) *(p++) = (n >> 14) | 0x80; \ - if(n>=128) *(p++) = (n >> 7) | 0x80; \ - *(p++) = n & 0x7f; - -#endif /* CODELENGTH_H_INCLUDED */ diff --git a/ext/bin/miniupnpc/include/miniupnpc/connecthostport.h b/ext/bin/miniupnpc/include/miniupnpc/connecthostport.h deleted file mode 100644 index 56941d6fa..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/connecthostport.h +++ /dev/null @@ -1,18 +0,0 @@ -/* $Id: connecthostport.h,v 1.3 2012/09/27 15:42:10 nanard Exp $ */ -/* Project: miniupnp - * http://miniupnp.free.fr/ - * Author: Thomas Bernard - * Copyright (c) 2010-2012 Thomas Bernard - * This software is subjects to the conditions detailed - * in the LICENCE file provided within this distribution */ -#ifndef CONNECTHOSTPORT_H_INCLUDED -#define CONNECTHOSTPORT_H_INCLUDED - -/* connecthostport() - * return a socket connected (TCP) to the host and port - * or -1 in case of error */ -int connecthostport(const char * host, unsigned short port, - unsigned int scope_id); - -#endif - diff --git a/ext/bin/miniupnpc/include/miniupnpc/igd_desc_parse.h b/ext/bin/miniupnpc/include/miniupnpc/igd_desc_parse.h deleted file mode 100644 index 0de546b69..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/igd_desc_parse.h +++ /dev/null @@ -1,49 +0,0 @@ -/* $Id: igd_desc_parse.h,v 1.12 2014/11/17 17:19:13 nanard Exp $ */ -/* Project : miniupnp - * http://miniupnp.free.fr/ - * Author : Thomas Bernard - * Copyright (c) 2005-2014 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. - * */ -#ifndef IGD_DESC_PARSE_H_INCLUDED -#define IGD_DESC_PARSE_H_INCLUDED - -/* Structure to store the result of the parsing of UPnP - * descriptions of Internet Gateway Devices */ -#define MINIUPNPC_URL_MAXSIZE (128) -struct IGDdatas_service { - char controlurl[MINIUPNPC_URL_MAXSIZE]; - char eventsuburl[MINIUPNPC_URL_MAXSIZE]; - char scpdurl[MINIUPNPC_URL_MAXSIZE]; - char servicetype[MINIUPNPC_URL_MAXSIZE]; - /*char devicetype[MINIUPNPC_URL_MAXSIZE];*/ -}; - -struct IGDdatas { - char cureltname[MINIUPNPC_URL_MAXSIZE]; - char urlbase[MINIUPNPC_URL_MAXSIZE]; - char presentationurl[MINIUPNPC_URL_MAXSIZE]; - int level; - /*int state;*/ - /* "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1" */ - struct IGDdatas_service CIF; - /* "urn:schemas-upnp-org:service:WANIPConnection:1" - * "urn:schemas-upnp-org:service:WANPPPConnection:1" */ - struct IGDdatas_service first; - /* if both WANIPConnection and WANPPPConnection are present */ - struct IGDdatas_service second; - /* "urn:schemas-upnp-org:service:WANIPv6FirewallControl:1" */ - struct IGDdatas_service IPv6FC; - /* tmp */ - struct IGDdatas_service tmp; -}; - -void IGDstartelt(void *, const char *, int); -void IGDendelt(void *, const char *, int); -void IGDdata(void *, const char *, int); -#ifdef DEBUG -void printIGD(struct IGDdatas *); -#endif /* DEBUG */ - -#endif /* IGD_DESC_PARSE_H_INCLUDED */ diff --git a/ext/bin/miniupnpc/include/miniupnpc/minisoap.h b/ext/bin/miniupnpc/include/miniupnpc/minisoap.h deleted file mode 100644 index 14c859d1e..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/minisoap.h +++ /dev/null @@ -1,15 +0,0 @@ -/* $Id: minisoap.h,v 1.5 2012/09/27 15:42:10 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas Bernard - * Copyright (c) 2005 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. */ -#ifndef MINISOAP_H_INCLUDED -#define MINISOAP_H_INCLUDED - -/*int httpWrite(int, const char *, int, const char *);*/ -int soapPostSubmit(int, const char *, const char *, unsigned short, - const char *, const char *, const char *); - -#endif - diff --git a/ext/bin/miniupnpc/include/miniupnpc/minissdpc.h b/ext/bin/miniupnpc/include/miniupnpc/minissdpc.h deleted file mode 100644 index 915b0026f..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/minissdpc.h +++ /dev/null @@ -1,15 +0,0 @@ -/* $Id: minissdpc.h,v 1.2 2012/09/27 15:42:10 nanard Exp $ */ -/* Project: miniupnp - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * Author: Thomas Bernard - * Copyright (c) 2005-2007 Thomas Bernard - * This software is subjects to the conditions detailed - * in the LICENCE file provided within this distribution */ -#ifndef MINISSDPC_H_INCLUDED -#define MINISSDPC_H_INCLUDED - -struct UPNPDev * -getDevicesFromMiniSSDPD(const char * devtype, const char * socketpath); - -#endif - diff --git a/ext/bin/miniupnpc/include/miniupnpc/miniupnpc.h b/ext/bin/miniupnpc/include/miniupnpc/miniupnpc.h deleted file mode 100644 index 0eeabc234..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/miniupnpc.h +++ /dev/null @@ -1,154 +0,0 @@ -/* $Id: miniupnpc.h,v 1.42 2015/07/21 13:16:55 nanard Exp $ */ -/* Project: miniupnp - * http://miniupnp.free.fr/ - * Author: Thomas Bernard - * Copyright (c) 2005-2015 Thomas Bernard - * This software is subjects to the conditions detailed - * in the LICENCE file provided within this distribution */ -#ifndef MINIUPNPC_H_INCLUDED -#define MINIUPNPC_H_INCLUDED - -#include "miniupnpc_declspec.h" -#include "igd_desc_parse.h" - -/* error codes : */ -#define UPNPDISCOVER_SUCCESS (0) -#define UPNPDISCOVER_UNKNOWN_ERROR (-1) -#define UPNPDISCOVER_SOCKET_ERROR (-101) -#define UPNPDISCOVER_MEMORY_ERROR (-102) - -/* versions : */ -#define MINIUPNPC_VERSION "1.9.20150721" -#define MINIUPNPC_API_VERSION 13 - -#ifdef __cplusplus -extern "C" { -#endif - -/* Structures definitions : */ -struct UPNParg { const char * elt; const char * val; }; - -char * -simpleUPnPcommand(int, const char *, const char *, - const char *, struct UPNParg *, - int *); - -struct UPNPDev { - struct UPNPDev * pNext; - char * descURL; - char * st; - unsigned int scope_id; - char buffer[2]; -}; - -/* upnpDiscover() - * discover UPnP devices on the network. - * The discovered devices are returned as a chained list. - * It is up to the caller to free the list with freeUPNPDevlist(). - * delay (in millisecond) is the maximum time for waiting any device - * response. - * If available, device list will be obtained from MiniSSDPd. - * Default path for minissdpd socket will be used if minissdpdsock argument - * is NULL. - * If multicastif is not NULL, it will be used instead of the default - * multicast interface for sending SSDP discover packets. - * If sameport is not null, SSDP packets will be sent from the source port - * 1900 (same as destination port) otherwise system assign a source port. - * "searchalltypes" parameter is useful when searching several types, - * if 0, the discovery will stop with the first type returning results. */ -MINIUPNP_LIBSPEC struct UPNPDev * -upnpDiscover(int delay, const char * multicastif, - const char * minissdpdsock, int sameport, - int ipv6, - int * error); - -MINIUPNP_LIBSPEC struct UPNPDev * -upnpDiscoverAll(int delay, const char * multicastif, - const char * minissdpdsock, int sameport, - int ipv6, - int * error); - -MINIUPNP_LIBSPEC struct UPNPDev * -upnpDiscoverDevice(const char * device, int delay, const char * multicastif, - const char * minissdpdsock, int sameport, - int ipv6, - int * error); - -MINIUPNP_LIBSPEC struct UPNPDev * -upnpDiscoverDevices(const char * const deviceTypes[], - int delay, const char * multicastif, - const char * minissdpdsock, int sameport, - int ipv6, - int * error, - int searchalltypes); - -/* freeUPNPDevlist() - * free list returned by upnpDiscover() */ -MINIUPNP_LIBSPEC void freeUPNPDevlist(struct UPNPDev * devlist); - -/* parserootdesc() : - * parse root XML description of a UPnP device and fill the IGDdatas - * structure. */ -MINIUPNP_LIBSPEC void parserootdesc(const char *, int, struct IGDdatas *); - -/* structure used to get fast access to urls - * controlURL: controlURL of the WANIPConnection - * ipcondescURL: url of the description of the WANIPConnection - * controlURL_CIF: controlURL of the WANCommonInterfaceConfig - * controlURL_6FC: controlURL of the WANIPv6FirewallControl - */ -struct UPNPUrls { - char * controlURL; - char * ipcondescURL; - char * controlURL_CIF; - char * controlURL_6FC; - char * rootdescURL; -}; - -/* UPNP_GetValidIGD() : - * return values : - * 0 = NO IGD found - * 1 = A valid connected IGD has been found - * 2 = A valid IGD has been found but it reported as - * not connected - * 3 = an UPnP device has been found but was not recognized as an IGD - * - * In any non zero return case, the urls and data structures - * passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to - * free allocated memory. - */ -MINIUPNP_LIBSPEC int -UPNP_GetValidIGD(struct UPNPDev * devlist, - struct UPNPUrls * urls, - struct IGDdatas * data, - char * lanaddr, int lanaddrlen); - -/* UPNP_GetIGDFromUrl() - * Used when skipping the discovery process. - * When succeding, urls, data, and lanaddr arguments are set. - * return value : - * 0 - Not ok - * 1 - OK */ -MINIUPNP_LIBSPEC int -UPNP_GetIGDFromUrl(const char * rootdescurl, - struct UPNPUrls * urls, - struct IGDdatas * data, - char * lanaddr, int lanaddrlen); - -MINIUPNP_LIBSPEC void -GetUPNPUrls(struct UPNPUrls *, struct IGDdatas *, - const char *, unsigned int); - -MINIUPNP_LIBSPEC void -FreeUPNPUrls(struct UPNPUrls *); - -/* return 0 or 1 */ -MINIUPNP_LIBSPEC int UPNPIGD_IsConnected(struct UPNPUrls *, struct IGDdatas *); - - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/ext/bin/miniupnpc/include/miniupnpc/miniupnpc_declspec.h b/ext/bin/miniupnpc/include/miniupnpc/miniupnpc_declspec.h deleted file mode 100644 index 40adb922e..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/miniupnpc_declspec.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef MINIUPNPC_DECLSPEC_H_INCLUDED -#define MINIUPNPC_DECLSPEC_H_INCLUDED - -#if defined(_WIN32) && !defined(MINIUPNP_STATICLIB) - /* for windows dll */ - #ifdef MINIUPNP_EXPORTS - #define MINIUPNP_LIBSPEC __declspec(dllexport) - #else - #define MINIUPNP_LIBSPEC __declspec(dllimport) - #endif -#else - #if defined(__GNUC__) && __GNUC__ >= 4 - /* fix dynlib for OS X 10.9.2 and Apple LLVM version 5.0 */ - #define MINIUPNP_LIBSPEC __attribute__ ((visibility ("default"))) - #else - #define MINIUPNP_LIBSPEC - #endif -#endif - -#endif /* MINIUPNPC_DECLSPEC_H_INCLUDED */ - diff --git a/ext/bin/miniupnpc/include/miniupnpc/miniupnpcstrings.h b/ext/bin/miniupnpc/include/miniupnpc/miniupnpcstrings.h deleted file mode 100644 index 80a1d757d..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/miniupnpcstrings.h +++ /dev/null @@ -1,23 +0,0 @@ -/* $Id: miniupnpcstrings.h.in,v 1.6 2014/11/04 22:31:55 nanard Exp $ */ -/* Project: miniupnp - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * Author: Thomas Bernard - * Copyright (c) 2005-2014 Thomas Bernard - * This software is subjects to the conditions detailed - * in the LICENCE file provided within this distribution */ -#ifndef MINIUPNPCSTRINGS_H_INCLUDED -#define MINIUPNPCSTRINGS_H_INCLUDED - -#define OS_STRING "Darwin/14.4.0" -#define MINIUPNPC_VERSION_STRING "1.9" - -#if 0 -/* according to "UPnP Device Architecture 1.0" */ -#define UPNP_VERSION_STRING "UPnP/1.0" -#else -/* according to "UPnP Device Architecture 1.1" */ -#define UPNP_VERSION_STRING "UPnP/1.1" -#endif - -#endif - diff --git a/ext/bin/miniupnpc/include/miniupnpc/miniupnpctypes.h b/ext/bin/miniupnpc/include/miniupnpc/miniupnpctypes.h deleted file mode 100644 index 591c32fb6..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/miniupnpctypes.h +++ /dev/null @@ -1,19 +0,0 @@ -/* $Id: miniupnpctypes.h,v 1.2 2012/09/27 15:42:10 nanard Exp $ */ -/* Miniupnp project : http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org - * Author : Thomas Bernard - * Copyright (c) 2011 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided within this distribution */ -#ifndef MINIUPNPCTYPES_H_INCLUDED -#define MINIUPNPCTYPES_H_INCLUDED - -#if (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) -#define UNSIGNED_INTEGER unsigned long long -#define STRTOUI strtoull -#else -#define UNSIGNED_INTEGER unsigned int -#define STRTOUI strtoul -#endif - -#endif - diff --git a/ext/bin/miniupnpc/include/miniupnpc/miniwget.h b/ext/bin/miniupnpc/include/miniupnpc/miniwget.h deleted file mode 100644 index d6db71a85..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/miniwget.h +++ /dev/null @@ -1,30 +0,0 @@ -/* $Id: miniwget.h,v 1.10 2015/07/21 13:16:55 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas Bernard - * Copyright (c) 2005-2015 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. - * */ -#ifndef MINIWGET_H_INCLUDED -#define MINIWGET_H_INCLUDED - -#include "miniupnpc_declspec.h" - -#ifdef __cplusplus -extern "C" { -#endif - -MINIUPNP_LIBSPEC void * getHTTPResponse(int s, int * size); - -MINIUPNP_LIBSPEC void * miniwget(const char *, int *, unsigned int); - -MINIUPNP_LIBSPEC void * miniwget_getaddr(const char *, int *, char *, int, unsigned int); - -int parseURL(const char *, char *, unsigned short *, char * *, unsigned int *); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/ext/bin/miniupnpc/include/miniupnpc/minixml.h b/ext/bin/miniupnpc/include/miniupnpc/minixml.h deleted file mode 100644 index 9f43aa48c..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/minixml.h +++ /dev/null @@ -1,37 +0,0 @@ -/* $Id: minixml.h,v 1.7 2012/09/27 15:42:10 nanard Exp $ */ -/* minimal xml parser - * - * Project : miniupnp - * Website : http://miniupnp.free.fr/ - * Author : Thomas Bernard - * Copyright (c) 2005 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. - * */ -#ifndef MINIXML_H_INCLUDED -#define MINIXML_H_INCLUDED -#define IS_WHITE_SPACE(c) ((c==' ') || (c=='\t') || (c=='\r') || (c=='\n')) - -/* if a callback function pointer is set to NULL, - * the function is not called */ -struct xmlparser { - const char *xmlstart; - const char *xmlend; - const char *xml; /* pointer to current character */ - int xmlsize; - void * data; - void (*starteltfunc) (void *, const char *, int); - void (*endeltfunc) (void *, const char *, int); - void (*datafunc) (void *, const char *, int); - void (*attfunc) (void *, const char *, int, const char *, int); -}; - -/* parsexml() - * the xmlparser structure must be initialized before the call - * the following structure members have to be initialized : - * xmlstart, xmlsize, data, *func - * xml is for internal usage, xmlend is computed automatically */ -void parsexml(struct xmlparser *); - -#endif - diff --git a/ext/bin/miniupnpc/include/miniupnpc/portlistingparse.h b/ext/bin/miniupnpc/include/miniupnpc/portlistingparse.h deleted file mode 100644 index 661ad1faa..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/portlistingparse.h +++ /dev/null @@ -1,65 +0,0 @@ -/* $Id: portlistingparse.h,v 1.11 2015/07/21 13:16:55 nanard Exp $ */ -/* MiniUPnP project - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * (c) 2011-2015 Thomas Bernard - * This software is subject to the conditions detailed - * in the LICENCE file provided within the distribution */ -#ifndef PORTLISTINGPARSE_H_INCLUDED -#define PORTLISTINGPARSE_H_INCLUDED - -#include "miniupnpc_declspec.h" -/* for the definition of UNSIGNED_INTEGER */ -#include "miniupnpctypes.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* sample of PortMappingEntry : - - 202.233.2.1 - 2345 - TCP - 2345 - 192.168.1.137 - 1 - dooom - 345 - - */ -typedef enum { PortMappingEltNone, - PortMappingEntry, NewRemoteHost, - NewExternalPort, NewProtocol, - NewInternalPort, NewInternalClient, - NewEnabled, NewDescription, - NewLeaseTime } portMappingElt; - -struct PortMapping { - struct PortMapping * l_next; /* list next element */ - UNSIGNED_INTEGER leaseTime; - unsigned short externalPort; - unsigned short internalPort; - char remoteHost[64]; - char internalClient[64]; - char description[64]; - char protocol[4]; - unsigned char enabled; -}; - -struct PortMappingParserData { - struct PortMapping * l_head; /* list head */ - portMappingElt curelt; -}; - -MINIUPNP_LIBSPEC void -ParsePortListing(const char * buffer, int bufsize, - struct PortMappingParserData * pdata); - -MINIUPNP_LIBSPEC void -FreePortListing(struct PortMappingParserData * pdata); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/bin/miniupnpc/include/miniupnpc/receivedata.h b/ext/bin/miniupnpc/include/miniupnpc/receivedata.h deleted file mode 100644 index 0520a11d3..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/receivedata.h +++ /dev/null @@ -1,19 +0,0 @@ -/* $Id: receivedata.h,v 1.4 2012/09/27 15:42:10 nanard Exp $ */ -/* Project: miniupnp - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * Author: Thomas Bernard - * Copyright (c) 2011-2012 Thomas Bernard - * This software is subjects to the conditions detailed - * in the LICENCE file provided within this distribution */ -#ifndef RECEIVEDATA_H_INCLUDED -#define RECEIVEDATA_H_INCLUDED - -/* Reads data from the specified socket. - * Returns the number of bytes read if successful, zero if no bytes were - * read or if we timed out. Returns negative if there was an error. */ -int receivedata(int socket, - char * data, int length, - int timeout, unsigned int * scope_id); - -#endif - diff --git a/ext/bin/miniupnpc/include/miniupnpc/upnpcommands.h b/ext/bin/miniupnpc/include/miniupnpc/upnpcommands.h deleted file mode 100644 index 22eda5e39..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/upnpcommands.h +++ /dev/null @@ -1,348 +0,0 @@ -/* $Id: upnpcommands.h,v 1.31 2015/07/21 13:16:55 nanard Exp $ */ -/* Miniupnp project : http://miniupnp.free.fr/ - * Author : Thomas Bernard - * Copyright (c) 2005-2015 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided within this distribution */ -#ifndef UPNPCOMMANDS_H_INCLUDED -#define UPNPCOMMANDS_H_INCLUDED - -#include "upnpreplyparse.h" -#include "portlistingparse.h" -#include "miniupnpc_declspec.h" -#include "miniupnpctypes.h" - -/* MiniUPnPc return codes : */ -#define UPNPCOMMAND_SUCCESS (0) -#define UPNPCOMMAND_UNKNOWN_ERROR (-1) -#define UPNPCOMMAND_INVALID_ARGS (-2) -#define UPNPCOMMAND_HTTP_ERROR (-3) -#define UPNPCOMMAND_INVALID_RESPONSE (-4) -#define UPNPCOMMAND_MEM_ALLOC_ERROR (-5) - -#ifdef __cplusplus -extern "C" { -#endif - -MINIUPNP_LIBSPEC UNSIGNED_INTEGER -UPNP_GetTotalBytesSent(const char * controlURL, - const char * servicetype); - -MINIUPNP_LIBSPEC UNSIGNED_INTEGER -UPNP_GetTotalBytesReceived(const char * controlURL, - const char * servicetype); - -MINIUPNP_LIBSPEC UNSIGNED_INTEGER -UPNP_GetTotalPacketsSent(const char * controlURL, - const char * servicetype); - -MINIUPNP_LIBSPEC UNSIGNED_INTEGER -UPNP_GetTotalPacketsReceived(const char * controlURL, - const char * servicetype); - -/* UPNP_GetStatusInfo() - * status and lastconnerror are 64 byte buffers - * Return values : - * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR - * or a UPnP Error code */ -MINIUPNP_LIBSPEC int -UPNP_GetStatusInfo(const char * controlURL, - const char * servicetype, - char * status, - unsigned int * uptime, - char * lastconnerror); - -/* UPNP_GetConnectionTypeInfo() - * argument connectionType is a 64 character buffer - * Return Values : - * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR - * or a UPnP Error code */ -MINIUPNP_LIBSPEC int -UPNP_GetConnectionTypeInfo(const char * controlURL, - const char * servicetype, - char * connectionType); - -/* UPNP_GetExternalIPAddress() call the corresponding UPNP method. - * if the third arg is not null the value is copied to it. - * at least 16 bytes must be available - * - * Return values : - * 0 : SUCCESS - * NON ZERO : ERROR Either an UPnP error code or an unknown error. - * - * possible UPnP Errors : - * 402 Invalid Args - See UPnP Device Architecture section on Control. - * 501 Action Failed - See UPnP Device Architecture section on Control. */ -MINIUPNP_LIBSPEC int -UPNP_GetExternalIPAddress(const char * controlURL, - const char * servicetype, - char * extIpAdd); - -/* UPNP_GetLinkLayerMaxBitRates() - * call WANCommonInterfaceConfig:1#GetCommonLinkProperties - * - * return values : - * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR - * or a UPnP Error Code. */ -MINIUPNP_LIBSPEC int -UPNP_GetLinkLayerMaxBitRates(const char* controlURL, - const char* servicetype, - unsigned int * bitrateDown, - unsigned int * bitrateUp); - -/* UPNP_AddPortMapping() - * if desc is NULL, it will be defaulted to "libminiupnpc" - * remoteHost is usually NULL because IGD don't support it. - * - * Return values : - * 0 : SUCCESS - * NON ZERO : ERROR. Either an UPnP error code or an unknown error. - * - * List of possible UPnP errors for AddPortMapping : - * errorCode errorDescription (short) - Description (long) - * 402 Invalid Args - See UPnP Device Architecture section on Control. - * 501 Action Failed - See UPnP Device Architecture section on Control. - * 606 Action not authorized - The action requested REQUIRES authorization and - * the sender was not authorized. - * 715 WildCardNotPermittedInSrcIP - The source IP address cannot be - * wild-carded - * 716 WildCardNotPermittedInExtPort - The external port cannot be wild-carded - * 718 ConflictInMappingEntry - The port mapping entry specified conflicts - * with a mapping assigned previously to another client - * 724 SamePortValuesRequired - Internal and External port values - * must be the same - * 725 OnlyPermanentLeasesSupported - The NAT implementation only supports - * permanent lease times on port mappings - * 726 RemoteHostOnlySupportsWildcard - RemoteHost must be a wildcard - * and cannot be a specific IP address or DNS name - * 727 ExternalPortOnlySupportsWildcard - ExternalPort must be a wildcard and - * cannot be a specific port value - * 728 NoPortMapsAvailable - There are not enough free ports available to - * complete port mapping. - * 729 ConflictWithOtherMechanisms - Attempted port mapping is not allowed - * due to conflict with other mechanisms. - * 732 WildCardNotPermittedInIntPort - The internal port cannot be wild-carded - */ -MINIUPNP_LIBSPEC int -UPNP_AddPortMapping(const char * controlURL, const char * servicetype, - const char * extPort, - const char * inPort, - const char * inClient, - const char * desc, - const char * proto, - const char * remoteHost, - const char * leaseDuration); - -/* UPNP_AddAnyPortMapping() - * if desc is NULL, it will be defaulted to "libminiupnpc" - * remoteHost is usually NULL because IGD don't support it. - * - * Return values : - * 0 : SUCCESS - * NON ZERO : ERROR. Either an UPnP error code or an unknown error. - * - * List of possible UPnP errors for AddPortMapping : - * errorCode errorDescription (short) - Description (long) - * 402 Invalid Args - See UPnP Device Architecture section on Control. - * 501 Action Failed - See UPnP Device Architecture section on Control. - * 606 Action not authorized - The action requested REQUIRES authorization and - * the sender was not authorized. - * 715 WildCardNotPermittedInSrcIP - The source IP address cannot be - * wild-carded - * 716 WildCardNotPermittedInExtPort - The external port cannot be wild-carded - * 728 NoPortMapsAvailable - There are not enough free ports available to - * complete port mapping. - * 729 ConflictWithOtherMechanisms - Attempted port mapping is not allowed - * due to conflict with other mechanisms. - * 732 WildCardNotPermittedInIntPort - The internal port cannot be wild-carded - */ -MINIUPNP_LIBSPEC int -UPNP_AddAnyPortMapping(const char * controlURL, const char * servicetype, - const char * extPort, - const char * inPort, - const char * inClient, - const char * desc, - const char * proto, - const char * remoteHost, - const char * leaseDuration, - char * reservedPort); - -/* UPNP_DeletePortMapping() - * Use same argument values as what was used for AddPortMapping(). - * remoteHost is usually NULL because IGD don't support it. - * Return Values : - * 0 : SUCCESS - * NON ZERO : error. Either an UPnP error code or an undefined error. - * - * List of possible UPnP errors for DeletePortMapping : - * 402 Invalid Args - See UPnP Device Architecture section on Control. - * 606 Action not authorized - The action requested REQUIRES authorization - * and the sender was not authorized. - * 714 NoSuchEntryInArray - The specified value does not exist in the array */ -MINIUPNP_LIBSPEC int -UPNP_DeletePortMapping(const char * controlURL, const char * servicetype, - const char * extPort, const char * proto, - const char * remoteHost); - -/* UPNP_DeletePortRangeMapping() - * Use same argument values as what was used for AddPortMapping(). - * remoteHost is usually NULL because IGD don't support it. - * Return Values : - * 0 : SUCCESS - * NON ZERO : error. Either an UPnP error code or an undefined error. - * - * List of possible UPnP errors for DeletePortMapping : - * 606 Action not authorized - The action requested REQUIRES authorization - * and the sender was not authorized. - * 730 PortMappingNotFound - This error message is returned if no port - * mapping is found in the specified range. - * 733 InconsistentParameters - NewStartPort and NewEndPort values are not consistent. */ -MINIUPNP_LIBSPEC int -UPNP_DeletePortMappingRange(const char * controlURL, const char * servicetype, - const char * extPortStart, const char * extPortEnd, - const char * proto, - const char * manage); - -/* UPNP_GetPortMappingNumberOfEntries() - * not supported by all routers */ -MINIUPNP_LIBSPEC int -UPNP_GetPortMappingNumberOfEntries(const char* controlURL, - const char* servicetype, - unsigned int * num); - -/* UPNP_GetSpecificPortMappingEntry() - * retrieves an existing port mapping - * params : - * in extPort - * in proto - * in remoteHost - * out intClient (16 bytes) - * out intPort (6 bytes) - * out desc (80 bytes) - * out enabled (4 bytes) - * out leaseDuration (16 bytes) - * - * return value : - * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR - * or a UPnP Error Code. - * - * List of possible UPnP errors for _GetSpecificPortMappingEntry : - * 402 Invalid Args - See UPnP Device Architecture section on Control. - * 501 Action Failed - See UPnP Device Architecture section on Control. - * 606 Action not authorized - The action requested REQUIRES authorization - * and the sender was not authorized. - * 714 NoSuchEntryInArray - The specified value does not exist in the array. - */ -MINIUPNP_LIBSPEC int -UPNP_GetSpecificPortMappingEntry(const char * controlURL, - const char * servicetype, - const char * extPort, - const char * proto, - const char * remoteHost, - char * intClient, - char * intPort, - char * desc, - char * enabled, - char * leaseDuration); - -/* UPNP_GetGenericPortMappingEntry() - * params : - * in index - * out extPort (6 bytes) - * out intClient (16 bytes) - * out intPort (6 bytes) - * out protocol (4 bytes) - * out desc (80 bytes) - * out enabled (4 bytes) - * out rHost (64 bytes) - * out duration (16 bytes) - * - * return value : - * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR - * or a UPnP Error Code. - * - * Possible UPNP Error codes : - * 402 Invalid Args - See UPnP Device Architecture section on Control. - * 606 Action not authorized - The action requested REQUIRES authorization - * and the sender was not authorized. - * 713 SpecifiedArrayIndexInvalid - The specified array index is out of bounds - */ -MINIUPNP_LIBSPEC int -UPNP_GetGenericPortMappingEntry(const char * controlURL, - const char * servicetype, - const char * index, - char * extPort, - char * intClient, - char * intPort, - char * protocol, - char * desc, - char * enabled, - char * rHost, - char * duration); - -/* UPNP_GetListOfPortMappings() Available in IGD v2 - * - * - * Possible UPNP Error codes : - * 606 Action not Authorized - * 730 PortMappingNotFound - no port mapping is found in the specified range. - * 733 InconsistantParameters - NewStartPort and NewEndPort values are not - * consistent. - */ -MINIUPNP_LIBSPEC int -UPNP_GetListOfPortMappings(const char * controlURL, - const char * servicetype, - const char * startPort, - const char * endPort, - const char * protocol, - const char * numberOfPorts, - struct PortMappingParserData * data); - -/* IGD:2, functions for service WANIPv6FirewallControl:1 */ -MINIUPNP_LIBSPEC int -UPNP_GetFirewallStatus(const char * controlURL, - const char * servicetype, - int * firewallEnabled, - int * inboundPinholeAllowed); - -MINIUPNP_LIBSPEC int -UPNP_GetOutboundPinholeTimeout(const char * controlURL, const char * servicetype, - const char * remoteHost, - const char * remotePort, - const char * intClient, - const char * intPort, - const char * proto, - int * opTimeout); - -MINIUPNP_LIBSPEC int -UPNP_AddPinhole(const char * controlURL, const char * servicetype, - const char * remoteHost, - const char * remotePort, - const char * intClient, - const char * intPort, - const char * proto, - const char * leaseTime, - char * uniqueID); - -MINIUPNP_LIBSPEC int -UPNP_UpdatePinhole(const char * controlURL, const char * servicetype, - const char * uniqueID, - const char * leaseTime); - -MINIUPNP_LIBSPEC int -UPNP_DeletePinhole(const char * controlURL, const char * servicetype, const char * uniqueID); - -MINIUPNP_LIBSPEC int -UPNP_CheckPinholeWorking(const char * controlURL, const char * servicetype, - const char * uniqueID, int * isWorking); - -MINIUPNP_LIBSPEC int -UPNP_GetPinholePackets(const char * controlURL, const char * servicetype, - const char * uniqueID, int * packets); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/ext/bin/miniupnpc/include/miniupnpc/upnperrors.h b/ext/bin/miniupnpc/include/miniupnpc/upnperrors.h deleted file mode 100644 index 3115aee5b..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/upnperrors.h +++ /dev/null @@ -1,26 +0,0 @@ -/* $Id: upnperrors.h,v 1.6 2015/07/21 13:16:55 nanard Exp $ */ -/* (c) 2007-2015 Thomas Bernard - * All rights reserved. - * MiniUPnP Project. - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * This software is subjet to the conditions detailed in the - * provided LICENCE file. */ -#ifndef UPNPERRORS_H_INCLUDED -#define UPNPERRORS_H_INCLUDED - -#include "miniupnpc_declspec.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* strupnperror() - * Return a string description of the UPnP error code - * or NULL for undefinded errors */ -MINIUPNP_LIBSPEC const char * strupnperror(int err); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ext/bin/miniupnpc/include/miniupnpc/upnpreplyparse.h b/ext/bin/miniupnpc/include/miniupnpc/upnpreplyparse.h deleted file mode 100644 index 6badd15b2..000000000 --- a/ext/bin/miniupnpc/include/miniupnpc/upnpreplyparse.h +++ /dev/null @@ -1,63 +0,0 @@ -/* $Id: upnpreplyparse.h,v 1.19 2014/10/27 16:33:19 nanard Exp $ */ -/* MiniUPnP project - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * (c) 2006-2013 Thomas Bernard - * This software is subject to the conditions detailed - * in the LICENCE file provided within the distribution */ - -#ifndef UPNPREPLYPARSE_H_INCLUDED -#define UPNPREPLYPARSE_H_INCLUDED - -#ifdef __cplusplus -extern "C" { -#endif - -struct NameValue { - struct NameValue * l_next; - char name[64]; - char value[128]; -}; - -struct NameValueParserData { - struct NameValue * l_head; - char curelt[64]; - char * portListing; - int portListingLength; - int topelt; - const char * cdata; - int cdatalen; -}; - -/* ParseNameValue() */ -void -ParseNameValue(const char * buffer, int bufsize, - struct NameValueParserData * data); - -/* ClearNameValueList() */ -void -ClearNameValueList(struct NameValueParserData * pdata); - -/* GetValueFromNameValueList() */ -char * -GetValueFromNameValueList(struct NameValueParserData * pdata, - const char * Name); - -#if 0 -/* GetValueFromNameValueListIgnoreNS() */ -char * -GetValueFromNameValueListIgnoreNS(struct NameValueParserData * pdata, - const char * Name); -#endif - -/* DisplayNameValueList() */ -#ifdef DEBUG -void -DisplayNameValueList(char * buffer, int bufsize); -#endif - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/ext/bin/miniupnpc/windows-x64/miniupnpc.lib b/ext/bin/miniupnpc/windows-x64/miniupnpc.lib deleted file mode 100644 index e05fefc88a8caef4616f2690ca4ab3cacbd7c231..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 731616 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⪚< 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

Vo6iu(?H}Xg^}ra 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 N0GfYnETo|f{~x - + diff --git a/ext/miniupnpc/connecthostport.c b/ext/miniupnpc/connecthostport.c index 1f2a032ee..854203e03 100644 --- a/ext/miniupnpc/connecthostport.c +++ b/ext/miniupnpc/connecthostport.c @@ -5,6 +5,8 @@ * This software is subject to the conditions detailed in the * LICENCE file provided in this distribution. */ +#define _CRT_SECURE_NO_WARNINGS + /* use getaddrinfo() or gethostbyname() * uncomment the following line in order to use gethostbyname() */ #ifdef NO_GETADDRINFO diff --git a/ext/miniupnpc/minisoap.c b/ext/miniupnpc/minisoap.c index 0b56558e4..478bce6b0 100644 --- a/ext/miniupnpc/minisoap.c +++ b/ext/miniupnpc/minisoap.c @@ -1,3 +1,4 @@ +#define _CRT_SECURE_NO_WARNINGS /* $Id: minisoap.c,v 1.24 2015/10/26 17:05:07 nanard Exp $ */ /* Project : miniupnp * Author : Thomas Bernard @@ -19,7 +20,13 @@ #include #endif #include "minisoap.h" +#ifdef _WIN32 +#define OS_STRING "Win32" +#define MINIUPNPC_VERSION_STRING "1.9" +#define UPNP_VERSION_STRING "UPnP/1.1" +#else #include "miniupnpcstrings.h" +#endif /* only for malloc */ #include diff --git a/ext/miniupnpc/minissdpc.c b/ext/miniupnpc/minissdpc.c index 5a4267394..a371d1610 100644 --- a/ext/miniupnpc/minissdpc.c +++ b/ext/miniupnpc/minissdpc.c @@ -1,3 +1,5 @@ +#define _CRT_SECURE_NO_WARNINGS + /* $Id: minissdpc.c,v 1.30 2015/10/26 17:05:07 nanard Exp $ */ /* Project : miniupnp * Web : http://miniupnp.free.fr/ diff --git a/ext/miniupnpc/miniupnpc.c b/ext/miniupnpc/miniupnpc.c index 4837fe7d3..566388818 100644 --- a/ext/miniupnpc/miniupnpc.c +++ b/ext/miniupnpc/miniupnpc.c @@ -1,3 +1,4 @@ +#define _CRT_SECURE_NO_WARNINGS /* $Id: miniupnpc.c,v 1.141 2015/10/26 17:05:07 nanard Exp $ */ /* vim: tabstop=4 shiftwidth=4 noexpandtab */ /* Project : miniupnp diff --git a/ext/miniupnpc/miniwget.c b/ext/miniupnpc/miniwget.c index 40aa71807..d0dd721b8 100644 --- a/ext/miniupnpc/miniwget.c +++ b/ext/miniupnpc/miniwget.c @@ -1,3 +1,4 @@ +#define _CRT_SECURE_NO_WARNINGS /* $Id: miniwget.c,v 1.72 2015/10/26 17:05:08 nanard Exp $ */ /* Project : miniupnp * Website : http://miniupnp.free.fr/ @@ -49,7 +50,13 @@ #endif /* MIN */ +#ifdef _WIN32 +#define OS_STRING "Win32" +#define MINIUPNPC_VERSION_STRING "1.9" +#define UPNP_VERSION_STRING "UPnP/1.1" +#else #include "miniupnpcstrings.h" +#endif #include "miniwget.h" #include "connecthostport.h" #include "receivedata.h" diff --git a/ext/miniupnpc/minixml.c b/ext/miniupnpc/minixml.c index 3e201ec2c..5c79b3c9d 100644 --- a/ext/miniupnpc/minixml.c +++ b/ext/miniupnpc/minixml.c @@ -1,3 +1,4 @@ +#define _CRT_SECURE_NO_WARNINGS /* $Id: minixml.c,v 1.11 2014/02/03 15:54:12 nanard Exp $ */ /* minixml.c : the minimum size a xml parser can be ! */ /* Project : miniupnp diff --git a/ext/miniupnpc/minixmlvalid.c b/ext/miniupnpc/minixmlvalid.c index dad148812..a86beba8b 100644 --- a/ext/miniupnpc/minixmlvalid.c +++ b/ext/miniupnpc/minixmlvalid.c @@ -1,3 +1,4 @@ +#define _CRT_SECURE_NO_WARNINGS /* $Id: minixmlvalid.c,v 1.7 2015/07/15 12:41:15 nanard Exp $ */ /* MiniUPnP Project * http://miniupnp.tuxfamily.org/ or http://miniupnp.free.fr/ diff --git a/ext/miniupnpc/upnpcommands.c b/ext/miniupnpc/upnpcommands.c index cabdb50d8..660b5d9f2 100644 --- a/ext/miniupnpc/upnpcommands.c +++ b/ext/miniupnpc/upnpcommands.c @@ -1,3 +1,4 @@ +#define _CRT_SECURE_NO_WARNINGS /* $Id: upnpcommands.c,v 1.46 2015/07/15 12:19:00 nanard Exp $ */ /* Project : miniupnp * Author : Thomas Bernard diff --git a/ext/miniupnpc/upnpreplyparse.c b/ext/miniupnpc/upnpreplyparse.c index 5de5796a3..88d77a66a 100644 --- a/ext/miniupnpc/upnpreplyparse.c +++ b/ext/miniupnpc/upnpreplyparse.c @@ -1,3 +1,4 @@ +#define _CRT_SECURE_NO_WARNINGS /* $Id: upnpreplyparse.c,v 1.19 2015/07/15 10:29:11 nanard Exp $ */ /* MiniUPnP project * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ diff --git a/osdep/UPNPClient.cpp b/osdep/UPNPClient.cpp index 3193f507f..b7c7e7683 100644 --- a/osdep/UPNPClient.cpp +++ b/osdep/UPNPClient.cpp @@ -46,8 +46,8 @@ #endif #endif -#include "../ext/bin/miniupnpc/include/miniupnpc/miniupnpc.h" -#include "../ext/bin/miniupnpc/include/miniupnpc/upnpcommands.h" +#include "../ext/miniupnpc/miniupnpc.h" +#include "../ext/miniupnpc/upnpcommands.h" namespace ZeroTier { @@ -81,7 +81,7 @@ public: while (run) { { int upnpError = 0; - UPNPDev *devlist = upnpDiscover(2000,(const char *)0,(const char *)0,0,0,&upnpError); + UPNPDev *devlist = upnpDiscover(2000,(const char *)0,(const char *)0,0,0,0,&upnpError); if (devlist) { #ifdef ZT_UPNP_TRACE { diff --git a/windows/ZeroTierOne/ZeroTierOne.vcxproj b/windows/ZeroTierOne/ZeroTierOne.vcxproj index 82b70400f..5da01505a 100644 --- a/windows/ZeroTierOne/ZeroTierOne.vcxproj +++ b/windows/ZeroTierOne/ZeroTierOne.vcxproj @@ -22,6 +22,19 @@ + + + + + + + + + + + + + @@ -79,6 +92,22 @@ + + + + + + + + + + + + + + + + @@ -214,11 +243,11 @@ true - NOMINMAX;ZT_TRACE;ZT_USE_MINIUPNPC;%(PreprocessorDefinitions) + NOMINMAX;ZT_TRACE;ZT_USE_MINIUPNPC;MINIUPNP_STATICLIB;%(PreprocessorDefinitions) true - $(SolutionDir)..\ext\bin\miniupnpc\windows-x86\miniupnpc.lib;wsock32.lib;ws2_32.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies) + wsock32.lib;ws2_32.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies) false @@ -229,12 +258,12 @@ true - NOMINMAX;ZT_TRACE;ZT_USE_MINIUPNPC;%(PreprocessorDefinitions) + NOMINMAX;ZT_TRACE;ZT_USE_MINIUPNPC;MINIUPNP_STATICLIB;%(PreprocessorDefinitions) false true - $(SolutionDir)..\ext\bin\miniupnpc\windows-x64\miniupnpc.lib;wsock32.lib;ws2_32.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies) + wsock32.lib;ws2_32.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies) false @@ -247,7 +276,7 @@ true - ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;ZT_USE_MINIUPNPC;NOMINMAX;%(PreprocessorDefinitions) + ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;ZT_USE_MINIUPNPC;MINIUPNP_STATICLIB;NOMINMAX;%(PreprocessorDefinitions) MultiThreaded NoExtensions true @@ -259,7 +288,7 @@ true true true - $(SolutionDir)..\ext\bin\miniupnpc\windows-x86\miniupnpc.lib;wsock32.lib;ws2_32.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies) + wsock32.lib;ws2_32.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies) false @@ -272,7 +301,7 @@ true - ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;ZT_USE_MINIUPNPC;NOMINMAX;%(PreprocessorDefinitions) + ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;ZT_USE_MINIUPNPC;MINIUPNP_STATICLIB;NOMINMAX;%(PreprocessorDefinitions) MultiThreaded NotSet true @@ -284,7 +313,7 @@ true true true - $(SolutionDir)..\ext\bin\miniupnpc\windows-x64\miniupnpc.lib;wsock32.lib;ws2_32.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies) + wsock32.lib;ws2_32.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies) false diff --git a/windows/ZeroTierOne/ZeroTierOne.vcxproj.filters b/windows/ZeroTierOne/ZeroTierOne.vcxproj.filters index 5a2767e4e..6475137c4 100644 --- a/windows/ZeroTierOne/ZeroTierOne.vcxproj.filters +++ b/windows/ZeroTierOne/ZeroTierOne.vcxproj.filters @@ -79,6 +79,12 @@ {1a47071e-e51b-4535-89ae-858946f03118} + + {5423fb64-896b-432e-a19d-88d4467f89f9} + + + {56cc3ab8-3336-4a22-9471-c267ee46cd54} + @@ -192,6 +198,45 @@ Source Files\node + + Source Files\ext\miniupnpc + + + Source Files\ext\miniupnpc + + + Source Files\ext\miniupnpc + + + Source Files\ext\miniupnpc + + + Source Files\ext\miniupnpc + + + Source Files\ext\miniupnpc + + + Source Files\ext\miniupnpc + + + Source Files\ext\miniupnpc + + + Source Files\ext\miniupnpc + + + Source Files\ext\miniupnpc + + + Source Files\ext\miniupnpc + + + Source Files\ext\miniupnpc + + + Source Files\ext\miniupnpc + @@ -422,6 +467,54 @@ Header Files\node + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + + + Header Files\ext\miniupnpc + From 456bfea58debd20f39f106263f78a5b116f9d1e5 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Nov 2015 19:27:36 -0800 Subject: [PATCH 304/314] Real World -- edge now talks to real net. --- node/Topology.cpp | 8 ++------ world/earth-2015-11-16.bin | Bin 0 -> 494 bytes 2 files changed, 2 insertions(+), 6 deletions(-) create mode 100644 world/earth-2015-11-16.bin diff --git a/node/Topology.cpp b/node/Topology.cpp index 3d1db3379..a3faaf238 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -35,12 +35,8 @@ namespace ZeroTier { -// Old root servers -//#define ZT_DEFAULT_WORLD_LENGTH 494 -//static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x4f,0xdf,0xbf,0xfc,0xbb,0x6c,0x7e,0x15,0x67,0x85,0x1b,0xb4,0x65,0x04,0x01,0xaf,0x56,0xbf,0xe7,0x63,0x9d,0x77,0xef,0xa4,0x1e,0x61,0x53,0x88,0xcb,0x8d,0x78,0xe5,0x47,0x38,0x98,0x5a,0x6c,0x8a,0xdd,0xe6,0x9c,0x65,0xdf,0x1a,0x80,0x63,0xce,0x2e,0x4d,0x48,0x24,0x3d,0x68,0x87,0x96,0x13,0x89,0xba,0x25,0x6f,0xc9,0xb0,0x9f,0x20,0xc5,0x4c,0x51,0x7b,0x30,0xb7,0x5f,0xba,0xca,0xa4,0xc5,0x48,0xa3,0x15,0xab,0x2f,0x1d,0x64,0xe8,0x04,0x42,0xb3,0x1c,0x51,0x8b,0x2a,0x04,0x01,0xf8,0xe1,0x81,0xaf,0x60,0x2f,0x70,0x3e,0xcd,0x0b,0x21,0x38,0x19,0x62,0x02,0xbd,0x0e,0x33,0x1d,0x0a,0x7b,0xf1,0xec,0xad,0xef,0x54,0xb3,0x7b,0x17,0x84,0xaa,0xda,0x0a,0x85,0x5d,0x0b,0x1c,0x05,0x83,0xb9,0x0e,0x3e,0xe3,0xb4,0xd1,0x8b,0x5b,0x64,0xf7,0xcf,0xe1,0xff,0x5d,0xc2,0x2a,0xcf,0x60,0x7b,0x09,0xb4,0xa3,0x86,0x3c,0x5a,0x7e,0x31,0xa0,0xc7,0xb4,0x86,0xe3,0x41,0x33,0x04,0x7e,0x19,0x87,0x6a,0xba,0x00,0x2a,0x6e,0x2b,0x23,0x18,0x93,0x0f,0x60,0xeb,0x09,0x7f,0x70,0xd0,0xf4,0xb0,0x28,0xb2,0xcd,0x6d,0x3d,0x0c,0x63,0xc0,0x14,0xb9,0x03,0x9f,0xf3,0x53,0x90,0xe4,0x11,0x81,0xf2,0x16,0xfb,0x2e,0x6f,0xa8,0xd9,0x5c,0x1e,0xe9,0x66,0x71,0x56,0x41,0x19,0x05,0xc3,0xdc,0xcf,0xea,0x78,0xd8,0xc6,0xdf,0xaf,0xba,0x68,0x81,0x70,0xb3,0xfa,0x00,0x01,0x04,0xc6,0xc7,0x61,0xdc,0x27,0x09,0x88,0x41,0x40,0x8a,0x2e,0x00,0xbb,0x1d,0x31,0xf2,0xc3,0x23,0xe2,0x64,0xe9,0xe6,0x41,0x72,0xc1,0xa7,0x4f,0x77,0x89,0x95,0x55,0xed,0x10,0x75,0x1c,0xd5,0x6e,0x86,0x40,0x5c,0xde,0x11,0x8d,0x02,0xdf,0xfe,0x55,0x5d,0x46,0x2c,0xcf,0x6a,0x85,0xb5,0x63,0x1c,0x12,0x35,0x0c,0x8d,0x5d,0xc4,0x09,0xba,0x10,0xb9,0x02,0x5d,0x0f,0x44,0x5c,0xf4,0x49,0xd9,0x2b,0x1c,0x00,0x01,0x04,0x6b,0xbf,0x2e,0xd2,0x27,0x09,0x8a,0xcf,0x05,0x9f,0xe3,0x00,0x48,0x2f,0x6e,0xe5,0xdf,0xe9,0x02,0x31,0x9b,0x41,0x9d,0xe5,0xbd,0xc7,0x65,0x20,0x9c,0x0e,0xcd,0xa3,0x8c,0x4d,0x6e,0x4f,0xcf,0x0d,0x33,0x65,0x83,0x98,0xb4,0x52,0x7d,0xcd,0x22,0xf9,0x31,0x12,0xfb,0x9b,0xef,0xd0,0x2f,0xd7,0x8b,0xf7,0x26,0x1b,0x33,0x3f,0xc1,0x05,0xd1,0x92,0xa6,0x23,0xca,0x9e,0x50,0xfc,0x60,0xb3,0x74,0xa5,0x00,0x01,0x04,0xa2,0xf3,0x4d,0x6f,0x27,0x09,0x9d,0x21,0x90,0x39,0xf3,0x00,0x01,0xf0,0x92,0x2a,0x98,0xe3,0xb3,0x4e,0xbc,0xbf,0xf3,0x33,0x26,0x9d,0xc2,0x65,0xd7,0xa0,0x20,0xaa,0xb6,0x9d,0x72,0xbe,0x4d,0x4a,0xcc,0x9c,0x8c,0x92,0x94,0x78,0x57,0x71,0x25,0x6c,0xd1,0xd9,0x42,0xa9,0x0d,0x1b,0xd1,0xd2,0xdc,0xa3,0xea,0x84,0xef,0x7d,0x85,0xaf,0xe6,0x61,0x1f,0xb4,0x3f,0xf0,0xb7,0x41,0x26,0xd9,0x0a,0x6e,0x00,0x01,0x04,0x80,0xc7,0xc5,0xd9,0x27,0x09}; - -#define ZT_DEFAULT_WORLD_LENGTH 582 -static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x50,0xa6,0x54,0xe4,0x8e,0x72,0xb0,0x3b,0xbe,0x73,0xda,0xbd,0xfb,0x85,0x77,0x9f,0xc9,0x2e,0x17,0xc8,0x11,0x6e,0xda,0x61,0x80,0xd1,0x41,0xcb,0x7c,0x2d,0x2b,0xa4,0x34,0x75,0x19,0x64,0x20,0x80,0x0a,0x22,0x32,0xf2,0x01,0x6c,0xfe,0x79,0xa6,0x7d,0xec,0x10,0x7e,0x03,0xf3,0xa2,0xa0,0x19,0xc8,0x7c,0xfd,0x6c,0x56,0x52,0xa8,0xfb,0xdc,0xfb,0x93,0x81,0x3e,0xe4,0xe9,0x51,0xc1,0xe1,0x39,0x50,0xcd,0x17,0x82,0x9d,0x74,0xf1,0xa9,0x5b,0x03,0x14,0x2c,0xa7,0xc0,0x7f,0x21,0x8b,0xad,0xdd,0xa5,0x04,0x26,0x35,0xa6,0xab,0xc1,0x49,0x64,0x2c,0xda,0x65,0x52,0x77,0xf3,0xf0,0x70,0x00,0xcd,0xc3,0xff,0x3b,0x19,0x77,0x4c,0xab,0xb6,0x35,0xbb,0x77,0xcf,0x54,0xe5,0x6d,0x01,0x9d,0x43,0x92,0x0a,0x6d,0x00,0x23,0x8e,0x0a,0x3d,0xba,0x36,0xc3,0xa1,0xa4,0xad,0x13,0x8f,0x46,0xff,0xcc,0x8f,0x9e,0xc2,0x3c,0x06,0xf8,0x3b,0xf3,0xa2,0x5f,0x71,0xcc,0x07,0x35,0x7f,0x02,0xd6,0xdd,0xca,0x6a,0xb5,0x00,0x4e,0x76,0x12,0x07,0xd8,0xb4,0x20,0x0b,0xe4,0x4f,0x47,0x8e,0x3d,0xa1,0x48,0xc1,0x60,0x99,0x11,0x0e,0xe7,0x1b,0x64,0x58,0x6d,0xda,0x11,0x8e,0x40,0x22,0xab,0x63,0x68,0x2c,0xe1,0x37,0xda,0x8b,0xa8,0x17,0xfc,0x7f,0x73,0xaa,0x31,0x63,0xf2,0xe3,0x33,0x93,0x3e,0x29,0x94,0xc4,0x6b,0x4f,0x41,0x19,0x30,0x7b,0xe8,0x85,0x5a,0x72,0x00,0x0a,0x04,0xbc,0xa6,0x5e,0xb1,0x27,0x09,0x06,0x2a,0x03,0xb0,0xc0,0x00,0x02,0x00,0xd0,0x00,0x00,0x00,0x00,0x00,0x7d,0x00,0x01,0x27,0x09,0x04,0x9f,0xcb,0x61,0xab,0x27,0x09,0x06,0x26,0x04,0xa8,0x80,0x08,0x00,0x00,0xa1,0x00,0x00,0x00,0x00,0x00,0x54,0x60,0x01,0x27,0x09,0x04,0xa9,0x39,0x8f,0x68,0x27,0x09,0x06,0x26,0x07,0xf0,0xd0,0x1d,0x01,0x00,0x57,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x27,0x09,0x04,0x68,0xee,0xb6,0x53,0x27,0x09,0x06,0x20,0x01,0x19,0xf0,0xac,0x00,0x08,0x09,0x54,0x00,0x00,0xff,0xfe,0x15,0xf3,0xf4,0x27,0x09,0x04,0x80,0xc7,0xb6,0x09,0x27,0x09,0x06,0x24,0x00,0x61,0x80,0x00,0x00,0x00,0xd0,0x00,0x00,0x00,0x00,0x00,0x1b,0x10,0x01,0x27,0x09,0x16,0xeb,0xbd,0x6c,0x5d,0x00,0x47,0xd3,0x9b,0xca,0x9d,0x0a,0x5c,0xf7,0x01,0x48,0xe3,0x9f,0x6c,0x45,0x19,0x9e,0x17,0xe0,0xe3,0x2e,0x4e,0x46,0xca,0xc0,0x1a,0xe5,0xbc,0xb2,0x12,0x24,0x13,0x7b,0x09,0x7f,0x40,0xbd,0xd9,0x82,0xa9,0x21,0xc3,0xaa,0xbd,0xcb,0x9a,0xda,0x8b,0x4f,0x2b,0xb0,0x59,0x37,0x53,0xbf,0xdb,0x21,0xcf,0x12,0xea,0xc2,0x8c,0x8d,0x90,0x42,0x00,0x0a,0x04,0x2d,0x21,0x04,0x43,0x27,0x09,0x06,0x26,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0xf0,0x3c,0x91,0xff,0xfe,0x67,0xb7,0x04,0x27,0x09,0x04,0x8b,0xa2,0x9d,0xf3,0x27,0x09,0x06,0x2a,0x01,0x7e,0x01,0x00,0x00,0x00,0x00,0xf0,0x3c,0x91,0xff,0xfe,0x67,0x3f,0xfd,0x27,0x09,0x04,0x2d,0x20,0xf6,0xb3,0x27,0x09,0x06,0x20,0x01,0x19,0xf0,0x58,0x00,0x8b,0xf8,0x54,0x00,0x00,0xff,0xfe,0x15,0xb3,0x9a,0x27,0x09,0x04,0x2d,0x20,0xf8,0x57,0x27,0x09,0x06,0x20,0x01,0x19,0xf0,0x70,0x00,0x9b,0xc9,0x54,0x00,0x00,0xff,0xfe,0x15,0xc4,0xf5,0x27,0x09,0x04,0x9f,0xcb,0x02,0x9a,0x27,0x09,0x06,0x26,0x04,0xa8,0x80,0x0c,0xad,0x00,0xd0,0x00,0x00,0x00,0x00,0x00,0x26,0x70,0x01,0x27,0x09}; +#define ZT_DEFAULT_WORLD_LENGTH 494 +static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x51,0x11,0x70,0xb2,0xfb,0xb8,0xb3,0x88,0xa4,0x69,0x22,0x14,0x91,0xaa,0x9a,0xcd,0x66,0xcc,0x76,0x4c,0xde,0xfd,0x56,0x03,0x9f,0x10,0x67,0xae,0x15,0xe6,0x9c,0x6f,0xb4,0x2d,0x7b,0x55,0x33,0x0e,0x3f,0xda,0xac,0x52,0x9c,0x07,0x92,0xfd,0x73,0x40,0xa6,0xaa,0x21,0xab,0xa8,0xa4,0x89,0xfd,0xae,0xa4,0x4a,0x39,0xbf,0x2d,0x00,0x65,0x9a,0xc9,0xc8,0x18,0xeb,0x80,0x31,0xa4,0x65,0x95,0x45,0x06,0x1c,0xfb,0xc2,0x4e,0x5d,0xe7,0x0a,0x40,0x7a,0x97,0xce,0x36,0xa2,0x3d,0x05,0xca,0x87,0xc7,0x59,0x27,0x5c,0x8b,0x0d,0x4c,0xb4,0xbb,0x26,0x2f,0x77,0x17,0x5e,0xb7,0x4d,0xb8,0xd3,0xb4,0xe9,0x23,0x5d,0xcc,0xa2,0x71,0xa8,0xdf,0xf1,0x23,0xa3,0xb2,0x66,0x74,0xea,0xe5,0xdc,0x8d,0xef,0xd3,0x0a,0xa9,0xac,0xcb,0xda,0x93,0xbd,0x6c,0xcd,0x43,0x1d,0xa7,0x98,0x6a,0xde,0x70,0xc0,0xc6,0x1c,0xaf,0xf0,0xfd,0x7f,0x8a,0xb9,0x76,0x13,0xe1,0xde,0x4f,0xf3,0xd6,0x13,0x04,0x7e,0x19,0x87,0x6a,0xba,0x00,0x2a,0x6e,0x2b,0x23,0x18,0x93,0x0f,0x60,0xeb,0x09,0x7f,0x70,0xd0,0xf4,0xb0,0x28,0xb2,0xcd,0x6d,0x3d,0x0c,0x63,0xc0,0x14,0xb9,0x03,0x9f,0xf3,0x53,0x90,0xe4,0x11,0x81,0xf2,0x16,0xfb,0x2e,0x6f,0xa8,0xd9,0x5c,0x1e,0xe9,0x66,0x71,0x56,0x41,0x19,0x05,0xc3,0xdc,0xcf,0xea,0x78,0xd8,0xc6,0xdf,0xaf,0xba,0x68,0x81,0x70,0xb3,0xfa,0x00,0x01,0x04,0xc6,0xc7,0x61,0xdc,0x27,0x09,0x88,0x41,0x40,0x8a,0x2e,0x00,0xbb,0x1d,0x31,0xf2,0xc3,0x23,0xe2,0x64,0xe9,0xe6,0x41,0x72,0xc1,0xa7,0x4f,0x77,0x89,0x95,0x55,0xed,0x10,0x75,0x1c,0xd5,0x6e,0x86,0x40,0x5c,0xde,0x11,0x8d,0x02,0xdf,0xfe,0x55,0x5d,0x46,0x2c,0xcf,0x6a,0x85,0xb5,0x63,0x1c,0x12,0x35,0x0c,0x8d,0x5d,0xc4,0x09,0xba,0x10,0xb9,0x02,0x5d,0x0f,0x44,0x5c,0xf4,0x49,0xd9,0x2b,0x1c,0x00,0x01,0x04,0x6b,0xbf,0x2e,0xd2,0x27,0x09,0x8a,0xcf,0x05,0x9f,0xe3,0x00,0x48,0x2f,0x6e,0xe5,0xdf,0xe9,0x02,0x31,0x9b,0x41,0x9d,0xe5,0xbd,0xc7,0x65,0x20,0x9c,0x0e,0xcd,0xa3,0x8c,0x4d,0x6e,0x4f,0xcf,0x0d,0x33,0x65,0x83,0x98,0xb4,0x52,0x7d,0xcd,0x22,0xf9,0x31,0x12,0xfb,0x9b,0xef,0xd0,0x2f,0xd7,0x8b,0xf7,0x26,0x1b,0x33,0x3f,0xc1,0x05,0xd1,0x92,0xa6,0x23,0xca,0x9e,0x50,0xfc,0x60,0xb3,0x74,0xa5,0x00,0x01,0x04,0xa2,0xf3,0x4d,0x6f,0x27,0x09,0x9d,0x21,0x90,0x39,0xf3,0x00,0x01,0xf0,0x92,0x2a,0x98,0xe3,0xb3,0x4e,0xbc,0xbf,0xf3,0x33,0x26,0x9d,0xc2,0x65,0xd7,0xa0,0x20,0xaa,0xb6,0x9d,0x72,0xbe,0x4d,0x4a,0xcc,0x9c,0x8c,0x92,0x94,0x78,0x57,0x71,0x25,0x6c,0xd1,0xd9,0x42,0xa9,0x0d,0x1b,0xd1,0xd2,0xdc,0xa3,0xea,0x84,0xef,0x7d,0x85,0xaf,0xe6,0x61,0x1f,0xb4,0x3f,0xf0,0xb7,0x41,0x26,0xd9,0x0a,0x6e,0x00,0x01,0x04,0x80,0xc7,0xc5,0xd9,0x27,0x09}; Topology::Topology(const RuntimeEnvironment *renv) : RR(renv), diff --git a/world/earth-2015-11-16.bin b/world/earth-2015-11-16.bin new file mode 100644 index 0000000000000000000000000000000000000000..910ff1440fa0d12c5f847fc91e466e256eeafaeb GIT binary patch literal 494 zcmV25mq)IuzEdXVj$;cS%fH9|`@&9L=L$f2 zm(Dh#Jq5~#$5|&_iw#V)yCyGp7hbnbxYM-hBVEj*aj4(%Bcrlrbn4~YjqlS6sjSP| zlf7)sLmj7>YTj_b#vHHk{eOzNb`#;=PxICj1b!KZYPtX_ZYv`glMi6)34d_V^sp$h z&22plW55)-1E2F#kmM18@)r9pZ>ZT^9_eOrRzVpB!`#p6c-Y3@uexY~aI^XV0R+a! zVcaJPh(SP#E&#h7G4jJB;$-ROL2|*TPj`uxRqYUU9Mx`yKwRDtjRN2PRb56b&uWFW zV;mAS42@mH3Azxu0$mS8T=YrVD;xj;1Z%%8(kBUu&jp|307x%x<=^Q7F`Gf1<-Nyc zAe;`(ql`^%PtOfAWrLWsQhm)L`7sjvoA1ys*NgWi8#6z_1<{hGBg&po{9v Date: Mon, 16 Nov 2015 19:54:58 -0800 Subject: [PATCH 305/314] Fix ARM dpkg build. --- ext/installfiles/linux/buildinstaller.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/installfiles/linux/buildinstaller.sh b/ext/installfiles/linux/buildinstaller.sh index 4f661b8d5..1f6f89355 100755 --- a/ext/installfiles/linux/buildinstaller.sh +++ b/ext/installfiles/linux/buildinstaller.sh @@ -41,7 +41,7 @@ case "$system" in machine="x64" debian_arch="amd64" ;; - armv6l|arm|armhf) + armv6l|arm|armhf|arm7l|armv7l) machine="armv6l" debian_arch="armhf" ;; From 9169b6c99902f546fe98e32d24768f4798d3c772 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 17 Nov 2015 09:56:19 -0800 Subject: [PATCH 306/314] Fix crash on exit in Windows (does not affect other OSes) and revert debugging tweak in Windows version that prevented service from starting after real install. --- node/Topology.cpp | 41 ++++++++++++++++++++++++----------------- one.cpp | 2 +- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/node/Topology.cpp b/node/Topology.cpp index a3faaf238..c7de22a8b 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -96,27 +96,34 @@ Topology::Topology(const RuntimeEnvironment *renv) : Topology::~Topology() { - Buffer pbuf; - std::string all; + Buffer *pbuf = 0; + try { + pbuf = new Buffer(); + std::string all; - Address *a = (Address *)0; - SharedPtr *p = (SharedPtr *)0; - Hashtable< Address,SharedPtr >::Iterator i(_peers); - while (i.next(a,p)) { - if (std::find(_rootAddresses.begin(),_rootAddresses.end(),*a) == _rootAddresses.end()) { - pbuf.clear(); - try { - (*p)->serialize(pbuf); + Address *a = (Address *)0; + SharedPtr *p = (SharedPtr *)0; + Hashtable< Address,SharedPtr >::Iterator i(_peers); + while (i.next(a,p)) { + if (std::find(_rootAddresses.begin(),_rootAddresses.end(),*a) == _rootAddresses.end()) { + pbuf->clear(); try { - all.append((const char *)pbuf.data(),pbuf.size()); - } catch ( ... ) { - return; // out of memory? just skip - } - } catch ( ... ) {} // peer too big? shouldn't happen, but it so skip + (*p)->serialize(*pbuf); + try { + all.append((const char *)pbuf->data(),pbuf->size()); + } catch ( ... ) { + return; // out of memory? just skip + } + } catch ( ... ) {} // peer too big? shouldn't happen, but it so skip + } } - } - RR->node->dataStorePut("peers.save",all,true); + RR->node->dataStorePut("peers.save",all,true); + + delete pbuf; + } catch ( ... ) { + delete pbuf; + } } SharedPtr Topology::addPeer(const SharedPtr &peer) diff --git a/one.cpp b/one.cpp index 11bcc11e7..685034dfe 100644 --- a/one.cpp +++ b/one.cpp @@ -966,7 +966,7 @@ int main(int argc,char **argv) #ifdef ZT_WIN_RUN_IN_CONSOLE bool winRunFromCommandLine = true; #else - bool winRunFromCommandLine = true; + bool winRunFromCommandLine = false; #endif #endif // __WINDOWS__ From 1c0c3e62dceb96b9dc67b7aadae2a495adde3c7d Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 17 Nov 2015 11:13:44 -0800 Subject: [PATCH 307/314] Just add a launch prerequisite for .NET 4.5 -- it's usually there, and if not it can be easily installed. This is mostly an issue on old Windows Server systems, and in that case the admin will likely want to decide how to proceed. --- ext/installfiles/windows/ZeroTier One.aip | 10 +++++----- .../windows/dotNetFx45_Full_setup.exe | Bin 1005568 -> 0 bytes 2 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 ext/installfiles/windows/dotNetFx45_Full_setup.exe diff --git a/ext/installfiles/windows/ZeroTier One.aip b/ext/installfiles/windows/ZeroTier One.aip index 8c3aa6bf8..147094f93 100644 --- a/ext/installfiles/windows/ZeroTier One.aip +++ b/ext/installfiles/windows/ZeroTier One.aip @@ -9,6 +9,8 @@ + + @@ -24,7 +26,7 @@ - + @@ -42,7 +44,7 @@ - + @@ -150,7 +152,6 @@ - @@ -231,7 +232,6 @@ - @@ -260,7 +260,6 @@ - @@ -276,6 +275,7 @@ + diff --git a/ext/installfiles/windows/dotNetFx45_Full_setup.exe b/ext/installfiles/windows/dotNetFx45_Full_setup.exe deleted file mode 100644 index 365b870b3b599b5e1310257373480ef75771073d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1005568 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

++ujt3uY?3IITFmUs**gJ3=1mp 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℘jaOhJ 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

0>mryGa2My(0T*~JF*2K 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

Re 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
DJjL!e}F+qo0Z1`1J-)@WT3RP5s}vmQC@n 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 z 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%0A{o62d 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

})k~Qnr7s$DtntysBw|!Gw;3dPy3rRdb4-@(sCa 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%0DS8#| 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
-*}beRXt0;F25Ix;JXW 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

tT7C3+K=2JuDUls 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%0DDz2ceXJrIKBeN?( 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%0DMQZ#utIcrRt zIV~5lDj1_*C4yz8iBHTe%wVcTTHSlY*l7x z5m!K&;jZFIBm0i~+!m0H8&e-UCP?!ytO~;KS3dN?cU;=oWgzbI4b&M2=S(Uq@Ia&6g{Ib1I|u&)jJ;aR6l5K{u>r=9ASxppV#)+v!ghCQd>E@FXuY0pJEgCJ#FgtjILdqhm;)Qi`!xyop1gs4e65MU#q7LFI=yl6wkXEvhR~v9nCc98Zr-f>7hY?MpDH@b7pI4eCz^t=8^JAY ztMe$@^j7m)SIu_=eFVMM;Af_&V5A?U%V4UehYZ1A9ta3&&W*IB?_sdx0G@I++B;nQ$+Jyb_ATOA+{8>`IJ#H)A6Z~ z;^paB)t-qwG~*G{P4!+)4wV5|G}Bg3kv{IFSDmHAQE}` zBt@LY$q>6Jl#zPNfq}IgV)*j2y5N^9D7;TYotu?}1Ko(xu|s>J&=IVhUE-BvhO3H_V-{Al zpg-17Z^UY?X055K1sCj*8}m98$K&a-SF>|8U&9x!5@aBVGacp+aStMNYLMS0Zgma+ z$U8GkX$k}u&7w-Tnx?hr+a#^PmT}|=rtQQc2{FKI16Lwloki0GesRhPv)A&pV1x7( zg7nA_4JgY|PU#PGu31MA^-P?q3so*Y9s2106K)YTR_skYWOKD`Sx(vjq?+h1?S^*;MdVdi4NDK)Ap2oT_v9ZW1z{W11s{W2yy|lhxVE1-Tt0s8PhK z#n5|9Dyc7Ly(;E}9i*!pYTs)aN3n$3v>WSI{qZTSgli!&VuXc8fY85d<`>b$Axffe-{D?~)M12y2y3P=u5FA@SHPXz4l zSHdQZGimti*S(lI3oCJXvBo?tbAU2*E^E=7Xvx*DEK#?id?rz02_xd=mVIcz_Wc>Z zOtAjvPni%gjNcrogzKibJHKdKSuRR8!1g6+ib9dL!mrGMt}gK-wx?Q;GyD z=){-ln`3q9VpA%HB0&RsXR)Hrz<3zFOBIXW7i`iG0anJ}FGPuFHI<3S6RFGtt^e}i z@M9bH9yK}I^$zKiEO6W^Tu=#r-5|et)q3nSP6ac|p_jPWd>|5(*Akt>Mv;)MzqFrG z5Q5q2#o1~TIxLjB@`5d{((i2c7H)}GX<%fs^I$s?!dH;M!!h>ENSJ3`dD&X-{o*C&u9 z1{3p85hdb!hGLrNz}(Udh7%$71mrEP0_k<0exl%WMg*a{wT*!vgLdTNfmdgw-t&(` zh_PrxvOe5Mhvd*)qZ0@Kp~3!HazSFvIo#?sX zTU0ek<{DdQk@!udcmDJyJ$Vu9sP4o;S4P{gG6>9LwMBi)ZyfqL;uo4SYm@r4eWiYZ zj-9y@98xi}g~Ag1x7Zn#8ZBG$K&$*Vg=V^_Z*+hHm4BKjkX%87mMQRRoa{r-ee+p}Ti)@D^J2Xg9$1=c`$0-eAkvFJR;3fr*m1HgpbV|=L zd^1VFdT1b<{dpZlKpKcU4^N~-oyP(4$Ez&a)NPMLSbsSQwzTvw+qY*k5FyM02ac5T zzxrir(jK0SYc_l4M;rh)MRG~-|GeLVg=W2j(>IyO)Q(dFC_Su5)d%yRDviUHQ~Iab z;G~aI$}0>5#ldwfdN~tk(v&VF zOL}bCO37#vU&)>8R}7lv7W)_{w7*09wkJkH9uFtp#;enRK>^-Y(d%X=q@QASn&tdr&be{>!T0w?eV`y z+p$A+oM^Z|khfgxvUheXd!A;VV{$W=h=uaESy#NHvC5JYUkbhOJnHeyb;_a-jW4|w zoggyYBk+|;bagG+m2-s$aqDw&OG~#%beJAO4&CtHU6q-7>4hMLdtY-}>A@eH1V!3W z(;qWTQ#Uz;mKT&N!gPHrxKsmCq+5Y)A>d!Bgf`eNsoDG395ww^-Gel;AQ*+owj&`<+GI-zf zRtgRz)ba*=PXEWAO=5=%ohp)1*Cz#MbjGDZz=B1FGF;8}Y~@R}bGtPWzP?4Y>wY?$3O%fr zN@qpK3|WbFZsc%IcF4>r`f@6P=C1N9pJiqe^-kNvNYt(11d?eQ(LZdM!${&99OmE*;9adgBG=4CHhfrnT^c~V0!WqG z`kFgfk6KRz>#wvO>1>*hM)RK|z7%os{^8$k)&PkjTrBTM5>5mKM$yzNF<)skW@hQd zj6Yo`3j(pZQW?9q4CI%^<#~?rX!-TIf2R+;w=PDCW>j|@`n#ipU#c8~?<*olwN|sO zTA+LNCmZio67(twr=%*311iT2$Dg{qL6QoP8mAV2wc&IiRT>HnYhb*Vc1DRr1JuLa zCF&EBpR=|N?P$`=#JfS+DZtRNAo8p&Buv`{4TK4JtO?Ss&cq6R$YR`n1ZetX7Y3@s zd-WbRs{#{*@yvN(9!9;1!Gb85DLJB7QmxbUVy05n2-xghEAg= z%S|i(mCm?74C|R2ps?5!t5XAV)+pBA@S!Q7dV;1f9ZvS8I}YIczulAz11Jyy6s>mC zH5d5{6MJ@eQ7KhW4|L_2t*JQbTpC!_1)A-6tk__pQL;=(%i zR(Ap3%XcW2vawP!L&L^>oi{RRGR9Z#6TEBHfQ6c^-H~IIpNO2V4)xB%FMLW-u~224 zE>OyMGOq%*F3byl)e%y#?4-gEWsQPThea5e3>_(gk_A)6&fR#n?R*~cK!zwV6VD>xu!;QjhB3WF!t{aP7XFnSgGaYb! za@qR}S{Ov%%dXCsyzOtYk`dL~0N@P*rcxToU%c#~rOA^q3||KbmlFR_?fI3P(x+U^ zwld~#X~G{CJJt_<87D7a&EWLlPLvHTclrS9lrq!WO1{3d@;iNWJo~P{9|J3cIVP4T zzAED=bEH;Zf8onK4XBlz7gcR>72H~4-^a!_iKL<`-Q89>bY{ym038}|>r6{RSrHUnRCnL}?<+GlH5mNmE z$N?Hc08jb^K&ASA30e7|-aDb2IpUN5u zhf8u7LDh6L?^slA6~%gPw{{^Z%yVd)k@|cPS>yOc`^z=D1%8QG`jP0U;grJ+UC#3t z>NsF@6t%elHF$-}?%INu#1TPGCRKs`b(vnLP zezi-89jafFc4`u!#2?NTX(FbfZGBJ=Xof-oK=eQ$$BYKYi}~nL%O050Eq4QZ7x0Z! z;?p-B;svLu75BW$-QuPZ#~sPDiq2ib(Tx>JdJV_H(+#HKFW z-h7TzXVVsG*?cV_ z@7m$2h7o+zaVjc9 zCfB?c=wI~dvMAlBf@i)0xs9~r`cMJ+8Q$-@yl;FQC_Lpm3%D0uIX_qqMjp)R5Amts zzWZfmc5%ARlPbb;?m`Aa?jZsW{GY!QV7dwSZ4RzM92#lMKIr3|HuRJ z)fqB=^)JZ$+vGUIyG+L@c;=%Vr5KC3D%rb}$FE*_KLy(!ORv~6&XNrn!s-@!{$1D; zrm0_HC4qTmfeI^>Bc*+x!yKB;45vpAuc^eOBoTd|hwX@z4ZTTxULirkHn$=KNAG^p|5W%SMwKba>!Fq0Bwbn&Qh#yRoUsg{UYVM5 zrgv(m2-F0MaYAj#C^bimke|!d?itd@Vi&$7dJB>Z@E(O+T3oRDjbmg>^L9DA?2*Bams|*N z=JUptr3DnwXz3^5E z5#Y|X3IfP25f_9&-U7M>#k}s zvW0GmTLee*Jos-g{$AohXhaqxAlooJJsRr*-K#W*72V{g`CqIOahJ!0l%BgwW&>)0o-? zBjZfA#4ygkKf ztp**-AwbLdawKKGccBQlZGqG1%BMQY@sw~S5v}lfoCtJCOET|%V!X{!S9_P1T^Hvs zSzEs^xW`NdE|F&!4^(<18lg(af4jctiXI-faVuwT95>t8!>}+?U!Z}_QTuFgepLB( zgZEM%X{GB_kYMvlVOoR(coriQxm_~HF^bzIPKQCdcAP2=PD-+~0(?Rpoa^Sb6RW6< zBRmP7b5N zp&vKWc(o-9OiYH7OwV`+pDw%hp$APh`dvRgyX~3tXYve|E>+^J2Z&L}A8vs4bX5?-;9@y?fsunqw{$ zLe*@{58ARQHxbZj`!mZ>{uCkPFXaXk_Vx`o+P=wblRvYgGi^Or(cDi@ACJNoStcA~ z`;#RB{Cn%J z7ujQcn+&fF09#XI9kzB!=1KIDDr1}&+CxRu{^2Y=$4hniq zO#HDEd@=hD%U|sFAX^^YRVPRlR54k>=JF3*wH{H97}mHoKouLzU8_kGV2rhpM@Ji% z8U9sSpM(KET%5u*)lZL+ZRDT2*Zc3Q5iF3KPl`|A@9NU8vQ`|n> z$brlD(xKbJDIud-GRUq>JkVxRDJAV*^cL+u27}d}3SU#KXJpG=RZbKFyBVg05K9rD zB=f-f^nfO9Q9qnVUpv@)^E7BYv4POmP76uI6)w6vPGLxCVRUqr)|o&ZD3O;QY*^s< zon8a|@A1U$2-Mtq7dZo&Hfj#hkc8XBq}abSwz(PbcAv|n#74vORZxUpHW1dqKvv+hM(MK$dXTuE<~O{xzl?0q$R_Ycf{Kd@a9n+M+6(%r5>a!q2|u&Q z>KyiX9HB(6fr9;IFhu7{Z(QWu$^#-}*M?9%NZkJqnRtvU&*HF3XqU zwXk7v1s_olYQZn&q}INzlHSQ%k4W;0_rDPo1*K&Vv>bQz<__|?yuZPVH})1H)Ud<)NazV85-cjO4%6fUbMkx9Qm|XVb0|5b5q( zAL8ELPOw=diZJ{D@w*a6(vo9unh=iZa~T6qK^!vV*>L2k4`6)ZB3kJW!jfAbPo?v5 zdz}5yA{hvVDC+!C4o;R?=7M^x1YbwOro=KsnOd^{v`&1b?H9IEnY_#}> zYX(=?Uj7AzclXa=WE$j-{1ISpvAlCD=TAV>HLxf&-fhH}{y<<%u7a0t+ci(zGTP?U z?~)*d-Y~aBb@yKA9rj!@B-ClAO!Nz}6T^E`=`+F50tp>G?k?Q5&g>&Ax09M$5;g0C z=XAGJlEwQxv}L$GCQ}+&^pN~vawd> zRid#lQ$mG$$p9{$SHWWGr0GVau|_Taaug7Rvz7N}P*ZMiGadtPeSk$bt=YOqgr;MY zn^nuf*c`=s@rJ}?|8O+qsQ^0MI47UbzJdWYVUs1c0t}#LksPZa2;gA|oPlpIz(#I> zb^Ql~pXN809b7XZ$DxG`&~~g^iDgck`6_g$PVBbr?nlH(ZE|F1RqLbDYAQph;n^t$ zXGxm#X;`^lzZU(4j`RP`a*2Z_G@UmZlEVcLBje8CRyVY zM!F-5Ks#!x-JUwz?y=@6a#OxpBxEP{yLvzmI{{eM_8`Ii{vscKYa7UFvAdWC)r@5n zxCpEdX6JYH>c&R9A6onQXYYyIRiNJL!S_l3JDMYT1c=zpy&m0F$rw>fg$dio1}}T_ zFR)E(q9x=NEdeUX3OnGm+8c8@bf@Qc)*}{dg9&pM=dZcBOF_o5b(&c6CjWrtN8>w7 zkp_TeH&i&tiw=c1`#pVt=$1GDV$3yZ%^;873ACC~i4H$Pd-8umh~>zP(l9pbH7O{8 zIRo6qRS7J~5!s@F!3lw+lEd=|0pe0DGQGR|Z{OGBB%;9bFHm#2{fW3L5|!ZjSCl8o z6|_l6Mt)HD)d|mE z^4~RHjx<-xHLLqIjIdzJ;|Ia^UOEpY1BwHlY{g2XrSRk z00^xE$tZqItc~9OcB3qB`>t!}Bs57Fd1@-3Q;&VcFQf8Y)+AW@>QpG<;`67>UHB>> zhF04|9Tk}^Fua^}Vfo3|(xzy~8)2q>saTDxZEzg)VPjC{q7rMzn7JOY6P41D{&Hip zQz<4;4|A}rrMN8NBd?7GCCLbjpPC4yk5b$V{~(ln zerHLLg>jhsG9sfxRs9pA{>%fxc(26sLh)B0ZJ4Eh`{7vKDA&)90@xM}FSyZkOuMQ@hs6m%Sc(VgTiWna#i`;Mlb;y6|o z!QuYTIYM^lAI_AqyOwo-+%@JqKy=}v#2cTJZUJbKh{v}<}y4Q+*gt&NhjdBJ`xA+`>l1hRDvw~EQm6P4%-SEv~b zq`m#o?O0n5gH4YR@<30CUes!gaYr$gN9$3SixIaq(}TjlE*TB`XkAu}6DXk8Z3QYT znKr}Pc+KCSigIl>>Z^x0aea?_+?oin*6XBK9ivM*mQ%bnUzT@@-{O&{fdS@;S;$EJ zfv``}c!zkZzjVb6OIPE?oFa-Oz0FT1*f*rg_12%y=1{7Z8jFiLs|}nwm!TejwCOy$ z_2jRB_X3Oh1*@=18%7+U2a!2|b%}8?t8#VrFZUS>p-P3Dngyhi-R!R;v-|YgAnVQJ zQ4i;9DBovSfHbkSFgS#A82f=?R7FXSf5NbV^|YcJz_dIPMwGap^|ehQ0l^@>nh^Ls z&A;2`nN51}<(3l+*>Sb{8m*NnITA4!OBn!4(@QQ8R zog4%!3jAx?1i5H{Mv?4}5-QLl>$7By4F{dg_S_eo)HIbV zE;!`>@qqk6ivlgD6m%4+7?370WQA_>S*D1E=S)_m5fIa&FXwQ@Pbq~vP_boX zPi<>~sEj`Y5RWX&gjv`ZJ9!Fz871^&2*E|~=}Fk@eBnS{yh+e|r5SkN=vJW=|-!f^kerajVy1!Y(0dKkYpUM29N zzSh|t#B0q4lKCqot#SJiqk`8t+jq*?ei8=3LL#^_nS#Z z`Yh;2b8b~|S3YcDSk-qH%NblHUpkwKBv|98XsXh{+?$J$Kq)mn#sbI#cmJU`9hRGD zh}_l}rzsA~nh4Z{2$7PSX_~8qB^9bMc+_GXF&QE%{PY1`O9euKtXfpZ@`nxo)gODd zUyog+82a8+QvDgHQ0w@b055_+p9wOAE$G1%~Wj0?IHViCHSvGzE-{>y6_p~l}Dy}3&oa!0v zF`Dde@r=g?MVkZ{qO-X3z?)%-lq6Ip`mD5uJm-QPC3FEF^lDCbm-QElkL-I6M0c%# z$>8_UuAA1lWe~#P@uI%iR*K*i9THms1Y?D%l-HtkyYyKI*PK(1E3QE)UOZTv{)uLo zuZ47t0LxoUm`BkK&;Q`{07mi@GQtsh*pw%ZKp8M!CB3$`8RS~nHMBKZ#yrt0Df~r7 z)RW2JkI1sMJY$;qMZ8N4BXGn?O;EqW+DbK-O-j#HR5EqFsuGCKqSHk)*^? zmZ1*)LpED-sK;wJ)pUhCZd}9uB@i=)5c7c@$xela7)`~4cwr(`IWiI6tVB00BjaiQ zG+))p87=J4!7bpu-<8DyXi&_ImPfL3O3Ip9U_5=^ng-ON_+h4b1w18Sa^fVj(lQys zxKfb@Y9#|S!6N=}$92jzhi(S1%2dIOuIagA3)Mms3dFBpX4Tc+)@HI0)HmLHEK z!4T4fqWet^&txa`_L;4oHd-I}gwQE?jjs8g{bEgzpz!VN3N$^hAnjP1N2g3D8Mo(!WBAZeJ8siK5mPdF1qa9Oz4C9;>u zQg^k)fs0gFsNZnBy8V%>9&r>7VGf56Hr5Uf&GYJA1|XIV;kZ^!YZ9@AqO!!0@1m7* za|nV_+Pjz4=7H(VQD%1`p=mk1kA%vFlDj(xx+=DvsUT@_(Oh~thLvu%0tC(6GGR;s zw}(@pfkp1^FSXEyx~#?Y4=I&6qDUj1=fcjMag*?XPU`{W90eLnrynQ0cXC%fa2B?( z>9FSPujH~!CPmFw}lQA*>!` zh{ccJC}H~vqfq*((-|-o8U`s-8Xe&9tEJuWw?k=yYVYxQ<1 z5$1FUHX@8uFvmsJfx?c?a=ZGrJL$QhOkkNHBTI zex^HfhmP58OWh+CXAY#*^=)~)>ec;S=)dP%Ewv|Wa~9Sy9|LIV?tJOpU}}YUjVY*e z94YF4&0#9k`JmOpOVxSG%q=PpOcZd{IK`oEYpJoi=0gmaLGc(Qlhr?eKMnzA` zMfe-lVNQ8vO*>FtrNBrg46?8Hz}T}_YrQn@Iq)uT8C61>tB%i&J>4 zP8*`t3I8h9+xmqxD6r;laIWOjti3aYrnL~qd zYeclPded$?6D5oV`@JWgQI2CYyMNP@a?((wn%8PF=X-Scd;yZ^2-{a5x-$zuM`s2Z zi$XsGS#H>=TRRD+-W%}#F zBqC(9U^iGFhnFOvYFIvf?;mQsWava99DqRk*6M$fjAG~=^EAeTcQ@Ib#-;R$MWvTm z9eJA~<)G@m2^~B|Q`!_Gb;LClxfIjY2zmqE;)B|I6y<%(3Su9o=rvhL!q>ED{-}`) zgIso@T>s^!N0eht?O!P`O2+F{Dk|q|8joR*%Zaa81m3AckY(j zG36J=wXb@t4J?yaWaVOzTVO*;|KKE(hCe{?Kd7MHFU^?&)Oykt5Xyx)@2Of&ns33n zbp{Re+vRtsVf0WJEQ?0@NW1(J-#Ym-rW;f#W3p?3ignT{E`;;fnrg};WN1g_C0kTa zm75uie|qW9Mw_l#Z{O(X?3KyXl|Aygk80-rx5~mcU@s8?oa5Q5udG7W-x3VUoigr0 znQ1Uq(@y)Pryb>Q@}>BMgqHI9QL?>0c84}ifSMV6q=nb)wvYRStWiS0(sD3k;?!Ge4bGmsZ9V?{BifLxi9WX|Igjk9bjWk{7LgPW4(c2tM3 zO(`^y5G(EdcIw-{PFEa3!fc(zefa*iU(P?Gc)UnN=8_6uYk1X9S_TqD1+`3xuFr7b zVnfDh98)ufFh}HNkxvK6X5nIS_;$YcCsNk8IjS| zy}n3AkOTF(U?L-Z0})_1g^F1O?c{8Di0iNNiW_9zP&{9f ztLLHJ`Ahl$1k}(A`X{n=Uw3ee7Q#53%QwLAvLdg*o%fsSY*jP0*r7yF;OKbal7q{9 z104^1tupg-z?=W#yU;81#IsW4%JFC(cDaL%7*#NHe#Co^j0kGwc3kI0X=>jFAr}!1 zwQ?m}scD2?Ei=eDBKf}%+ZkWU4cAq7h!E?dQkFgLQ<_k@9c;`PDK(#zh`-8zl1Szr z>IQySSrTnxsgn*Sf7HC~QqwyY3y=MR0O!VwcH4|HL6b~x{b)?DU~;!!#(s4*Ds{k- z(CNb8lDz9}RIj6P(We#LEXOrxDlTIVHoIT<>I_qB4O9mAa}ZMgRqmnCFUx*!i|na@ zW<>?Y%SQrGnCemW>T5OdADVxn+W56|0y!R4ObG!g=&d|u1jwse{~GYQ5>>-1>A|B5 z`&d9MCsb)bbO%dvz)n-M0pRP39Ju$Rb-ADAP{Ia*hEfJ*$W`_Nx*>H>?ecG{3PTDc zfn?4@ux>$A-*AN9v(OBWwt~l`4&AGuSzYFW>a;gBJ;T)Ppes92Ann_H@X|$=tx0jv z%cXv=#6{F&E_?0$* zkq+pZS~k|B$Zg)U!=onu#wTp;KskcLfk=AMjbvn<{kfX8i)(S_I(aO}=!3L{$ZXS3 zcyE*me*QIx%^oK>hE1`O9D!3&B8*iO)r@VY%2 z3rk%F-ioR=pOvLxPkM8MBxcec@n^6iYy`y72aHeL>S@nbh~2JJ_~FluGx+u|qc889 zYo#dS95I3ZVe`DAE51z8Xf?YN7n27s5c5RJoS7jz_(sMesosXO7kYf@h_m;gaH3M5 z-p#a^F0X;Ms;R)C5>N7k0Q28dDYR*DByTRH$+8tZ!}LB?0VReqHF!OU&zWPZbZnmH z&i3c=(=K>CvVYDz#^w?1B^eSeDdun*b$z?6vvaCHqX2C%pD|@8h?bjfO4j@FP9wrG z!9&$@ioTl06`aSP4c!Qai!(m6kt#i)5KFFK*)kWgVtsbJ)yelSnOsRY693>vT7T{& zb#e_M(WY1lgmc!|D`<7pp&KU8(p>x=xpUDEc`6G$XZv0^`_QpQgz>bzvJE6mNpg4t zFf^q(!J!VaIV5Qmc;J&s-|r!7;Q1rZS(xZZ*=#YJ$ZP4!nQDNRvHDrIh=q({$4aC& z7z*_Y^zlbc%@z?bM2}he9vS74*8xt&aR%9#d?AU2UY^+~7Cj8ii>j+jL*5eg5+PKy zD`psud}Hv`(qtZG2(jDM`H@9+G`fHp+_%o8w5_F%wtz^W^#27e@Zr(S+fyhU*9Yww0O151ZBQq?Lq$RIi4&T?5X zFV7vukz5=$2qXN9LHun1YqV;?vV-At<}bTQ+}6J8Dq^!-u)qvh2HR( zFQV{HiKcP>R0zwxfSPDq zs|<ZVGztZ0tbkp8A};T<-iK@%X7&YKsK|y`+xl}4a)PKjmcAvRBee9t zO!R|}W1Vp`!CA#^`X)}IVJ(+Sw4>KUj2;%2u z=bQCfu^i3Bfkd|3qbN&f%K?bFaHIKWm_IM^ZHD)xB z)+iA#$Tqiow|h_Wu$-OszfHJWa>mi-1O0W;#aFl9b8o?$x^dGcony;l)9H;dUKxm7 zBt`MiVhTyjQE`N&I3Qe}MwsY#5bhou%Vs9qve*r!*?sX|KHH`?3rKr`lGn!Id~=`E zmuoJT-&&yxq~w=e8o@lq!9N*^@rdIWIOL@%PWw`10DOvT;5RVAPxsy1w%x&frX zoGo4pOVP3kDk`CI^Y4}wEb=80&u_y%=lD$cL7bH-!xG+Kh`Hx6veAxw6!4VJ%vLT%0Yz;(_Y?}9F1xxS*f~0Q3nV`sO zL1loe#P;k;%)P)!UeP9f3;#W)d{h8C?_VLo#8|A0M{c!f`EZ)T@ExCH^+L2t{-$ai zBpt!vsFZZw%m%oP9%dj*L zz`DmPMcImwMP3=(WSz#!gey&Oy5RGz-xa#6SaZo(>gq{1{4mCHD@{U8>o*v=%QZp) zg5lezY?9PdkemxRQfxAGMP_hx6ON2X&kLRerO*(Z+u4S~@uoL8FykYKZ6$AMQ|?W~ zMZP*{v5Q1o^6co2$}Z>k0jXUJz#4q^ywIq7Nxgs5mNay8q@w|9Oy|7lZHA77h)3)k zFDPGCsSPEa{i7jNEpM0?t{ZO9EN3f*g7fUz?3{w<$77Gf^EIi`eYVO5lFv`0e@$#= z>2R274wN)G4d4PW4?P-OPkJt%l#H>}*+-!Ve}Gs=`J)iTEmpdm9e9nB;K{r{&qrKw zWzx{&eG5s8L3vU)bVlIx2%~DCyc4PNrASk_BzdDw%*w;*ESL> ztnx<(A6vDK9{AraeY}MuD|LhMRHbN^~dFl1xfn7N_d)@O{|ws>1r*0#V4PVT;R8 z%3zRweA^9R>xSdk==Elw-7x@}oHg*28&3E|&MVAd`bb0P9L(VjldjOu<4m($u*-BQ znt53~G@CH3CDDJsuZJcxN1DSXsPhFQ(LHangwRI+33gG8*M%1G<`R!GY2(9Tqut<4 za&LHxN^ibkqv#18D%-zz(C%u;C$ddn`;HS&+ZWe<1l5q=sP<25!_Xg_QX+wJm)==T z^BIs24fxiVcE=lNEN)*luWTHiW5ick(@)-o;IMMVKlXJGcv4}mCD8zQBXRm_=`J?I8CnBzvz zbs_;QjpUpSnns02*Att&Q;O87f!!32XZS)vmdID68|ReSBqH9ALykx1%_CKp9KMj+ z>N_EWvb{;LkzcTJUk->hvhb{+qsH$+)}4=O!?i)cHJm&8hliJu)AQf> zaEhQy7V(KaNl1w4zHRs0oB>I?RvFgRNVrkNdB81abjWTvKstNB4t^n_0ZKv&=%=TE z?;F*obk1x&>9z*>6UCNs))&k@m{iEcwqKu?Bvv{CF8z8>EF03U;?;Obu=?DC6}~k z(1qILqI`~0@2Hc;OoEh1CZ8oF*-ww%Z>8oHjw=ZoSI{Mt+`02|_8@}~+UmS<2vZ!U zIC&udy(g2z6vKu&trIJ-zZTDFT5HG$0Uk2#7K4z~n9HaChs7JJodYsp->;{{05IJ? z7@W>urYRyR8S9v1?@}^ffjNTi41eFr3PkcgdHPn2;2jb-h;K0fxfm2Voa5+O?=&bo z@N$P4kE1Z4gmK)*)-SZ`uh58mJ%D>OfD?348Nbalv!)f&N-4%RM6YVxK+o?RVV0A3 z2|E1*UFxp)pXqncp^BBooCs8^oh@q(QII98I@Rfwhpn@xH}h~)cL4Jf*fGR7=~9Wl zz~NRkhCX%GXECj~T|DhT4Qf?{`^46$I-dyBq`aMm>}s_cR3%c~QJpx^+)NqYN&JwGs6n{oayUrPv?mFe=xMA}h}Xjq#0xNJ ze$N_;e^?7LZagdGHHd~Yo)^FM(T34E?*2oB%nfP5ygCjOnbHY^{wvN$1Xmu5&*)qP z609wia%A>zdNPo+Vd0+62NZM#pI7;r5ydUkP}vjF+rpiNPzO%_cnVJ&nRR7^nfmp> zWc4}vg*#1Ueq6hXmtrn@kq!=M-u1$&8Ro^gj~3l-HIW`)jS9Is8Ww`~bsa57AHM=?k<3HvMQvr!T@jC1Bnl4F4C!Jy0XT$cD z&_pK6eRg9my%h{1W!<9aLl%-Eksvu?w{H}}@C*F4Ah2hg9lm#Rv87d^iXyo>q{OJchJgsL!U&I*L`6bRg( z=K~6=T8V7nqt)bv=*g+{7S!OrRUyFvfAS~4*z-k@>1t?KtCc>Sx41*JV<&kMR|(5) z;G$uR=ue3gt`3n0P>!6#Y`H`eNX=fQ>2)qGpcPK{H?qZl;|5~(K(|6jxlXr6Fnq3` znlwv$^-Y7i*Tx&OHee67`;evCN~TYh{^6aBT%u2A<`ESc=7ycbOXSnx=jN-53{(Qw zWxD~sqM#tfDK157eCJ%%!yqWN2Gw3i3x^fBcHQ5!S8|%d3ym3ntRx+qivR#YK)%0F zQlI-|X5AHU(lHjSrjtQ{JWZ7gf!CD4I_Z;;0lZr?fa$;P9YSm3j{0&2KjX`5H%82? zSj`ht5eOB;7Jjd9Q*9m($>d%n%cF+5u0ETVsM*a;i@u6AZ?l(1|O=X+pnTvr96(Sir{m?T_mUDtI5OU2mAN0l23vWc?@8R&~54InT=#Mrl!-YIb&QZO8NG&_AX zm8`st#*B{e`ySY5)CzJ7GRF3m+%FrhP(y66B(z~z9n@GuHQ-}SPvVzzFh-OvKleM z0&*xAa-t_|teIW_;8yF6Mu~%{lpAJlRJKrs?e_YgLH+L~Np@CcmDZao9a%2@l}Xph zvNf_X0J%GhlY3Bi5$tmPQJ}IJud)}4g>2O;JEGNcAzP$#7t&_(hXgU?4GEolM=&HD26(+WhOZSuM{ak9aMt8;Ao+mNlJAA0OZge%#_{Cz} z5fC;?5zxBtFsf7J$nHZ%N&;t>`2%T@AP-rD`xXUMIv@sCSA5G8rbBDdWRj&GO$vY zy4i<_D+F56VN9havx;>=_Xj57y6UEwrh4qfvhYq={phMV(pcNOejki(!ZKeQ_=^4y zTf^oP@Z^bNc3%(Py(vp`fG+1nz)EjjM%PsDuggjGkAN$j7EE4W^}nq!f=px8LKAlD z$l5Z2bL{#A(8;{WXWePpz(TJB<<^$c$64zYb5g*8rJt1yu{=MX-z$sy76%a9EFd8{ zfp&BSh!=Qre=ZBvyY_2Ys_hazFBC2vB*~bTYymp;Uuo$33%K}D+^eEqOJq%;dq4OM zt9A!*e52~(Q}T@8zUibvj80sHI{miskY!k?Lb_7DT>vR!;%3ybjW=R#8w5(pRSg>> zuaE_7vhZK`lN_L8)=kmJ-2wE5x|`6paxpi-f5wz2#js>`+2 zGz6CL?%_+MOi7ct?u%D5gKL=KVd!vY{&JF3qMs8ez$ws>AtD-2Ia6BfAgXGSze4eo zm}KYck$7KYW+Ij?0da)tN0$@bY3G@XqUp*-80J+$?9gJDK_a~{WxfZ06a5G$XzWIG zTS(&1?B7~8ICmlsO$@Me_efzeS56SY&llCedBz?w&NqYQhD&lyL2lQg>JL@`9|5y%r6aOIyV|4*}! ztEfi8{ws#NI`IJ`FIZr>j&n>VgfkRET3v`Z(|QQtgWt#gQ&p%XD-a4Ef|_D)5mUBV zXitw~GA{c$9(U=fO`+1xkLIgx&B_+PNgkkE?`MiU+qnQ_HN?;{uyD(s?EhnM2Wj}; z^;CZ#!blNYe)b*%e$(+=@qve>Srqs{qQT(uE1^{8$&b<fSbulQV4XPvVZ49)} zw~TM%yxc*U&J+ac)#ovhGEY_0RDpt79g*1mAZ)>izJ3_YflH&6<2xr0%X$Pf}kbA@KFN6~1T1<_+ z-zk}Lt>bN+ZWl}YsqIexLAfjewGc0kIcZgPsXTQp#k6gk$GdmYjk;XX!QLED#6j|PB0%)rkR=bzas5L|4LOPI zCPP^r)eN5ddt|bL7b`p49KMFW>nj~tP-i)FEKX&IgOd5})sfpV<;1nZHSVX0tb@;` zpqjuf-wBob>AGwNem)sZSbhnOW%^dYMamP_ua!jFa>p9`ei1%iCPBhdQ=sRZEa=59 zkOgD21_YW9Q@l7zyB;Ie*FGIb4b9>`X#GASv)PWl1~J5$Zn&j+iblEvl89U!$!=Ni zI`X?k_9);0Y~x?f`U!GIpJU@@eWs;eAl1IL9V$VfkDef}W-^;jhl!2)VA zN_Ux{+ceu}{V;g6x@7*91>LZ)PV`aR~P^Q zXqU&<o3vO42r{8RwE{cN+#ol&$U>|aiUp;w zMuW^l@%InCnuSx)XY-k*|Ic%}Q!)L)gkqQ?{n)*aGto}NwNB08z(s{paWi^M@wL(} zzC1rJbH*vCcWo6ggeMwcI(P@G3Yjw%GXvz^$wYQwBA<`lR1?2z9e}@^aADIJqww@@ z>uTX=mQae``+oHL5_{*y=^hYitPbU}#E|;=gS3gQVV2t-a}0LZQFvb93A(QN=<@q& zS~H8&-LRm4L3IkXDWJ7yQ7I$J2(A$Y7*NNYmKWy?zt_`5#x#DL(*T>!B_1}EoyoIu zMR@rt?t@ZZv6$SPv~BowscS~3%rl2}S61>CH^cJ=Kw9Fm;HEEaf^8!=3s#_#G!>~khW?cMYgeNBp7qvy2Pz; zaJ=*4^FmkVS6Ik8O1-zr&GYt=b_{g$drTZ+V}{}SLG!5MTYh#x7inIF$P}`lpyYpv zMit_(36ZNwRB9yUl$IJe3A8)l!vM=bOD4a|*rf(~G5d>O{z!v>sV`Gl@r9P3e~m)C zUTVx=C+1-V$NN*{sZzlSzdG?hd&^SUcScd|b71c?MJCZ3Qw2`nd3_3es=~qQ5FGT1 z@s^j4>{PRqT6lmcTG0CtuvW4A9?bnUXFEerKkxmIn(Q!sY{E&_5vBkDwX{2)o^)2^ z)|s^X^E0SI3%?RB(7Rt-Iv8MAoG^2A8Y=vX*9h%*#E@}4fBF!_|4^(~k-N73R@Sf} zMw2v42SGmQiHE%;r7>@7(DhL-=>GF|iqSQ?JRVzZRBM~NG{OG=(A3a~iLuARZ}V@t z?yM)I;`U#OSz*Og;`P`=xE_X(itBoCMN8p@jdzN ze4!le5UZtejTVYSSXWE)`Ipg!iuy}t^pMH=+(rI+t<4X=<7fWJ`lkIAb08^Yo)-3F z2#v~3)W>#YwqTJ$EA?O>ZVho~ayQKII*Q3q#`C4Fk>CGnL(<|TRqX$Bo5X)dkOKB5 zYBE1QDDxQ54w>MZc_>BHfy~R;r7$$WbT4|RNg5MLQtguLL7tdepP}0@TZV&8r7CMQ zu+TMA{D||HT-8n9xo>e=C7J4s2V%WWq}zagjbG;W@i|Q$feib>b*C6w`yxpiY6e=) zI~!Sl@_q_@(wu5c60Gcb{C|rq{g#vsW1}4rctXp->oXuyWYrmChoJc@DD1GeQH7v! zOI`zK-C<`2g!>_gnp2*<24ij)!>^sm`%N(Oaw)}i8#lEktMx{(pInDeKt=h6f;p+g zhuMu0{|OiRt#r?`qKqdl#Ab9o#Xu9wj5?^6{`FB`^SA($9_|$(B3oP6+_zjjLtrh< zT}u{sG|VHaIwi;T`u0yR!fJ~ z^G|MEqj8sD!T{JL8sn>E0DL7oiEaU(&y_vTuU)Sm_?ujIJ*UO->O+!}f%&~55s1t* z%-=mbAv{@?UCklf+T|Dn8?ZI6=`eL!TyFyZT;_ zhk4>D_rT!~XhpfPcxJL|3)=!%7UNVv(_818q>} zmcO07AqXIHe}FMI>0oVRUP3Ep+nTKu%1lUNQOI{W5VEdb0+%_U^A~j$H*rml?1`P_ zrNibzXKrc8V@q}aXmFu&s7~&4F~)OoNtC@O8Xnw&sk~j!(r>cwrHfMGrWPWoJHqSS zb3S~W`^jTTd%RY~xys;X4JgBvqf&(3x4-I}1r*0JaQNF-nf!uR(kph zhKs+s0R%2+KHQ8IOc7_R#I%7c@MfSp^50mUB)DA@es=3L90VLdj$^tOoXHwT&UIoQ z8*Xu%97}mUt3dj4-ik%%huEN_@KuFOvn)^7Pl1Ys2u^#YFMz z#wlKvL4ytOGHvYQ5gO`3Gy{_k-!cC`ZC#xOg5N2n6I5AK7>WinDV?2)Fn5Ix5+&@{ zf;7#sEzgj-K!S?`F00~Mcj=Z^i|5alr?hk&KAU(k+)a1y9&!^?p=U_Ax_jD_&f7`u zdqBNISv=-HW2Po5hs}*i70a7JPp60yE(cBGwqR-*^IHFCU!`;21#qP|7P~H34_dKdr5R88;*( z{fJO&@;v9#(r$WKY;(M=Rifh8n9Lt8ww@q5NVZ$oKbcBZruy6_0gu&|3E%PMZ{w$s z>m~%rQUl8L_pp0(g1(gKLE&UDljeqeGFCJTFd%*b&6F=HVdNgZtIH; zvh`e**qA)kYYj8*$r(^&BTOaRV+qo84bk-D+|y7~xZcU7uz2=)H=f4VN@{A5HXxVs zuO?&iSXSi2o5@!EnDrMZ0M4vL97#~EW7vN@z3$sCxSqkwK(FXraP*@fk69?!aVRK- zZ4?jAzof2$uzbsuyNHw^BCD}j)ZOBGsDWKK9t~`nLTH5k#vMvuGyt&oI&_fU<_&g| zUf{MVM|Id~LZ`&u;!9!sekiF+VGRaP@nL2Hk?#k`iuyARyu{inTOSuB=pKj zOL!S%al;-<4pk-K){w&s7zs|%-A>uFgacXG)z z8{6#2dj?piWA9FJgnJ4)gv*LR@GlenpUw51&_=HwElPqZMZD$feJ9nUU8HW`k)}!3 ztnoLgLHuZ8>svd-Ss;eeKDeX$@aUaF;8Pe8?~=b6)O2SOnco?@S@GCjhP*)Qae?t*1PygZGQduaWkbtl-&9A=69=&Ekeg~88Y+@xCK zGr&)^2*>9Nv`S?8nxr4g|!3EDn*(135*VutN&jlO_s93$N!G z9ufoG4wbJn4JWnYb!}cJ})X zDD5)SucIdmvF`%mowJ5T^uR@0z?vWVZ9a%3-#HNiZIWd(4uB=|eSMjSR`*~_QE`y6)>W%{?pZ*Q_H~^jOD@_(?^9q62W+?91 zKHAZp{CsDtv~dyE#t=7_Q}E9Ff7K{`-LYQ|?PD=?G~_`WNLr=7X)N-nr8v}IR3+ed zso=O+I>eZs9k5)fs_Vy93xZ&<31u&;eB#lIa(zW0ve%$uh7MPQ;dmol@c0cUV!xsC#A^faRZewmOGQ8fc@WMEev(b z&GN?)+$)FB;c@8xRCl$qZMbcts-X zHgusFi|PZp6}jlPj`ld@h53vUz120eI_N4nBMjon$=f_KJ8)8bQuD0;he0t=1y9zMRKa zPlybmt$rHkBq(4h4nP>NpmCA=&ZwhV*888Hr*QYuZXKj*lK;|v8WKVc`97QOkR^;< zF+$Y$GS~OG6I3F5Yo6U9151P~F_vN-#ak0HUgwFAi=W%CfNW=tMg*>_%yJqxbqLz_(&)`D5-3O3aux(5y8f%8t|CHfn0TzOCL8en`r<|P@S*2tC2KjL;`-qMU zQ$Y=3eNUn!dm}A5Y1m9~{G+H-3TM(A!p??p=BpA4X2>~PAvBuZ z@w{gUh|8xCJxn96k3r?I!Tl$6t2G`GF3^CmBj7&SvQ6NZ7S)Wdrj+AT3`l~+puhtp z5@zzN1Aeoea{^FiGu6L%0pfYajzVbJLo_XeGW6Mb0Yf}_;Nf>d{=63i{jq;nvJFJu zUEvwK^NvQ?8<}$&J|;-yb%^5*gPP6cDQpQP;X$)bKW*}CYKeShWJz1DsYjT-Y?ozWpEEyKyi+zUZcd?WGF*Q5kW}+tNiCH!tI+^4m|YV z`sO<6$h+W6TnuYleX>CTr1$liK+y&fSGu5xWBX5zv$gYv)`g3}~kGeKOADW|~x8q9iT#ouw<99=+6@`Du%VYKJZmwV^^1A*~LLd!psWN1g-3 z37`0CFG~$O6oNX4g|si0O({%s1V8=0yv%gh|9v@C>Cz`=w*Vrjn|RrG#wcwQ|0^WR zOf1XZsG9yVRN!@F7lJF%evmRAUSCW_Wwa$8(ybLrH|rk<&m}OxskybHnrdprFnvYj zZxad!taj}ttj1xCdytwciZ#$XFTPHRjWGd!M7cG7>|56@@LOW}@f>+a^szlz;dIn- zWucNb{vl>oA`W5fM`-ZdpxYT^u4MTh$deA?LBM(lSxOw&Qyqg0W-X|XQFJKOK|#D| z%ptITxndc(e6Ed%i^Un%Lu4QhjYRk)rs*b#e+-dUNXbV>^KT$cxvn=7=$MKJ-;t!S zsOb5eNW4%UYl9pz%k#VH5&z~;s7jYQ&y#;OT2tLyop7We+K*}Zf*JF$e9-~6SlE=; zY-Ft?^&J>XNt)cA%tp+A45e{Tv^~3cbsk1lx@ZI$Cb(R9J7TU*Ny4lSZ>_n&a&>!y zE8RKYYBdm6LEsw>xTGN=dY)bV5ys;Iz#RZ@{SMx!J#dxsNM}Y>1&XUZvD4c5bJ@6vIkB)k#boC)N4u ztpHW_m6mj$ZakC@UofYLf0gksCK%~dy?BOQvVY(<4D6`@Wb&ZLm;RD6-II;}fekm@ zozc=dW*tM~PNg`FOq#uPQ%~Qr>>-O^LsSMpcgSyMW)>W{e?N0GwbBlnj3bb(mR6Xt zg@U|_rfVs5e)~n5`jtSV#EyeZU31npy2I=q9MRobQqR1(Or^D+FxK|VQCB|`2*y{v z7o-K}QE<$v^vrY~^lDXEsZO#33`D=R%_5fbEzx+@@OH}fKWf4Q9sF!q-LeW%FxU^hVwv%>uUt8T4mZK;_{zho< zuUMy4WN$E*hnLw-&P}&KHfhFCeThL_Ach^!Vo`TsK9i(1)c2(WK8=tIIW#&iPJ4A7IS*hg}jajAV9=<4$_*gL;o#}J>%7bBgWt`_FT&Yw%+QfnBH!nz5pWJ zy-8-YkEH94B|2t-`H*o!)7a4drnitP@$yhi*w6DbzO=sfoXU(N|4E=@73rMDpf}i< z*YTAMB^5+f$?p#Yf5u~qwtnWHEBtwh#m9H%rfHUF8VP3MC_>Kh>m!)l`?BixyU63l zQqgZ_$c$sDsR!aEX*BSW`mq4>AS z2jS)@gHFoTGBKX+p3udq2 zh%%eFXT|jM>A>0bwGjMfp%wT78^WTLnTj1W2|=)!-No;yCN71fTEDV)ftyfF>ZxD# zLo%Y7(dgT1bbhL;iXxo&=;@F*bz4_}HlzeZF8YQoU>I9@rGys-K$|TN&N$Laqz|A% zsi6xYFS<Iyw*hQiW*RC{ErzxW%$c;T{98wz?W=#KyD@$Z8hK^l<9#G!<+tz@xOAj`E%HV^Oq zV->|J*^fmw@luSu+wsf2wb`?MqY|`x!*`e#4nBa~8?o@JeuvSVIJaaIJ$_{{8N621=^&LUpP%xrN%$c(8CB)v9U-I{`(5Y@;t}Cqlh? zA4}68+`uy;A>lk-ysz_O7&_3@sZ?z%jqPIdHAAEXI6c?p~+~`&5@_c`y?Ynp|Xki%u!-U~7A-t=M-N?sak- zzhgdZ(k)`qf>PQ(%ZI=i1)|4l50tJsN_ixC1|YPk$ToggYB7~r?ifd=;9e9b0c8G7 zo?=>WvjTAr$2!2{-Cr>>*=Q=mHS5YfcYVDxRC$sPS!!raKNq4$mLx!c%WSxL29$_H zo3lMF3!#)G8`Q%(1k8vDR&51?8A2*Wd5xRX9o3a2;|OaN4qMu*-y2MYz^M0@24!B4 zLtGCZR6j#y^Ij~XKv+wZiVfBrnK;p{cODD}lMMoQqV_+`)4_&@gqJIQ_Y@9A)@>k| zl-!Gxjq1M2>L94bP2FP*YD~mB<_8oWej^Mk-%+m`YJ*&a`L=Yzd^C%bB%8_M@hwjU zM!{Jo#R1RO7^zo)l4U%3M=wI;GpP%}!KaDv+H=GV?F3vFCFL%U3>|vUNmx(BGXe(S zOF!vCMJYv>Y3QkwiWi`ee+BxvANYfdtno{T_p>D2HM__Z9SImHW@I61-zOr^bJW%>okQ3ir2@7&Y^~;vwJvxjsrX=+mHS>2bE%-8YW!VNWeal+7jp&u@+NVy=6&fCZ zekyQ3*5!4!YG5JyEqb?3>hNx!gJyyimIWsE3{RCxrl%B%@;tS1t!aLhO_WK;IWNTM zzPs*!>J_uqBo6#1DqePH#3uqcb}gggeK{#&Br0 zdnopfXs@ryEm)S;y8mIR!)`$uGxDBPlUJkU@y99X(Y2EVWi#>$>Gf$|O6KVCKDOQy z6t5d;c&%e7+Dw^S@WCOTB^;wUZAXt2IYQ{=P;e9=dnti=JMdFP_A&STdv0=wv}=jN zg6K>e*acvRW;+#+=cCc*VMXPlr`2b#RQ-pWx_ohqQ#6P#f-$tWv_CKcCrYMs#TgrK ztwiwSMV#DG8GL!guZvz?*{m$qHdHZa#rm9FmJQ_;c~x z2S;!(Ot{Ca)%Pz|J{mUZ@YLo2#o8x?gJZa{LT1X(t?p;8)-`M(DszuKZvIAskKfV{ z{u;dH2De2`Urb6($n`zRyyht#ddn>YSJLr|`n3|n!kIqHZ8iftEe$-0dd#7gf@+?m z4X*2;o{>KjqT$bzU!^0ZN)lEg1qF7<6F;!xEjFV+|MrT-T!2kjjiWS3TSghC1NJI6 zto&IBMv@u0^cgSgOR)A^+up+T5~+GF1wKwnfQ!~|)R{i+Z4n%BdDwdhCVtaQFchY& zXHzb@3UV16hFGztN1$NgC2B{rh0fOc9;(qxEz_do^y;_6$mMJiZgz3^*qb8|b^sPU zwUgRmZEeSj-ekv>OIF38D1PV`BN3b73_w#lk_9m8njjrGQefnm4SHzeIr@QtNFCSdu!EVMIUYb%sI z{O+YjPn5F8mGeZ&2K(Qjg=t|#PZDV8#f@R+;YqDMRLo7h0)!^iPqq=~h~{KFL$#1- zn<5Oead9GNtQ#ssc@=s;Y@?kWqKSaYU2|xSI2x#Z&uD*Ed@rPkLW#dlg!TxpTMDnP zp__^8-KF8H7jpB-f25_#4HyK~RWB#53DTSS$W~ZH2~w{Kb=={|oGXMJ73pdzGv24g zIaAqVk($Pi<5s`7$p)!@IU_ErIX(RB)?B7YkxCaE6LM+l1OM#Yab$*?X`;0kGaX|y z#E!d6N>CaoG);haKeyW5?ifYvm_uSpMUvp4_C_|+GfRa7@e|0vkm+YcwyoiNJH$Ae zQqyL5g%y+$i(Z9u@#*K^h#@~{SsP)0PJ3fu)uOBLYUN-FEGfELEpbf{0+*Npb1Ck({=@Q3(G>`hw|jncVJ8dlAJvTQwwDufZSiM^MHkv zKzoIZJpa<a;c>Y2=$LaPo+`V5-vQuJEUedI9G2^@(t$DLd75U*Q(xrApfzp%jPm< zJ&WdDSFyG;r^?)wx~tl(?OwfLxI!xluX4(>@(SX@XtlSJa`H+r?xo~E;Ig}fFV8Lc z_NAMV#*0)g0t64~nWM5}PU*2T%gCh*e5sOLf}Iy{-r6b{Nte{H8WI(>{D`!#(n9=w z+^-;R8T=ASq1lXH+;u042Nh7l2JUWxG~^$NJhS=t(^(EHL@JO2Vsrn$_EWxsxovN2 zih$|WQv&$6m~iVZ?hDV9R|;CGEfm9pVqD|y#-ILaFND>$%K1CR{P0d&z3T+^iE zyvU@{ciH6!I`FT^AZ31Sopyy-I0w$ECb}}2iAopeFa8-YH>{aHs8+;WbYc(8f`8z;OFL6xC{(N`${Y+u>5OFy+;u}<294s#lf`Rjh( z3g8B6;J#9*EwH|laPK~}80!TM0Monw6_QO!Z`j)4%45R#HsVAXZ9#Shj!=IRJ%Q9; z$0CAoqimyCw@AK^%crWSIaJCTtWqV>92Yz4oJ~{fiqD&HlH;MbQ{RH3KP5tN)kM&!)=YR#}}0=IiUmjlQ?yuZ3&e>OPYWl7eI1tNx&aEXRs)Y+;d!qy?ZXAj#VZYk!Gqdh$T4b@odTm^cW( zF2!o0490s>-b$Wl;`iQ*U8zp__*xolEj??1)p;%Rd1?QG=YCrr7w1Wb43`GSU);v^ zhxEso-C>hd=!MC?p8x4isURlR?tL-mI+eQk|BZ^HN86QG{^SC(^$*7Z=~74~!r7B# z1?Q^LA)3Vz*p`CC?$T?vhxFPV*gMWM%)pIjl#5?&GeX+WX~iqSpWSmlfk(N74behmAsE~iVJ#1Qm5ezJFDYvZ zftv=3AQL6}mfnB(l2ap~zBza!Onm?2cQxgMHv)#hBZR-XOik_F{rS)Rohh^w?!-WJ zpIwclmSpjpB@))AXWgrHB+rApK}d1i+Pm8tfrA&geVQUFqp|6?bYXgxVDI77{k}_Au4e-n7MVZZ^`yhG3AjY<4P#8p8`(EAM{Nf#bc07BF5a;5x{PD=Bc7auJ}Y=Ir1T4c)W+es%FadG}|8*B!Z7 zfox{y_D@ohh;-*odzrBICc%J0G}-m^yJyt_g#C6H9-TcR`K@1TDY}keehU9fNgfmb z);}IF_^cAsd13QIFA|d`2XqK(aaMLJ zY8iN|Om;=c3;bVwftm-p*q=sC*NwINjkTohr^NcRlVg50|?{>i3HM8F)T~mwb$JD#FV9SW~5ZNp&g~z)_;Y9C#tRDO{wK z%qtN8qrbbGy)`U`TXculKNve8>U==oNVF;v7dybGoM`nqMjm9guh`B-+5tuk5pL{JBy|8Ov${lyYwI${c<8%@j z0-UtE)?r^?V5|&6vu6>3P?}HMak6rHn2zEnFT5%qr&@Pk`B|duX_adP8f*?tjJ!kI zi@k&UibzedOg-F*+XPC}a{RB!&#Jl|A43&+`ITtBoFXU61JQ z^Ol|OmydSnzwElfbEkQZnqK4wHaigeFAhlgHwya?`RQ$vC;MS6N|IL?mru3mIOuxlGaU{Q^AZSisBt8*SO{Lr=J(|)cZJc0UXp}uO+U8K zQf;QG^42STY-BK(tuRzhW0%81va~*`SIw@%jfR4MqruWXK5XNx2FzH+$sHtd{kC>< z`ri?!wP&()1J}JQgo7NvdVrd}90s?l?lAnh+VJzMX8{}EAT*;hP11< zQL0PRAxDe<;t>7=5>gZ2&ZWjAglX?NdKo^3O@}9;H@fw;-Lxc+)-4dZ188<(c%n)arQ{<~Ls`KP0d&NZzq8N^qQ_ zElXY?uK<6?iwt?n4RF_)jTS!S|6EtKR$N$>NZGV-LP}yb&i&^^-MI8(!pL3JC5XmS zW3r@=W~DUWuN!O9qy4vu8lY7bi{+5AJHIDvKqtgnx!73Zoe(gy@PcK`Qwsi#Z6=xR zcrL<>q&!YwrO41)GI(A*jkq50;_XDb{&Jo8Y2leqiJ`X7Mgl>QFs4jGgRIT%=A0){fOBtk(IpGr@wzw|dow7dUnN1>fF# zn7ICxo^?zM(d*+c;Ke*wMRszVjxwcQ*hNBrs1eSM^>0z5h)7icvudLbn)H*~tYC<- zP9BWeHy{l~_iiM7Vq>kYrOI=@l_!#5F!)XEvy-zW%K6bvX_j$M#O?ZUJSbWDF%s)Nj{74KkTfiZSXwD3}GWvi+4nl^PARSNk_o2Ni z;!ab!L`!%_@>i{EkR06|NFAHFq{?b$XSzyAE#QI{aJot{Ieijpol52<((-I0`MF_8 z7<4N?qblqlG@D3%M?+>VyjWT+G5{6UXh!qo4GLnUQ*7c2y}Mo~7F0zhKr``)^}-33 zu)&PQnw#o*i6lAJC9UgW3q_gXbjv2%#8-n@kG{!HQ;EdF=P-L8Syh+Z{&x>U4iR-t z)q~FWa+0ex^O)q};*+@uO!snigv^tQbcHKs!s&*5Uygo*w85rBAH;YArQU?22$EI) zGOkSrS0N%tAod-0`fB;*62Wcgv;^`(Oxfj!&rdVUQ$XkwiYb+LIp!y#bbhiwPXm*~ ztp=B->?bHUEH^;tzcv$uvDdz{ztc!5F!0;t4c-JHkL0pw8GCq7+pqGHB?zw9FeJx< zBk#W)xxs5?HpKiA^I1-WSk~_s*|O5#0`4BD28vs5-e42uBnJa*_~^U*)~H`Aup&Ix z3V+alD9o2;W2Rd_FCEuFm+aX%yq82cfayipkVMamz!m4I9&46KCmCx6d;Z=W52<~! z{D+;kLVdGE0|4j>Z6V|e=m~I99E>F~((E!WU{mIGLI|R9N_zy+=)T}nx4#Lzh35{3 zu24290J71wn*<}`J+3HvZV<3Xhxwf-?bLCGiJS5E?*PynRFJ90Hg z3=WSb6gaD;{q;iO_%U}W9Fb_6bBW=`1CwPQDe8N;w>Y+tyF%Y6G?Tf0B{ITp6)u7_ zQ_A0t#UmEBnro#y|D76&C-pT)P|{XmfBG@A`3D!NZ_#G#Qum$^DRV{DNc;2nR+OR~j3=kNxj*N=j=lNs1L% z0^eTqxWW4=U>nq?Q<(wJ_lk&UKt2|b1ZRe}N;>Qlrp(5Gdtj?(go^<1ydI+z5nFaw%4!N%)!k1`Ocuz;S6o-fj zg{3}78nou4PoYW#2QTys7?rbP6W@$;sPz$6R#CXD1P%T;`Hr(<3|J1G1~}uFC?_d9 z45J^N;Gn5|P4f=1U_JuKSROku^vuXv!GQCnfm$)!;;Kryc?LP*fnOS^T}XG>Dc{j# zw4Rw1O!NA{F2xQrTNrqdR`SNo9ED+b96FOY%cYT{?*o)_16wL=684lsk|Lua<#+?P z0!MwUPZ*^d+9bCpbqo7QgzS_9C8E;EQg(Otcp^l( zg$KoVCE9Bnbs|d1v^mspcaQsaPCDX_byOf7Htuqk?a0;O27mI?+NZ{2G+48jH$x! z@?`=nTaC4`(~jelpfjT?O%5b)dWd%^gSY+rm-7u-YK1}M$3whidB@U4z`NGmtkQk$ zDW)m*mpUWexv0d=W_w>m?SYKICn0Vt$u`HFje1Jq_niE22Wax(wUQs{qAH->*7*EJ zd3oERBipo+Kt~)>85M+uJ9k=BK5}I0(&Zk0?azStS;Zq-06l{U*0zBUz7{qdyKQ6kXR_KV$K%k$1Z@_`i5cAo>0jMKZ zrdoI^wYS(g>Wv*Ow*BM@;oTt6SIcpY+#1_f7-harD|M33fY3Yvfm1T+Cq$NVx_+`#^qM zmU|I0o`Z#`Ewv4?tVv!>K!n$IZZ4ZQ=OZK~k!Mfs6N9#@dczHJ!JLi4SZ@k^_h~;8 zP++QnEEX&?$+N}%Xb&3rPuXIg6Kes zMW3;l$k+_VIJ`~*;FqI#1glk{^W>xA1ZRws#I<1LDlovT0Nm+KLL25bpX?7b7T8QZ z2Z^v~OI70>P(FrDtR;5#i_+%uJsCEW*D=DH$DJ=1gv~YxD=J>S1;s25+21gvC zsRu#Gwdy895W3UYWra0$lc50Nt1Ev{qT1l9GY|0Q75D5)< zTpf4?hzi592-9hg^8;W_*O|vx5ae5wak`7%rq2)KN^Zn;k_+n|GCb02=}9ArbNONl z{L8rQC7KPXh$rbGKFz06b=rdSkzbQBk(C%cOPSW$;Euz#gzbYPV4{+Liw}7UXOlw?Lam@Ju z3(cYzWeP6tan9PC>vj@v_2N{|zDdH~{-itj7%#259HMP9hfV52{f|p#X^u^ciMW1V z2#r?q>)F+T^b&_{V4ptKR!W^&yvmM04 zbBOOVt&A{Tws66(M*ZP48F9(-CMgVz%jgmOkAP=ZB18CnMqelN27!-HUC;Wn1>=K0 zthD;t+E6j9mJ(Utm_kB;$PH#5srft=CcJ=fOV4NTX6}&*>_(Xk@juF;_c4AAc5IdO z97HQBLBx<*B#H@E`|FzCM1}5xbq)p0Wz&^6D7nQa%4(Y z*LycI2ZEfGPIf2i+T!!djws)h{;gZ@?WOOtM!*F+Xlug)k3-+~&&I%Q(q)l*;U@FO zWN?jvlpYkSY@ZqB;pW1t;Ojl&^)5(4Ex!!^d8F}csSt*GH*I<`euJ>DDifoMO<+>8 zbX|O`II)Id{byK=KsL|@-XDHjzS_7{#c(_WBNEhUrZk*8?Byo}wJMNjYof7)v6o#T zm1NMA^@5Pv-Rd^(@ybT|Qw7kF7P%f0BF`T>!Z&4#oY`NS*PoZDUiTnYxI-?4qY1Nm zZoU(n0sq7YKUGdE?Cp&Z9bLVG1up2#U>yl*gVk^EF*s(FDc~OQ4`89k9nPi`Dc-C* zXJ7zg&h#p()^wiZh{9JH_>ftRC$p`N@Giy0cS?*Qcefv)d z)@p@TZcRQ6=|3X%eU(WG3gf?kbtdvOHvw}47jJUbV9 zw%F~pFAXAZp0qFhggSKdRNo*vi89|AeQ_amzY3oa*Qt$ED*QOs5vom7HFZg^zhrMlehEa+MO+# zS3c07JSK{^SQ+mHH;)^sff~l{9+6aZmv}AZOYY%Qc@*~<`#O5TI+OG%i5g{YsoJSn zYCcF`vK>G-406!sMwz?|8a{=O+fv?QoD7#*T*q?yjYBZiq2}LH9FAgW$_CrAI{Sv< zo3K}g;1&ov>Rw@%z=cJ9-zK83@PWY-Gp8is%2(g0eXH}uE0KPQmc4RM-Z(~KW5JuL$Mu6*g}@w$chp?#^bC^NZ7KOyXk zuQ0@~x6{n7!r#m`^KbLQ#MnW_{Oo1b(?(JjM|{25%OO-R>JIpuQ3#0L`NxMJsBUo7 zbgzJl3A_4`tTa6J=QjxYpy%?07)_8!oq)4rnfQhmEq6ERXYXuU1Uf6d#HSkxB(8mU z(Ar*JKf5@0(I6r+ur-gA?1W;_nJf?PADBfj_K?GHo7>z^{va{9+T5&{S{Cl$hEFqSK<}oQFs>v6&0u}{}7vs_@3Eq{rLG z_vT*XfM})({($Y~#Le_1Gn4PuQ;QS`cg@YGRW-+r(r?;UK|G|TSMo@gJMrvvzln%Spet^e3h;9|;JZco92b zuX41*Vlk(Dbr-x(a5HI3GD)&o*_L13238Dz%H0eXlk2xN&N_t*TiTh~E_`(6jKudA z#bSsnw@VsI;gls#-!x~Yx*^QLqL;N8KZnm<_2GZhY+N%nOR6Gf|ERWCB7_lVhtSN- zC?)}PTs!ON=fL&T{VvoVU>crR8W&!B3#VaRSwT%vs7uS%w~jZl9viJl#`W0;GOp3U zZw>@V$B|I@Khte(u78LJEI$Mx?x@n=$EI+_H1xP4IVCt`E5stqf-#k5!m{C&)W_qA z`<@ycrBQL__m#I1KEVTrC8wvDVMJ2+P=SVDwcIVw5X*jFELRD!q}7bN*+3Mqx9yT5 z0Z4hxS+N|mA~7C5y5&Y}f0AePQTCWiWV{V@$`!cYJR@ffC5WK*T#D98J<3;t(Z6)& zcqKXRujljmyq8BTc@l<5MgR>K+rGnd?8oU!BRtByh8JD9u0Gibm2bu88OD~w$Ep@? zn#gQ_AO$RCA%k)T+JyB%Q314iL{^rQ&k9I=s1ZX;Y)y&o;Ng?}Vt1IIW0Y+)ZzV8btqZ_U7kFbmSja{Ni)^OdPUdliVJz5KahOSJ!xR)ufO_PU`^3R&NgQ_#B$Hy0e^flVV6NNEm?Uo!?kt`CSPCK!IcePZlB|Ma6 zjims6JfMvXT|WMeX%G18ciiHU|=csM>_ME)r*PVR=wFUOVrPTIWk z_2N?6AWovDU?tJdvVX;SR8#hxxDMeDcXBAWQ&yEZ`J^4^=IGeU;xG-)U>923sV8FD z4xikSIR$1(ty%y^~M&`T5$0?b!a7X&T}u{oO3yF>3G&V&tTrTWx4M8f}> zerj%a=^bjJUgSPQm4laa5_3xV!*%KYo1Sg<7gm8tn)Y444s+d*Y7Tq!TH^hh z_wsn*?O`Z#yRttKyEUH$3i?-!in2pGh7@VnQg8F?$uLMDeTU;WaoM-a=3jN2r)T^f zBAMne!ZsoX;y?|uK?Yl?NH>IwRxc+5tN0$K_uO$&po}aH(OIElzIbnVNb&n`_hRol)0FG*zmgClVUIQ5og6}t(X`eRJ?6oMvdTNkY50;CtdGZq}yj) zyi-T!&M(x@vZdORZ@#d82nDbd{6u=|{B)BVxEew*kJ*Mx<4^;`z+Y`2Qt-8x-RpU) z^nYE(RWi*Wy32((iNOrRgt8;H@LWL{tz_~Tn<>ab3~8X*56x0Jlf#s{>K2Y<5R9QtErXVe2TQS2 z>xZv5;?D$OsufD}31Dq}*`F542`?Q)?$atdt!b|*Vu#iwrxZ)^hR3vdI561=KfszL z77YZZYT>7{q%OQnB$v}#yPSCU_|fV|c7N=@`HUB56cCfA7V)rf>PjX_GhBmFlZ(kY zj{+CCMxFWSLYWKTc2rSIxxlCd(rG=YP0P_#PrX=^83r^qo^BBn?L4wFOY6D6WH^MkyoM)I2&J#gZnMspXMc;8#>AD*r^0pQ zO~o96!QwNI;wY#`qR`eD$~>$qOilVk>1$ZMbyBDy;vSnsh`+wd`kBPvKg#=_kN*5RHTi9KJbQ0!<6Ol~!3rLR=g0G4dPy$~37v z3lp~4Z9^~;6GA(jA4CW9T7&$1FKP{9`5}?0Ip9XcSYe~4EMEP72it$Z-eByHJK z)RgVs?&0#;MPeRM&pUQ8S&j<%X|&RS1q~$&3!B~&KQ~m3g?gL zj~jOyTr>}1I^s3qYF^aj^6acmvw4h|&MxG7M93({7CjE)jp97j2F}59@ovgXLQ3mo z0*w_|$4vrTr{$IlnbriM`=>RHjj|qBKZpdie>?L;CQ4rd!g6@<W5gD`?Phg_0vF_}Q3`jh=Xb9N5=9U}(?cm$%JimW)m;&;0NFIP ziSpGyItU%7t-qWSa&nVU%Q3@Wh)ZZBq_zk#7))O}J$X3OlY9YBtKi^>u##ayvpyC= zYneM^Z9Jqz$Ymmnyz+3MYzEFfuuV>rJK zeF)RKrrx9 z0t^%@walGt#M7SDamzmEi}xg=15(O?TNyMx!0mq5gp5eg*%miIwN7y6G&(OwT};3F zg16+0du_wh8uv&B)R0yFX&0POO6RxmU@DMQ-D5#DT~$RT$80xe>(6~Q!-sAg+2D^o zEkHa)O6DH0=hznd-bicl@rzA{q0T5V2AP7lu;o3zZGyXuo_#e ztL-o-0B{Ye6!r#w#<jtz^z z%t;Hto#U^Si@JJd*69MGrl^Ew_>skkxVLiJ+KRtGF)mde(833s3CvS7vlSn0N~i#RWX56AKn#i$nc5dz7)nb_5+L zP*AM!_sz~|4S)+~H~Is+6;yPC?jFbmHEEK$K$ zcEIQvZk1F}?SB7rftdQZ%r1RUo#Vz_(ua?l?O6|vM7|TVZ!-2rtr7JSXfxadECs)F zgc;VTBr<#eGK2@XRMTgbty3toa zRSA}=qpDBNRgyOtrhU^C8Tk4-UPsBu__SbdT!fUbngODMDgXF(<&M%lsi8T6DctE( zIX>e+DE%M)%_Ll8Tq<_GVv|uCI!@dO(c<}=jFisO&KezG!VJgfLE4SCnG26%55lls z{BqYUh{DI4<7>sbX%@xLAw4w928y6<2kzv4~m?jO`Zn1F! z3eaDiN#Hv&{junGlE}QTplq9mBmglGzOsVNI+QfD_}&M&UCV|EmSiZdv|0gH;Qq&ly)XyTfwA6ar~$Dd08);+Z zBlY1*Y9XS<3Ma9lqF#JfotR8A$wSKaoa@nn*>!8dvss%m-em&zJx*rG-CKCya>&5q zGkSvl#VpD?^BI6AKVtKX=r~B|Ajj?L;thiVAIj4J6sB@asyTU zF@d?9xwffDsn^z{*`J7AxVpGc-HDWI;!ron)##Z;>2e8U3~NQ0g3*XzW&!#?4rFg* zwrDBmgtA)G*!G-0@yhiuVZy~Mj`Ab*UdypTknUNh$6UB~8Lu8eh}X4Bs(S@0V4|Q@5d_qU@Bo7YJ!t=KjtbhASjxh)7M9nY&~L_xQMRX6 zcdOABwdsAua={N292Ul75E_BVG%Yg3Iv+xP_52HFdfZ6fxJNQR6Q7lroEVYW^aJg2 z!~)4*Hs;C#%-CCPYm$*hApSlls~JwLp@nHu5q6!3`*}@PZ(~LwNY|*L*48i7j-O!9 ztaiDs&E#z^Lj7{^RD4KTcGOgZFumheXWTDWfXOk(mHkN#+wMsH-#9(eDD1 z6g^Z>c`ID_ZNDLEndyUx?r6?VL@tc_H9OD3yiu+4VXQ<$Km%V!`zLXBr6mB=e|_JK zG*+3^@JI9z+8H@s?S^Sl!x=i7rnos0;q^9fw^yXfEf$Q{R3LneukK@bfIyH{@iXcv zY1s)HEDOXu7yaNMn2w#A*f;wx!FzA&;PS#6=G&-cGuEEz8SlbEgm)|=mcIl*HBlz& zrr5$`#Mq1n75Z{vj?!xbAJpvgdf5tvMkLNs0oPOhIuWO_EUDf{=0X22A^ZZVyOrc? zK-_0j_X46Lq$7XOM0=IY;%)C~b4Dq5`F8N@uQCedeetlJ-6)cxBYn*{i}h3j<{cWm zVHFt{!fj$!zKYmX4QNn|q7`JZr)>`kxByYWe>>QWZ00-xNcd8W=n#`l5Hx*Y)z@() z0MqIr1xLPq<8}*ph5}R+xMo2wUZ~Xa32nHq$GadN7p$hx{Kt`+M&6g)ol3QoG%h=# zcO&kQaPl6b!8sCyN+3-<*xuEk5MPnG?Aq3L+fB#_>QbnEqPxXKH=$lPpJI{F*uy>S z5Z+a>E>W>61Hwx)`TvycOUu~Rgpt!F3WHDTS*mR>0MT=7jh~pztl^VvDz^RrFv9;| z`rTpYo`Gjo{3mf63h(R6&V;r|;5bgHC9EsuI5f%kyl}z;TmnhOIqw?rA~8$BCmYas zTq*FS+99_{aA5X+Kym{ln8V<#yxw%&{#D(Hyd;Fc*9bI~{M@Ct5{$TiN8Fe4Jw=Ea<{VOzX7OnYa@KW=!I_weNhFm%S87RT6jEU zUB$B!*DlC%QiPze3uO7!%o^Tw-5 z?7Mb|bwD0bHYi=Zq||~KZB884vL35EVMmI@);k7ubn(Ey^vH!6lo;1GdX^BaE#NRW zOY=pkQ5*<;3<&3#imWuHdkUFX4S9&ok(8sk4`K?B#ehxL_PeRFG@3l2T7Vo?VB5Vv z@zRRI9GB)Gch{R~a6_xO9N(`r)?dcDMwydvj|sI?3?T1RXv&1xBzHVYf_}cl35jgKS51Xn zswvJ(y?_=VJk3-MzKoHCHZQ`!6?RAq(5ysBnSz(P{ccXh+0&=e8|i3I_cL}Jf2BtMWB5#i4&xE$z-q*f z_(}8pNA0!;z9KdU3a~+T_*bTs5x%eCte2!Md!>o8PO0_u3L58HN%`r1rMUWPqfq;@!|gYqA@lcd?)P9e@oAeokC8zqfu1%46JERnOY zGZgpYn@S`ZZU)l^L35-Z5EQKa4DuAUaYvQ*av_qgoSkA{JrhPxYsc#-Q7Vk=)Stj< z-HZ@F`7jqee{_9x3zSIFd(DnhZYay>H4#sJ#yqom} z!?;~5=~yEQ$B*fJZ#L7|s7E^9H3TFmVfG*8$A|E!?K zd=z;U0c;_1FUO|0%1q;@I$8h^!QoSKX?QpB2^}{)cX4e-PSWa!IiPsDSj7R)>%*DcLxfn)M=kJt?_F?8i#$aKvl7_lCcf}@-1U!Vr6 z9xJX@HiM^pz?n?)U|%yse$L|#C$YLs9tXNV8C`iO{*UDIzqj)&$3_LgVxG++a`&(d z{9gXv^Oy=<0n%1yUeDZNSe+nlzjjkX?><(LfM5Vq z)d9Td5Xc38;+#0o109=~#vZAz!hes>wyg>#5WURSgI=f!BGOz_k@B{!U?I~GG}DnY z*tZ4(Zu<6dCo`){17>tm4-BtNy*E?d%ZAnJBHf@UrBh@&Z7HC;5Lh!mNHAU>hZT)< zf)%})_D`lrT>hwWhTOok4n`GOsj-!*<>%)4nEl@k@h(w7Ox9CmMGY!i5uHRb&>xJA{JR5I}_=)d+!@}DZdCt6vAH{Q2|Yl zyl=NC*kQ6Y5?=ybQU-(Fmp*qt+I5W6XnvSdP%Jp^m_C-M769dJTEv^A;82#doE^rE z(K`GZk6IHwM6dX1a1<-pF$)#X!{#=N^kb7pwx0bW=*wk8%_vcGTk|lIFQ^RC;k?H` zs-M7%o>bs07nNK$91cp?(z9v}e}hpXi0>x1%f2GqGXJYID%2V?dWI*d-Vk~ra$b~} z`*I2j|9*}3sQwPJ7@KD>%x5Un)8$LR`w<-J%E6>L;r{NRwTnVsTRN&Dbu0wXKsgtAMk-UrAwm zp1IMADefugrgNqGwz_3>HX2X!?b2tr(FrNH@?k*)$kU0`0M#XGwY$7V`;cmVxgylk zgE7KXSZvJY7>1fyGy&KH5+^8|;v9@3Df4Jsz)Fh&Gpmdte|gcKfEV&eBD0w&V&2!s zzdiuvI(fY{>bnf>*(SP{vkCi!Q@3!{(GP>Hn$mUa);9)zCSF6e|E3F2u)Rl<^lW+m ztP(uhw8ceEq`SlF{X!y)%9e@ONUNNAkwRscE9|C$Us>(@>vt3wrHp=;sz@l}sp;m5 zz)HlK7_EoG*W2a0JT&G9MkzmwLCym|Ay6df@?=F33Y-3icTZ1@X1`;$C^msj?f*|_ zAVl=bFIpfUDjfaD-PSo^&!HRp=3(i)5$GBa)UCemsVvL2ym11yYf}+_>;-FldYm)4 zrvQI7hc$2rR^2x#JH%5JJsz6H&~_(|iD+M_j4HEvYf8mabUnP(|E}BLiUzlGvgLts zknn$-QauS?`QQd9Fe?HTsE%N~T)?5h+W!3LEL2DXm$;62g)_WKdx?OFH!M-yDO8uD z!-|Xex>x(s#yfD3uz;ME7%1d(>M`H(b5#V~7$t$n$F1I$nsKQ$_!x4t;2?}Lh2iB+ z`)(~%{zu~ePodfWk_fc5W(52bGm>Yui&{OdMOUXIkzAVns=p#d(MrumDB3wb%3d`| zC8P9SXWm!hY*u5aJ(kr;@?>`Z@(S5UAI0 z72~P_CJ^Lev+S*Pt$aj#Biz%cpBUfwP${v3Ek}B>^Qf_1XrVIW{=_k(8uMe)<&J6v zQDAU57jV{1ha}4b9MJcUbJk&LW6Rxn5epf{4n3uObYuXH2Cl(pwi?UIV1`TmM;2IJ z;adao$r+iBNJJ1@QB_QZv%#8PXKw%$?YWJt{<-+#mN-+2w7Vr^^yN?C zkoDT>5+lNZkRAIqk*nV28jCZ46Z~~DK1_ttSO2*RhOA18=tKlQOW0PUX5$ljd9sQz z6P#Cp2Oh7_qX~FHVpyqJExWkM^c*15kN>Y4>c`|f6$Wbm?9j2s8SShSgXsF@n0bX82mvEA>Sk})Z#$3A~8?cOG-bR8enF~fHREDe8J7r}PMXS^( zAtE`+w6+_HJkgNbg$MNU(wZlhVwS)YLX&i7RBAXMMf*7Ksq7iVis6|!RRXK1cKeNr z9Tcjc>#kr4uwUZJI~BClvtnR6%X0sccmnnts;C~V#{YfB-3rRCWQZXAJF|`e*|V*( z7=e!AR*M;vh~;Nm-5W~+QlYD$7qlzHTWCQlJ1zDZ>oaJv3mq8UZwils^a9}~ zs#jTEACcS8VhKoCap%sR#sqGGei&iF_KNR0FJiQ)>w_YAy@iAG{B@@bD!OXchQD9w zc=6X$)%>Ds$r?@T_0LJ1c~nb6&=kfiEL_mnR4#Si$CKc`k!7NGa2(G|%;1-16}luS zQ5JD;J#f8#rSoTB{>&pl+7vK0MS5ymh1{R5k_zT(>?=r?(2(jM!A{4hB4|L8CUrZ@ zm4t4?`9HZ^yR_g_WCJ+O{sZS_<`9K@^rlO_a)maf=(#beY-CMEOn>wOZo*fFhjNQh zDe~^89^`G6J(H5c8G$XP7O2KQ{EhT>m(mzrI`<@wR}N-rApBADdCLs@O0z07y^W1X#_!D2l{C#;=jXxF`XkV(wZaodmqE{*x)2zl_}hH2zwmn zujMw;;sMQV?GLo8)&lZ5KAcC0Np*l38#W3>b0z=zoM>BjBAfCGUf)eRUxqhrnmQ2g zMm_uoB!j5Im@4tO{|;x{yo7FjM=flxQ^hT*{=FNw9USGUu*&qZ0U+I82mp}_rMSh! z=4W(-nci3@=QMZZ$z2cg@|q=1rdp&C1(oHLknRCsV_y%Y$KDK6p=vgfnu_Rof1xXj zb*ljEUwa;)S4T{^&*&78OJe-pALfL-q$$-W>d(j_v$yR_vIiOFlbyYJlMR=N*BD-% zY$xQ2sO5aMCdMC|w(VIgyyIn&RnKb!w;}+oFgtaG=t&ko@({;>p=;{C9*=(FRnfiP z%(e#g_wPj}<2$B@L(Ny0Z|Y$dY6A4Lb$Q8zs=9yT);R>OR!^l~%pa zXpe;YzBlyrpjcrS@gUE}5uXMz%Iq6ip2pMb;RC_yF0g%I4Gj^$yLP2+Oeh`tAdL6( zYuicPeBpSamZ6KIL1Ud)2m282ZdXpt*?{|Hy**CdKto+(JZ0EytC93|ws{~f2+<#4D4y-=x-}PYTL;0^SO- z5uD}AL_@8nABc00f?OSG4HWnA9T{Xo1oqua86W-Q`oTD#iw_fL)Hzf>Z?}&nlB&$s zKSgYBC#7g_;|j}Ebnj1{USc!%qvJoO^#KW_%D1Nxm2tfi9jwT>npt=|n-~E;0qUPW zm)2m*+D3+e0WdFHD_cZ0nsP|BhG^xoFu50ZJ30z)g01|H@45lQbBX{-P+>II%wM>m ze8p}U7mx$!gwnQ3&F8OIZ(}E=WAVulcbCe>$-o8r`LIdF?+r$MKYqU zT>LZwwFxygW7hxVUf>T-C7dUB#66lp&I2Px7J5civA`Jj&}&f4ocrFGs8+Ooil(kU zlqCj6XbW}@o5P(@B-`weO-~xllmX~u)Y^|}wcElAUw5$YU21CFz*9=D$5957E8i|< zClal*^>PUTzwhd9XZ(bTLCb`oCpTH8i#iIO7=z#npUs;@wjZkdviq?I(LTbzQ3ftv zrB3`=x}VW0g=MgmuArQ`+^Bkx)nFb$pqS})ZoLgw%ZF-p7I&lzatTV*z#qt@T*-Z^<8-F zQc7G|MjNr&lqc7$b|G?HKCXLi)x5Nrw1KR>&5RN!_2}0um(Iy2BtO_$z(}#yc3!t**EuM*b0~vSO)W>K+{XBgb5VOe zF=D@#_huAsG!MJ;(+yxk>ulFlW+5Mp^F9IRYAw5~<9bl8>`WwCHv01_s(5~W8ZFgP zN@}8b{DL|BQlgh}%a-U6>?VJ~N-#wB5^`ai8jMRO;A$COzI#1zZ!{hKXBcIc^-RX) z3^B5MKY*jhY^nO!nu-!XFezz@FEq@IQDr}ogpS+vcsIHGJeap=+_Yr>F8Rnoe;#fdZ zs5kMwI;ax?ov?$ytC9+Ga5lt1zb;B+!L7eJut&6x*wz#r0Dz^q+*68L>Q z%NeLO1CWwbr$?nCuJLEEJsU`J(04H#YQWNc7RH=h`dFsEBJXgq8$CuhEmN};#hTb$ zf9|wfM#sg0HDUyE6!wd9xyQu^$n70$d1r##DY$#HeH3bbW#8~ zyHL#Yi5e!b{Ukofy6ab0F)I^iN^7Gk04?cUEYust^N-(}roP54kXObj*-%fX^)RMe`z)^mB&sYE~+y&EZ|WVi8MhD_niKm`B4!yJ`^W6p*9kslwU zeJa~ex#{ian!8A7v3LwJJ;(rU;Q~2R(KXcHXc=SEo9~Na_Qze1(GCj+^~fl!KBg#>-@bWzOy|&R8?1M4 zW%3%o323BQ*otui$rkhB!R1SEBmqgV8oz$;6Ja(@kCu@@?YX?c0G6&%r)lSu|eY9ybzi<$mXkUZ<)zIoq zNXL(Be^=#f8TgEs+XggKIrJo~~fJ z9Mi3_@0>y~{}&)~_O5f(iVOP+bC9Xg<7&&|8`|X*GhZ}2#}`mX5c-|&wwr%dX28QV zpG?ZZ(!KX;=liG+ORqALw=V-(G?R$!?6zHv_bE#yU@npHX_m@nAZTuS& zVNT=?9g3QUpAhBz3GD~Las9SVx9Zv~laNv@So|j%Ijh%bvym(%AJtfp7sykTdWmh} zLsd2;gsL~#6@9(VwU?}@7_bl>j34*)yf4Z=X+!B0&a@b*9CS{=vz3qeVb9ZiyMCR4 zg9V>WGztB8wWP#XK|Yp?Nsqyu+=IxiDU%B|y&ml`>frR{zr(kBw0kLrqMgL_Voq>A zRJ>14W(tnywJ7C;ZjnzHM9)@GD_vu3jUgE`G3F^R7sWNNC!B)N>Ub15_r|g(t-QdF zhir}EqsSkD%wEufKOq03Brao~kLo7vdWXV-fH8D-O$`)rM998b!yx9^+k-L^aG8${ zSN97x*&EAfE9x>A$s`umIZq{kCs)noX>QJ{$E;d(&SO-;6HWt2=Ex$8>OpVv4Gn)h zqT9I@eAubtMCJ~448iPl6JvcBP6Ibmv9!X$u&fd zC>M>#U;8f58BS39LC=dNFfjkQ;pc(yl$4~#+yEm2kAMe51vvwa26XTm5vWW~l(6Y^ zEAy>g^>fV7fsAOYp4!1mzglTju0=qa)0N-DS^XU2Ufbo%;vbHk?Fl{AW1xxl;O#Kd z$N0Cz8D$!ze?C9J(5K(>i-;sPK?yl_D{J;PnNZfg&F*60j(&n?=hGH=?S6a7sG2*rlVdpB!8e*s}Kk|z( zAl?Vf^GOU~Y$+NE-5N{xLB;z_bj}}31b9&^XkY59Av* zAF-S!HCUxUv7bBSpDh!*M=eRdM2lP(-_8;K?Jc?f@OLcwi?N=l1*ez}UZ6zm6^zS-2Plk%Kt@2&c~e zW7@R&LlR$WU#8pd9*Qh@lR)$B&yYXJe!iwF%&8X6xqf`d;0l7*bw?7^XTxpDiewH| zI`tkoyZAjP+9y~Xl(%5Kbj2?`JGIi-dA;LYKBbardoL;S_CzNmR9Dy=O5_pa$(`k_ zmjUXFzCMG#v;y!i2hO;(x!qBsxBBVPBJ2IV zPZJme@(Jw951CS3EKRmASm&HB63-C@74+MlUg z%xJnLPfl9Gg?N5gK~f93mpparLBXZ)jUedC=-xk z5~P^N9BciF-d2wk*pN=-cH^Pw|Kw;!^W97)MOfy!xE`*j1vnI&!42arFmUelPBmVC zf>fz|?ch=kRR=2HIra|M&GqZ~f;#2V^0T2ozQ6*Ca_*jf$9#?Ki<&;PIE|B&vtVi{ zqkb1LmQ!#jb z5lBwg2S|l<2*FC-X^<=S*$uw#mFWvO;BtV*BoI9ex=G2kylZ9(Cyp%SqvP+fYUMw{ zo@7HHyDSp>U<@{RQa?jjUADOxi{l<1B1Qa)2XF|~zo5et3zNw5yF-99{-f&mn8xFW zMVFuWt0|9oLo+9UY8Jp@DX)%a0sNZ=5fUTgPLCAiiUgat!|+JDAYNpr34*N7apm2$ z*AX_x1D(PgOrhq;iORoQK(fF8Z)zBdL8Sg4O6=E7y|?9?LJE7t=a@gk%3efO}*2@OL9TK!MyZBp569)8YUx!m+z#87y_Ne zG9y?u>8yXx4z!YZ7WAVWh5}cuEeP+sx{;xHo5e<@sjf4v{ zGv2uQx&iZ0w%gjJ%;_v@%EgT*Uo@JLa4;^Ar60L5u6DW|p><)s(OJx%7-0mj>qlD0 z&xbV!NkSO<2Kv>b9r2;){*vx>Z#}jPRhtn2qtnQ=AG=N~#f__cIb|W~3_Pg5)+9~K zAL=)rbsVhvJd0buKxjjS1r&pQ zT6Rde*bz2nQoUz8!-|z>K?(oGn-tfBr=&pJsX*#s0wIwtlU;J3?FsY8H0r$V}vp^JblubboY4tF?s9U#8iAN4jdwUD z%7KN9SPC@o+Zhc&*}YnanoOwT!R-_J>X^pDJ(j2LdO8$?;j{~YVi-iMf#qO(6Z9FQ zJ@wMw&o_gK^;7k0yNh}K)7e_wG&ion!h$c~+k%&V9M`2EKi;QEvpU=6k~w#d3)1cN zvDcK|U}1bmuFE2tJ}PFY`A5re=Fi~}x^%3UQnD;ayf^?SlOffz z30G_eL?o+pB=m5)q+`y^k2J)&xT2BsQGt7`M(_X+cv0u;#u*F7g~pRAwuvd3ctW-v zHqGJRj>Glpcf-6~xWaaY(B+<93A1k-qC1Qwb!0<3S>RtTZDosjlTVj$clj4EwA#=J zOD=uZq;0ffxrV5YzaRlZ?&sPjQxlbr-+|J)y_eV5sqSJHl0`-jQdmT-L?eo^a>o>zwDwu&h6acqGz4+<$FJt?YY40v=QMu^>3^)NU~Tw=992!yS{Dz=_+MY7 zy@8p_@LJbcI481GA=XN`8|)Dfsl>SuqTmo(9}tz~U*c#h*U^zT0`yc>PEY#~14Wyf zYM;-?GtjR_uD3t)1dK2H{3d}I1uPbtNLUQ@EnxfnH}>^}?NJEg(ti()mj81iD>uoe z$mQyXlm>hR2F>?xvr@AcN0YxD0+#BJ)huUi{;RsYfcm?CYqD&7fpcj%6-BvHh^Ar> z8rQLr4W;jj-28M^8>^b^Xe4=ggVac~hlCBSce$H&tNcqo+A~=IQlQq(vj%cwB!G89 z34H?WHg~5A#e9dz+$9oj46D@jCH|WbB}Fb&{rBE;;ruMajTe))M&nohZl!2>JjyR- z7=?Mu$xb1;NwISU^Ti=ne+|JlPpEp*H&yv1nD7_AQMUgu)%($gyWs6~3`GYp;0S&Y z3{?qwO=pG!+=i>zpDcB8tAcqU?^@bgFI~JJE6fH!{{nuK&_n@m{e|ug=neze+k)~H z$S9$)2^RXL?qZGp&E~>lcRS1XlSS}3F^m{yA28{2oSxVzs5%Fa(>IZ`^t!O!IvY~l z^a0>sgjHWljCow2!d8Cg*uPee$4|^^C;{Wy6XA|md#L1L)D>k`9jRkF3AA*{=Q(Ae z&+=>0SWz~bJ?`^@lfM?_Gra}rqHP-MZ2@z>LItk$LRq$-0s;I(ztRtlxRYR4J2*hP zAo{)`G|-M~M87?(Qd@@!+NP!}M~H%$;I^1xGq+2#n&w78<}#WKUFR#sLcB^@+)+kd z(8z?YqFs03Ki)sNziY;YBvd8t5Ol;m>`x{*?K^>K>~l;i(;CH!OMGqQF*jzJ>@IEO zO0ZQnHGCcnLn0+6fw$A~w4;$2yAcAuj)koHd1bL%&KfB^Y6|G~iF#vdqXtO-ma%cN zfWP@-{zn7hlF(7G0gGqdiYaFsh;(Qczum7LLhbYhZ6>-pf9b^=fgJ%j)}+;@a#c-; zQ}-CB)#$ZSzUKAZp)QgN<#&se-CnAq>;m}81vQ#dzEwJ438v~-K4b5~OGSq)BItb$ z{$b%5+ko!BsTb2%37n~PM5V_+23MVk|IWJA9P6*p6cAGo52g>h%~5ho>g zm1!+L5{#9p#2QP9sHq^ryAa390AA6`Y?foxZqsWBplP!f7=!J$T>(XuWB)@xT<$HF zP%+48gtk68US~Ilh*-sVO>%?C-HS=p43|&Q%p96xoY8{Ewn)Ch52B$zdze6K^iAB2 z_SN#4$wJZcBuJqM+=_kT0nU`9x(W0|B+sBG_7Iq@iDg#&8MUiJ+ z*k%I(bley`OC%GoUT^&30zI_hQT0Y?c((!D`17!`xF?V=HzgffXFXn_`!uN3#+>j8 z1~~q!YjX|Zq@@E!3QC=mKP1T;gbmJ83*K?Q^xCDa5%g#1LJD*P&Nyj12szurbX?)F zF_Ru|L4h@flYzjLSXu@gt|ESjeu%Sh=KK!4~8|sDqm)v%U;;Fv>!wdv zpL@sh$ExfvuTki3cVHb@Q*drQP%#-R7*V0xJnk4;S^MLW$|Xli7o5eY#$T~?t1RHE ziQ64Wj6g+H>hV8@g$+axdDxs6uZz)pLq#w4uznEJo#Pi5?mGbe=^77aXQ{~v2cPy_ zui=T*TG*SywZHTNe1i+7dnT{p4{;x$pbonogY;aD?7x)+ofWqfYuscJgSmizh6Q&? zpCw0L&lWVDk6P4k8H;nvy^CyjbR!FsK{KQ+wCAl?^XwoKzAjx1@i2Q&u$X1mh$l% zm2omjlesv$W{ZYJ>HbkSUXgt!=vB|YxV5qZwOZ)+)fHYFWji6LDne4TqO>TT>@1hY z8}i!agSu_7u&w>z(!QZreiI{v1*&4jAN1IgB0IueLK}Zf4Y?9*6fLErh$S1(J-o^Pp;In>`JV7}!#*iC-MLU}&==?oGY7Pzo6(Z(1WAqoF9dexYzBE{F-}?h#Fd6YRi9})Z=_u~ z+E48}hQBwHbdH_bkAF?y=kaMjx~~1;;RY&(oz4A3HSL;4DLbG?v$TL-_hwqa(`%cT88YS#sV z8DgI0Ze%nBeS!Bi^?vCR;Ivw|)PlZ1UPH1wYXbh0{_E^-LV{|HF_3S=8>a$F z^(#`4F@$c|F?B-Pt>IR6QBJ_OC^!c5HLU;1Y2q!l`DyXBy90VoXpvJaBSt?Xp9k4l zlNY0kvB1D|xj#ZPK7!pm;i{Xyb)}E_qhc6zT(Gep(QRk})vj&@QZMPQg?$(01wfx@ zr47)}CU9Mjz?}ibt9ntlc|87UE^s@!4d;MBTQ*i^?lYO`;vE=m++V$kQ)KU|>@U;E zZZ{DDz(Ls!zUb$YifitLG2F*R%yesM_lEu1j~{siE=&kCpuOvrESA9u(zcd^9BevQ z?!?NEI{@W_GtjTP6rdBrWxVv{;&IXEFyUo*>x{Uc$?(W5({%uCv%UTm9=ewf{6X$GjK@H1Ye zCjRFDxq!R=sK-r~E;d1R&MHwc&*%mDByJg!y9LzghzHeGMNC4j?;1{0AcW491r~t9 zho+H=Rcv&s!mbP|9lbB(Ahy`+vy?+7XAMy|A~mR zx-#mP#HCyXhRfeU;!nGF3LLm7#z$dJ8xQ)g;mX5U2=AS}5R_|9gV%8E=D|15Y9HY5 zW|Pgrx4yVi(*6#e|A<{wmN7rzfZ_n54V$SA%&T>%w0KQ0rIehpr4~36$~D!igZ<{t zH>2~rv)O;2T-t0YKR$8}aIY^$tS5fJ#K}rSrj#&eybIbaBz>v+Y#y7)ivw5u>J@sZ z*Q5)O^4IAqWkC~WXm_vb3bq9N;)&{3+#|rbREn}6%~HB^ckWe1sH}9L=P#7g#7i|W zL=yEDaJ_ouPD8MLG>if45=?&(-QhhM4DP>PSVs z$WIx0p|au|&CnD>^9_N+D{fomKULaC#AKi5Mu7PbWa88zyWHvZT`baTm>@AsxbH9~ zS>`;NDC8Qmm-}290?YZwO@z+&=w}xUsRHE>@hs$oH>2vbZlk7wK-uE2iJH#$lN4NA zXPra?3aZOF*_A?Fiq|>5yqg|vr&yiZtCm*dG|gSeX=NQhVj@mshcIQ!pN+Vq^(9hl zHYtDcJ z{P~--Q+pzdsvE?`8B^xIFuFEEuSlVrv$_+LVbx^BflF&bBi=7qGX+TvhdNE>a&*`! zoId1i65!&nwZr|RiHJ{&R~I1Iw0VwPuD>WWt~qV0+>D&bqRD~3uqA>R+nfSNW%2X< ziUM1I9K2L5MZ}YFiIgB6tv-+mn$)zm!e!$n@6VJf)oAU4ZOx2kAoKId2aGhyxJ9?q zc4mX2J*6xuJ=zduSGhQaZILD*SCa-uYmC^$xoBxsBk6b#1(8upO7~3L4zB8uzcH#l z%HreO4(u)GuQeXGipcyKgX=`8tn0c-+{RtgH^+t!v0h zDsedh4Hqxn))`fY(RASEB2PaXPjz#p(PSKkTTzuHAob@g%;vVoGo13@!gWEO%F4Lp z_iS~&mIho-)AppYJ}?mK8}cN>Td)?RAwJ0cqqpRSs2Kt`xY{FWy?ec>O}NJYK3R$s zp0i2rfiy?i9&xXAg|yM!@cIN?jUw{+R+?roprPRp5L-9AOFP!8u1%!D_>EfdAczt7 zcOPUNh$(K4nCE*c#Sx;lCF4=6Ck+mkIxbX-$9$x}fA>5z<9l=Ft$a;RF@8(_q|dBW zE8kx4DUCrW&;Z&5!h5y+J9w{fC&ALBukQh27qzgk_A@JT!hqCe8%`{NVSBBO$lVc5 z%A*x*2@;4EwWKI?GVSOJ!6qkCoEHU}yJpJUwBH=GMt?(ZlO#BFM1_U8uhDp+Kszmy z&BP?*?V>C^BIYBKd z()mUPEiK-51{{m8JC*&^v26pD$rX1g?Oxm<9Q4&7wZ|BH5^_X;SsJ?A2)(i=94jtU z_keZFiCpNiGAn`_@rVGmwdlX>XG|iAY#w^GDtp>n_G*8rYmR>RzRyn4ey*wwHT-$mzFgEmC;zer3$Q7RDZz#EH#P3^?i9I5Y%R30%fF;Pyiga%+t z17L_u673+mM$splZ1~O_p({%Ka-~`J(q3=`2!C@G9-Qq6-OLb+eJ6qGMI3?+U%z*q zg{@7>N5Epj0$%qEVp1Kf7WYzKZP!JpG1tkUSaQ=h3*oCZ0E_a?3e`qTk|mhS+MREe zzXgtDNP7lIDjZD9pz47ga?jnpwJ`L^se62K0A!J_u}e89erZCWsOTq|nJ&6@Ywh>CGbg7bu#6sN-`y^HbSy?B1zaeBO&1&WbY_=hY?e zFJSw4+%6QTIe4NANs$V^kq+*(n2czSK8_?|H_olp&pppKZf8Lvaccu%%1^FEsbqzC z6g4fxOl;B>oG z11^<+M+9F;)F7tTrjlBn+DIf^s#}WmDFF=ch&y@#$s_=|3i<}tUYx|2V;kO}>h+TO zT~;F51+iwj3dWqguEJxW{SyAyKhC?m^!9GRKs<{ya(RgN=f8`hzEBq;6{E`u9z#~K zTpi;LUc2!fu$JeLNH@SQuJ2uKHBGR3JWN>**4$5*s$%eyK#{sCJ4wxT^PCtN7 zy%cp$%IVAfHx_~8Cv_giSyejy}UBSY??M=BH6P9}5m3n_@i z3>&jV`Z}M;8)Sa{a%IA*fY=<+G?1jPfEFJ`8wo?R)cBxtR~p#YfGi^Il&Emr_+y3J z3;am##$%>?7$gx6g$D>T3-GVz81##|zc*N${K_6>*l(8T39#E5Q}t-yU$?$kXsNW% z*T4Ib%~50ZjeVr88~6oN&Q*X~lyFX!`%u6;4xx$3(UX?yMoW!=+!)_6ZxcPpR}JGJRHd7SC5J*Q} zog%2pa3a_2Wq)s{lbgR5&I8&>IhH!Eu}PZqMwD{I?+v~Pi$ge5-YZx9;zZp7Vi1sLc7i>iKUM zuv%=eC0C!@`*)6eGcqC-U~K+E^zvOGft+ABf-3BM67>RK8QHFPSJxqV5gK+G+o|G7Bf0+lG}#PFIZ6FtvR$(|D} z++yeNuvhaNn*p69YYU&xf9-i@$tph>A5qQgNdylF+v4CnaEchag;8d?sX0n?qUd(a z7NxjQq3;U^C!W#aSLrNd3N;Aq3AsC&8mNE#5p9Y;V=u)Uuf&h7eQk-)7bizI1m?tiY(( zNR55?Ml7aAVO(TN4YjW?+vdC^fFf9UIBCiHSJGoq{Atb1LP$Z$#h)5HPN9@*eYyf1 z8a*^KpLT5DWoE`-^qujcbVZ^8>mi>P8hrmY+*@;hl1<*~e5!HRYg2uSsiy86PzlGdpAWbf_=FdWbIfJs2d7o{8cF+c;VeK!)4Eb73bL_^Aa8K>^`V=q0Zm0{#;LiJ$j)Y`nT|_&8&_~yE_u)7Ql*L2nhnJ>k_@~i(QI+c+@gvw zIY&1*b~Vlyygo12oGVP{bPt3w0GfrhY)3v!c;BEk)YU^$ zgO`SY1;L7AU_7m;yji;xyus~K#XAe##)QXuM7~$cGP830p6t=)=CP9y6U%viI@C96 z>@R-*7oPwe;(S8!m$jEx8+uOiH8=6NhPR}-ro{IRjEKW^?8(#~b)WCd+*oHn2XUs6$J%iIcvuw#}v4QI%b_7_so3;o*X*M{poJ@ zv{8fCXveH8LvqAZpokFJ=>N=nh^;9Er5}(buvzNLg3!(o^$nxE9p}Gi+GKT5F0h2t z)U2V-BU@P#Y?xhp+xhqMn2MYm(N^Rk=+3@Fl0SniWYMT-@(Y(b-{JOvkMQ}DQrlC1 zc`pWi3dszb$L;d8A7m53d!A&sMJH+O^OFe(zsgQL*I#6=NHxVin;iH`6dI57!*3>@$=Lu?cCg@H7-hw{wnkYCCzr5;F3u4Z0&OE6vwFiN9?V69VSh3##`EATB*jBi)sb?a zSmEkE9w~-IeW+{TYiwYzq4MF$Sj1S)PHMYgVlh6hYWbM|XB#v7n`i!SyZRtGw8_ zI;b2dhXBw2t@Qb@Y-;?Vd}&`1kEWab+r1u_X@i(Jk{{Y|eWGoMRqtgmpK3Eu+G^;O z?a5pfFFCG8E5^_~oWNmnMsvJWCk;8tkE$hcQ zsw?HTkDVI2GLnAlD`@BCAiim~gm$T3i1h|$3-Y5IrYzxLiw?EMOZtERQ!$r~yr2Dd zA?|iBYPmyJInCzvn#av#Mq4-gGJ53wwsl8yvau&>LQJkrw_t|(cFkLKkkss_?q@aw zs9CcVXGz8`%r3X*e_0n&LDA8g??>)T7rS}Jn@>Ad&Ij`B37-|?@ntAJeaJQUA{LXr z41vC^!K|hi7)9Xtt!KChPJ9`RIFJ+@kNtVoRXE&j>UWmnIXrQ>MlgoSF_CRR<=M(n zC<)R-szF(6+%3p5`sA1Pv2fxQKrm4^1@W8+_H(enoUEc^bI;GcN05{k&_cpdNYU(1 z!~1z`bB5&lVFtP9iZ=6})Avy~gPwi1(2g;x!}*J?tcBMN*9t-FG&8)Xim@VwZuSj8 zbG<`4`c0WngAncwZC$BNyLb4jnEi>}pI2yUmBqmQtb)#-2hh1cntfPE`~Cl|Aq z@n_`_n|rRrj0SYhs>`B5kx!o01j2Xs_~Z#w*+W!ds9*g%M}iU@*N}4MM@F@wf4W0m zq=pX=;nM(Mw6|EG5tVZ!nF&;$Ih zK>q3V_nRjyw09X2>^AQ@Q`3t@P$!>P=L?pKnW6tZavSUH5`7yz<~Wi?7wS&%y`mBr z*AT0H=jS`xOl|un$I0&0N;PK(^>wXQVDHyyCCjl*$yDwJH;Nj^h_d@z^A!0T`6aQc zQsk6q<;j!s)27nZGM^dyCx%2iZdAU#^5cb@|Dlo6L&z^8WS=#ZL#We&%-tNRQ@&)O zQv3unD_L>bOUt^mFmz5AHe$4p+ZwRYQ}yL(Xjv7NR?TKJMn|;=``aBJ?oLfLKuFpp zdq~Kx1MQ&Cp6Av@!fLN-JWn14ECxBPxWBG*^>yk_YwbbeVzgtypHC)MznQLztlb@2E0PtUJR~c0j6QVMF{}l7g$FBWg4NejjL@9#mfhX7Tx@bGHNFboU}k zk<|`mYp5uQQE7D_s%3hao&wKWoC0W=CJ#Oa?o4`pPyr9n!BM3%S$yy_&oOWY%ZiX!F(wW)dBp33R+ zi$0|(W%)$}c?>YAGUy9)s5fjvbFwFi6yWkEprSY%jW2>ZnDBhKBDQ+2wi=W;b%gil^ z!jU_}?y*c&ej>U&4qtZ1ljr0X5g6rEFMS19RE6CWRY$JgD2xa!cTRKGUM5zkP|4n`)y0u2 zdR)A;r#V|q%^sVWOh+|6;kSSF$d4NV!#+t*8f8X3rCQ?GbKha8Eh!iU70^k>4$^M^ zEQp|wG7wTT<)Jzo1QwB8r9mTLmuqDGIaIhUGQFUj4C?`HOV=PG-#n zPT(6A(4-=V-*7`%oD z5C>wa8^gp|(@ho$A>hC~IfkIK8NbhiI$}awHy@QW3n2$7mf7oom?+JV&Rwk3-M|`z zIU-8dRO7-OmzJ`W_W!DYpJ&m$>Zdv%Zy6b zz6&utGIwh~$n_b1_0wC#307RUbEcIG_we=y3e`u{_cCK3NWWa9AWNjNW&jq6EedZH zf=fx*D&*p#;QLycQZtKzVOMwB<7?ICg>-@EP#^%`(D(OG^*hUH87MQ@F8t;I>#i3N z=@S&-!H_YxgEUYThitwLnQz{_!=|E_a0^pSg6WNyGfjd#VwtzUZwxqh1pnGF3T7c7 z-(M&8ez_zh{&r`Is#JvukB4yzk-R`8g5U}h39L@qylR#-iH>GKzD5oAc>#>u=Lc^Y zYR?Sih#Er1aMbq}%HvsujVZsPuUcLMY;rPe=SHQwP^l=*hEvLsO}j$va>dWex++?r zXx7BL6}K2waUhh{>*Sw8w*cV2?-#Cre2216*dYR+4ofK2(4pTe53-Sltfc1k5d;E9 zO!*>37sU*{YHQ}35+`6TZ}YWVqglr-j5~=D(oh9Y_OUz+J)cuu^D^g`EF&I*hFt%{ z=1|TMAh|3JPjqZd-~o{!$h`dy6{>BEDnvXe2~Iw)`>G?dy2)ocP}PnE`~OsF-e@9P z2%#LDPTjqZbjsKNhGu69U>f|@tcKs5{#Gq_z35E-daLz(HjPItV=JP9`Qj^C{;Lqk zpL4QTBfEyJvSHLuBl?2Xg-f88S!bQI`mJNE2gXWoKvt_a->ch4$ABe^;D>LLv3G#m zp5mPgnr^OjY7^(bRck^O1rpblG``LyeTCm7fn;o*vNFN?a%pS(<$GF3MVjw_@iTUL z&!;D6*@aXx0m#LkO}BND{tRCnn4StSsJsuU(=oTWjWLU84U zGQ)ypE6+#BjMP8uGaF>4suB>NdmH~ODx%8RDo%sC-Uouf|xr)IhB#)rR4{@MJ zhf5xI^ZrQLSYhdUJf03whdL1vED+5ua{bV%RAv!f@WN1!ECmN;{vG=QjLU5^RAhwVa$NW&70ZE_T|I*7_(FC2K^#(^%FdJj7%Ow@!2`h$P$ z6^?aX$OyZ5g5c(A&fBpn<5T<9y$W!0tX|p4tOw`5U;l6L9yP?O!e(d`bwVmY_@?Jz zaCA;gKiHX7=y&%YzZJM5z(px`oZXy{Sn#vdEksq?Rq(LXuCP3Za=aL=&u~S!+$qsH zC>eE3dszszq$*cM`G-e+M9(^ZX9m?t3+b!VjA~2!t~W%Cwl|GD0s> zXAbzqKr^H0STVt{M#0VM3Ip}t#xr`Ys%h0S5UBUs^$1Arm#R%I9fJxJ{LV!s+AYNgUe^2T*`4WECSST+A(tOBbr@NU}US5jsb`nKFQ!6s};JY?CBZL8HRcn z0paUbes(-r0{#8*4pD{8F9BLUpo%cjk9Tt)Wy+p(&pgJ+^DvH7dxb-X1+k}*Kl{LU zz6%DdH(d7@IF{8AhL}eX415!x%IteBegi=ChEQwtrZ^GaTP!r62cZ@nY@GrrntoYh zV}N@(t=^EAG!wURYyDA7vYW!;ytM9@uhaNwgyAeg+9+wcBY+Ke5&B*2dzp#kC3?Jm zoCE9-<~(PN3z4aFZ2;7Vj$(Co-@L-*s7jARsEh;yuS`TST}G~dJmsx#5XSdXq8!mK z1g&M3Pm@O@1}pQ|C0>hgRzC?ML@X%XRKcgATi$ z2aFu9WDRQz1e#u(!&Nr)TN0F@_O}z$4UW4<{a=1sJctkCtZ^lx&slBhH8zR|E;~LQ z7Wf*d8cNl87DrL6>GSs6JWfxD-FNhi6J&mDk@z zU9@TI5k1)?;T&RhrnI)VK@D#ev%+S?8m!!|PyMSc>rE?IBT~gh$()&^i!X3}Z>w)} zY04k~J8@o)qq?EGJG?3;)3m>^It56Taa$SfJ-ocL0y`*@zV9xvz@^6o4O`iUQIUE3 z-D=*!nxcMlmv!zqH&)O#{aFo_976ghi4F#!q$N^ci1__AbViv>LyqMR^>EpR98l>v ztL!Dg^-6zBcMB1?C`2INX^wh?`fD3d<<(cwfb)?+2z=X1qunSOk^mp>4C8#He=xJ{WQs)WGn zQ(>2XIB=$f!M1zaw;~}ZR=}`Wk390ZzRMuq)Q!+?h!X%FedoDCp=me5&f^U(toHlD zl*Q4k!tO_{DFx&57r>5WLo+Iw@jbWD_V5l03hmof7DiF6%fXXbJNKh@=eb4`8HrKJ z`hL{TKvf{(%J0bt=q=ORo2fNuY>&>u36>lt_{femk9ln%3B-{U4rqVlm1=G~bT3$E zYL>L#=##!@YD-r*gtS}iXHhOMnaOekY`4-3oKnX0Z>NL%7OAx8R&g_mJ}fl8(dpmS4Zz?B&f^JF1e5=|!cQK&oqu&g}zLCUxCP zrs+O2bDm@dNfE`}@C~1}Hj8%G=yg+qPCQn}zX$JPz57J-%h!s8O{9_b=FLZ12uuSH z$aW2vyh9$@sB|d0H%^Bq+#y6{V`uv+38`h9Bu$N_wjY_XGNzL#uj1uu*acR~tUiFA znXXUb38e4yKgMZxxEx=hND6%EZgwvHEG)DwO zN*IuaQVh!?&7foVTMD4ALM#}#J&yn}Pa`ax6`=eW9L+8ZqOtoGMJ{3B_J@&BtYusB zx?eW=j_6+rA*f;zwLP76pfQ2~Cnp0(vS~*|Y$kogJT(M_blG!eZT6}G5OvnZ)?nXp z_#{6l2Cj}SVrOl(6E@3!y_uR$3W`B@pfEQ;<0skNu68AP$j-Mg`&m74wADN6f%MNk zp2g!*aE~Gu8W0r!!b4&BEQ-A|`(pMLlp$L=iDj={5acc@`RBB=Cy)sPFqbj{Slu|g z`YG$>(#sMXh#}|uKi+d<8>}nH0pZ>RF~D$D&Z!wbnFj!}^Mp8rWZU%Q$eO+D*>U*< zdC^sSUNhLL&AbCUB{ed^HIPR8smiowt5#HD8p{|&K4G{-9J7z?oJQT6UbiJ8Q4fI} zp{Xvyt!jP%rd4nJY$%lgVA0Oc_i@WTpUS{1e3l!kInjh&&JxDYKbwt4#NrC>$04AT zzKGi~bnkSHfJQt>pcLg(Y zt5MG9+wl-xKp!eh4%V?1X&ALK*?fvGe7u~^Z zN#J7%D1}!7b*GGx4=KWVtdY*cCdALQ&v8oWgZ+te@6BP{9dX*cKYi&|zG5`%fb1GE zjI$#_q2F{_Ec_4`_g~X#TVluMuG1EOB$x4(oE$!$QeajaHMS-ld~;FUxZTdVDRJ#* zK$0dnCF}m;j4!=2!cf42m(?Ou;0Ci~rf?-RyL1cOPSYGE8A`+2<`QmbR8&)`8fT9M zHumOmtP-}YGig#UQwZ|1g8#_?sa9h;{4~YaU7Q_eLmh#FHp^1;4M7ulVLiG>?d}@h z{w1AfN6TT8_u5IW%nt>iRfnnP`j*u&lWtV`0PXsx6sLhJjIME~0D zaFlhE`iu+Txq%?)T1bl?LT;w&m@`4JTsAzSxac|%kj=jltVRWAU?wi}L#uU{}Kf!6mr9jc| zz)+1Q-6gGGaIo6@IaV5$aj2olJtq?}Kn;DU%$QQ#+Fvc?xCm?tL8GY-sncG*13g~l__&GmliSYVfO7-^l?$Tyvp5m!ob-lWXBi>1Sji@xbD{KCzjow*u=_c_N=wsDZlucIN;AS0Nf~E7`$kv%nR651%cj( zx%>n7WK38OHgK?6TAo>!fL@QLa^>6G9EiNc1MP{|ed=90TvkHM3bR$lv@_m1*xJ0)S6cB z8sE{PNXzulj|is@0-ZQp_C7Zfe!jVXBrZ;=4hK?W=PYf|V`a+B(rb!H7CE|y`g2yI z%WUHw=bm#@8i?U=GD&RRPH5-3K5)#ZA4&4|Vttxip|$5`0uh!He4P787Ic-8Q;FLn z_Un|p?%c=++O1*2;^oopgO7j)CQLaK&Hl4DgU(fYlsx|O|GzaC1WLW`t)WEdMIuxRFb#X`4ySOHWyR!+6%g}u z;G@3frG1I4!pq@Cf2TH4wkrR$oyOWJXqGGJmfi((Q4P4@(ccyMm5pYOB{iy@UN;%l zS*uF;Qmqo!H;>=SNlMG0hl{nqSnknBaUz%jQfuUHeA=W65JOPv@o({}F7PRBcPbW| zLgNt7FSY3-J^zKwCus~lD9%Nhx0{!wRMr~;4;#<*v%j40XKLgDmE&qf9ter#OSNl# z;t_qD)2PU)-`6Ioui^2&Rj%aC_A(RE0$mmE<|IqMO2X`f=KV}^N;=cKjBA~oi9 zhmH%l90sh6`3#kJDw{L#pdRM5DMH_0yZL|)`kPFD#m&YO8gV`IhU#7{(*k3J=I~b@ zv@V@;zOJ1Vu#FV_kZGebxIB3JH3Mrui?#HlPp%|@e8)(yM`0!>rYu&S*#d6sqz~v( zJhKJHyygQEN^3r1&TOLwHVie-4o{^|=XR-s^q3t#YxfQvqjnAuwol4-bpaERp|rJK z082o$zx|Z>?h1=sxxr~Wr_lRv^_PB2V${2N**t$z(Ybg~y=pt;)Ws`c$CA8zz3aAW zaNXWBMXhiJ%)hK#zug!?F(p*t%v2yZYjwf8bL9r$#wq;S`F~7!UzO!#wv6l0ATHY9 z#!y*D83zVA!xZ6%2LO=_=;MOd|GOpHFIYqj5iki#Ck9!o%gtgqTe+dkn6ZWL zB&5?RS+)|xgk;%g*bF4;yK!+G=7DnUr5%t z2Q+$Epc`7`rwZj31Lqyp z>28${?XFyp6TLq+x0BpBYS6>&=ysbjvY3s09nZz2kwO@=I;8~U=|%=++J=+>4`=Vk zHWif)9Az{XxP%fTR@8MCR-33Y0@+-MoOrz&l|c?nwU3PQ%^q!fuxXftqE=VbIivit zeBW{lsE$+@MK!ZDe^5M{!#>l1UDxcWHgA@smVQXjC_pEHkQ_F8U_6`6BYpG?hp zqHMIo9h`#>rbqbv27Eu04Bohn932;b_U)io^AgZP``sP-QL~^n_UkReT+I}WYPRwQCqF0VgVt2miF(0C9MqlGx>1z$A`pW9Ud@C^yay%UP zIOS*>z{8?G9s7N8-TY6VIDKDGm+;l zPLO-u2zCoe90+q<{9)2WFV*t7(*j^zXa1jySUeaS7Eh;0#(ODWRSshfJM5wG=$B*@ zeQ%(L#lM`QnqArv{gWL?nT4iW{lwSmM<9%M|8HC%_jD_+d@E>77CBjHXm%aGN-{HL zrV~--ftGTP_~LeT zhZR}&sB@FW7!5NTu^Sw)f^8<4ynRl9CM_(l3K;UsB0fI`6;YEn^jXlbS*Urp-%p3G zWcd|}+^0-WM7BFZzM)`)g@jURbT4;zM!Ao)8x9@IRNYPdPQVHS_>V|&Xn`~`a`t^R zshDkU#{5mm_9}F@~MBCJR4Cta;mm9d7P1 z5>;z?T2ji$broOzUW3t$A|^y(3z+#n`>Sd#op^C{rHLaTOVhJ@0$GlO#&AW?N_r<5 z_qhXk0))xAYhU+eu8hw&Bw0)ckY|V8neu}J8Qx}B>uIrDP%+ZP13)0lW%B5O2|JiI zx$TC#xE3nPw?j~<@$&Pt9_c?I`;kx8&C!h>qJzz$2MgQw`giV#zp8aOmg1iZ-8r>y z5?}+vheJNRmq0e0^!UwZezGUorOLyjo-3+8S3e-a^U~xci6Ar1lWW7Ccj?kzy1ib^t>a8|4OZGI_>f%xk*91%D)CZ;-r?ZG6E@cGR*S+1)=^b-&+#)UJfM3_(O} z6I@oP29r*UZoS}T=ONw;9nAyeF1;?Y)woJuO72qoO(jLG0_3j_xcrVOc1i)CxbK+Z zaSKjmfzxZDp7Cu?r8R${pk*ogP!cY*9L|SII%pX}8W?$fPtL{dchf<4Cd-q4OVXg7 zH9TXJ^tTjq314YfswNBnO2;JP&STN<&qy6=7%*68bu2M1@`mr+=gMls&*l}8r#LL3 z`O+X21!}0i5b#>)_|9H>a?{Azx|uR7W^5a^9);J;btus6?Vzy)fKs*KTwq8ef=8z}PJOd^B^mG!XI_R^AY&HV zQ0MiSNQbVqM1+WTzl;_zwPVl$UURHN7K3<+eut0C`+C?AZ8YM1?6hAOZXB!1vR z)lQ&))v&bGsm6$Z)*?yt6RS#r!R3N?=E6CFb7Xsf;Lx@vJ_W zVPTRJ@1=RDn-12LM22H7zdvE>GDKZ)OAc@dQhu?uUknVtZgX{2U*5*IC%B%Ag*ofu z0JV(7u#KXg#4OycVBm+S^qxQAR+g!XwPN5cjhU$1ZC0#|c-2v|FjRicHx2W@ztC(q zKW6V)m4qEb#~dn4^8zFnaprF0lGK;7_8=8f5hHWb3;*AoeTPPOtB)u-+`FAgILlq# zon@q#jTwfM_s@x^$PanR8+%D?8oJ>LDJLcDrg9%6QUBoQ1*=&TRa=_vk1&^R;>j~Y z=e2?%%z%Bvit^O}I+>$xVa+DDHuvR4X+P7ZGUd8K9NgUI#(hyLfye==4+C4$)+{`) zTe=kke3U(AzIzgF`9u5QbW;`|)$oK(GasVqfo5g9Y&FD~nK>Z+^5s)+_&|?R_=h+9 z{tY=p+z(;NQKP2(ghy!y_3=j>1)HK`RwycLBE^muh|!7#8al6bO={U$@xew8 z37HC8YqME4yd|2{8h&BY(>Wbirg!t8#We@>c8(R0)P_P@R1~D~0HnmuMUx0q(G?Ne z$zf^KEywu?D;VVkGi-pG49x@3BmRbopqeXD>|l~BYTz!6NXM{i?eh21fGZNoPo4XT zQ@OFogyA+3RwVFyD_KjkI9G3{gG4!PZtoUBiOkt*#TNwwp;E1+15rw0G#-Ke1Yfk) zsT6bApUKB(<5iC6CV+P7CwLsiII;gAJ7r1JAUg;2!9(^Vj%PvtC*9%q`Q(>l<_d8a zOkTZbExHmPDh&`F_yx8U>>_SBG(^I(iNs~whW6>!_ocCXr7E&j?oIe&Rf0ZC4+`%D~U3DDqrP`yGXDvWlfbC**zbSyM@RCtu)g%@Ql~cpob+a#r z+zqLWp0#EgqyLfhe5x9#VEG+K&gG=lCE@dhIO+0){Zd>nK=8E-`;*LbiJl#7HL&i@ zdIhF#DM=2BD@31W?hiIv1X-~PXn2wzvTAfzO~IN{=C1^MT46z9D3VZ`#mq9!GWN27 z8ZBT=KU-)uEPKKBN|m}Cy1rh5wm5j|2V60)G-<`}y+xG)-*)l8r&N6}W52`P-xfIq zK!~v6M0{e2k>{KJ3&Lq(330+^RUS#Zzr`(p{T10{Erh5fg1M zJpJ6AOUK}(D^|X1y^;idQ5;)dhlSNkFj!|wD+s6|LxP#UX>X3I4f3@xru8HjUwv~V zBaM(ylEt@7Km#l!vr0C^>O}UvpVstx$jx2>F|iaUthq&O<6DlC6^FbCKD0W2#;9!i zSzHbUeob09ODY&f)c^Gtl}YhoJk>rx6f~}Vbid24yQJL59#jA#W7Rhv|J8P^ zXCap*vn^V)7+iVtn}VlRRmUULbZ_Fns)FHGG_xJvxm3QjSd(oDr*qMp;1>Nam12#x zf)K0~%I$J4@|3p11!~)2HD3`oXK8N72DeiU7mm}kCF?X#f;GzvBv~2`b`o)p3Y`Jn zhXXsbEStgxeM`Q4*SxG_<|KRoNU~m~NC{yacE7ib~;OS>FQUK50 z{i8OI5{?>dLs^?Ml_TfMqBTL6Qsk(5-S^NiPD$*qHC2^z5D*%Jt6I2OZ2(9&+v3E^ z9z+UaV{6;!)pog0d2PlcWZwCtJ8`PU0_JLhvoa-=ILATK1Ani>C}0~`UlYs9)8sd}ffRosB!?muRQ7yLX4Ra&9Ur$XUSFrM}i=h0nAY1{Aj*mY%?eNO(sA zd4LMFcW0!nZjKj~P_(Ejm872-+Q06h4VYCC(fQXR^zNeh_n?2VxlmCX&JI)_PA6_((B@ntEf48Pb)6K63IpcJ^|6P9XsnfQw zlIiI_-?L!S@CWl~*@Sc8->9ZRD1W9C1!3RsSG=}0d-P|HUqLqz zXdupdWC$5bA?x`yd|yE!~`lp+175#|e;_!af4|)oSeduJ`BE8|UrmWAljh+JP3b zFPc{aAlad-U*{+(!ir6OVlXno3zfL8;Ed!l6j1!pF8`wqMK0;~p8Jtnbq+2qJoTCK zyU*$qUde(U+Ew3vta?q#XPOtaGptUki1LZ$KOIfoL_suO=A2 zXJ-AriBnOLwe$C!HnQ#gBN3i#^4j6x-pc1U)(=5Z|7XY28Icc1%sFe_Tqby&R;`Q} z1!Il*nAhiYDn#u9L-JZvy*O5;1zi!RXafACg+!o^Fj7K$=IbuP5;z6w z$4Gsu@&W3F`#3k6MLj*mTS$n6rJ1@uVREl64g{FS6Lm0u#{S_t2LE3tDO#StOlpLy zrrK+<^Qb;Zx4;A+Z|9Nx1*iwa}Ep{Yv~RJb`40&-GNYbS8Q!Ti)_iBu`7y&Ktf z5H^ZS%DHmLW%b-_E5m`lf~khD$;mxb8=6?Wo)Ji;eapStN`bS6kZhR1l1OEfk__w9 ze@iHv^50{Q1kzFl0d0reU-Wqt=)^oCU97d;%h)>Y0S~|dO|@vXP^Km2>o+e>Io9Xa zF1~!oyF{bFrVMLKfi?x#X|53s(Ksv(%%2bcm@8B?U%^!Ksy09iWOmXN8CPGg#!2g! zgdVe4KgvaEmF;+%d1x_?1~Qh`VVd`$11iF&6i5iPtu6=5D7bQe-4T2+>5RN&Em=f5 z*PsU8WyYu(YbuE>a^ZlUb9d7lWq+pqo&a1qIGIc4Ag9!AG+hc7Q{6;@j!;Cd+LO3K zH)ka~OPxq-8(I%8}@`Q`@H5D=#GNM>`VA;zUmLs6MRHV24;N z%ZmV5k#rax%;&!i-nbVoU>zLlAd?OrsKEsVPeSwM=fv+G@!`1J4#E4=((r+Q;Uxq% z2zDUGmr7X2;}H=!_$H{)MK&cN^(5l$W9-3PdtOu-9K$Pxi||b`9+{yev#4n2K`9jL z3B>fkCgE~NQ64;#vQl}r5nc8sA9HD6_!RBB#Ih?6lw&>9h0JUkWI-WktQ61t{n2$z zdjFm~^w@>`_5{2N4SC_XDr|<;BmFB?k*UNxqOlEbk~| zZAW!e@eQ*QpxX?He}G_*4lmqjKp^_IG^+l+=O}^3XEp*i2Vf<`yLH_F@%&+lnMsxd zgwm|D8mf3aVWEaIvuop6SfJeliTy;n#oKvPh0p3TLu}QCxI%tUWknY1lUF+J>uk(u zQ%%o}2#cnd@*jQVnI`%7gL0U_i5xMEX;NIIA#}Z2sXHp^y*WRgPLrvJdI)V$GeE?j zhq$fIb6>2@@Y@zSJ_SqosJWsI*05xPC5kr9v`5MfF|@+{_w>(!U1NvSQ6&3GV}7ma z?cyAcsT?+_e?tlTE}!+sL2gM_W1SPp1 z!pI-LLdaKAG?1`yxmsy<8xUE;)WL|;R*YN;jlP+A^((xe{)9ug4HwV>^hssILvkE;CQ!J)TiHANvFY%Os;KbAxvJ&^&8%f`^Js{l{G*Sf zQaA|MeNRL3Hl?Pg+1l@1(NqI2>f|aibOvyx+~i5Nx?Z#$7j4$uXdSaVx)=%m)HbX1 zdvd6q5Z{RA1$_MtOz~&TU76n|&FM>M&AB(}TLkbafRfZs>E!E`4zsUo-juN08@Q+d zi2mAAxPu|M7Jgg{8Y9mSEH#N2l#O?Wc0Tf5dXnHO8w8YpXX~wcP*jsw@4V8@UO#H_ zZkd6agyB7YZ3#_M=`wM84LXWGg(`P4ajwvR2AQn2QLjv`at@crK_mN$9Z}?o>05y> z4aJ7N0EKsH4Gb77f`}Ce&swL*rmObfp67B#!La!mJF81*9{S4X&M3*EKvwim2k9sQ z9I;ac4licFOd+*9#izH4708b-zkycVYDOipGC2K2e3yaag4GJ~3 zg1QRz6ZYquB)QH9;@Rt(`9obi_SI<0ReON+>10oQw$Zm4A5Q9tgwe0NpF?V0@GWym z6DkT0(@^2AHOTIpdB*jzrEXWLHHvG@m-JD&nvEf!{ z2K++{w4GEeEQwX%eHEP^vmGq>LV~O6cFu%+0%q%hZ*p%(4`a->+gaU>(Ic^?k(Ej2 zAefOgsdYZaJSjL9q+Op+x)r4%--n9gt?q7z%1Z*0h0!;3)zt7aOfrBo<-W#WV zOmE-9;5)vG9M^ve2Fr(yZ)yRN-bH-V@(pl>MzJo~_uw zxQe)j6#+s2aI<`W?eKCarDF_;;*VU1oC>U<_CNuul$i~P|E=Daz&J~Ux#wHtRgu+> z4Ft-1IG%jnYJ*+}{HUDaTN@s8ix*+~X@6&$3&RXOCU??7!h%O<2ZN)bD-2s~>BWw{ z#WqU>Vh)tCiCU2jtRUV~$qgIpIFPTb(McL!o+?^NV15{8C+X0nlP_SJ0AqB)NEpnf zVb>5}Od3pgyw#q`3xa^mZ~id+WV4DNkoy2-ftFrC1XUo#(0C(UMMR7n{n+Q=`6lm~ zdD$F8*64xqFqJsAc2VDm0H?8%5hEWo<+MAQpu1#LJWcjY58FUaJ)zIm*;4C@q>>}S z{m*Y`3LKNZB%i^rg(|PIww!CT)(`I6_W2hLU|Au#g6t3`WeVGNc5_n)K>aYNj z%B;RNT`p3h1snQR3d+5SVkylxJkf6C>DZN7wCAX(mNdecOZ?ZVfBMYFoXdt$F%F3- z?-BBFX;$~Ab**j(XtshoiM$iYczx`5COrmj-qR4 zd?teTN32gXGOLX(QWClS4~g7-SJ#81H$_c*WDwiZK>drrAgiR3WYD2gf=%Lu8Pa^N zEWEsQs6;RZDbtG0-^&a;F6XP07Yvk+{@i3U=KZg&0VTcfM! zqw%9;XGP16VROWlGs=h8*=NP(z8Uxw#)ATbT`UAX)mT}12ZA3aLKWRuibE8ZVORcU z!-j1AwxCKsBW3+P-Nv2@@Cz}4vm2_{RQPov4v9eg6|fj@dcdQqqQ8rfphqbu{Q%+$ zIRU>Ch6dTVu32tBm&lBw7UJVpp~0_wl^nR^)LqjgokUuoI^J~ek0a9LH&-)NK_x>$0!{?TR70-%&u?8o6WoJogayrpc}KIVl}15P8}#^b9|8~ zD+%UZd_k|yc0`!+>YLpf3<|SmPP3O#sLFH!ud%QAlF_13!&Mx zJBDK}v{O(HYFVhuw@5zwc9=41;RG#K>_cSuJ0tg*D4N0LSC20df&%Hok~meNv6W8$ zcnw}`=?OP0L?pgQWzJA)7;C&88oIq&DHoWB>pn}Po^Gta?A!ML=K+m#5sfBR9i5qb zkt`x8aQX=}HJULNc^YVd8zXi`3XYOl(T}%%#}*M#J?$6Ur@Hn6E-29*ldWFGqO zHF-G-#r(xRv-jxQY(>t%Za zZuXR-^kD%zx!xR8al1&0^<4H~&VCd~c_N4u&g=5kJ_Na8Ac+BU&y|or{9mk=-&9?W zmkL{UJpcNd1?o`x$K7K(Mn&YynNfSv#!LsuTk7fzUEwTqh)-gJqFj-aLMJrsPccmP zfJuOl|42)n2fvmY%f=`wCx)Mp54vIN9hlX1SH$jgf{4I#n2+6J7t*DuNBIImWC3RN|K zp}s#f<+zQoa-LHQUBd5P&qJ<#HQ`ih*?3zP1{QXh@c@g;NSOdO(eHW}*W!TfP}LLH zkrzDZYkpF%LkAlX4?*bDtNUS4GGXb%NWC7%7m#QgF#jTbE7X}!rkCO{it%dIf1L2!Kv-iW-Xx#~W3!xP*(vgFh5HZy)_Kctg=h@T? z3lBRFTS%vHoR>=&{6(1s!;Yl6w6FN*htPUs+5ED|22)oR1txA(TTtzDfuAq7LzPQZ z>&on8c%FC@b9uZi!V!%z^TW8wkgb=S2Fjn*hBP$Z19b2D?HtAL()@O*6rq$@qnn}< za083lYX}BdNK!@mu6vKaiMH#+Alzc7{U3XdJ<7YC!c`3DNn5$Z|Zy9>PDVE{|_JIsDpKt8>#bTLE+y(*83>)%QJh^UrtO3D&ndaB+%q`B) z-H~hwZTozj&Z+QK>hxd`XGOv{8au}6q+Y!ivF~9Mm2ZE3DB2nccu|6M&l+ouzYU@y zsj>O*aZK$BwIbZLfy9^6&q3;}FP}(4z&ut`lbM#t&i9 zV&b%gk8#xlTwEUwLs={<3B??@8Z~70=x0(gt0Dfx)?oc%7mYdSv5MpGVWc?C7epB=j+9jn$vaB8AgWiR zcDpO%7bKdF|NPq{crJOtt7C5$!kF#|ZY3l?eWLy{)wizrA&KTatr!Q>63aHw4_)W% zpWbSFnf3jnL6*X5%ULllj>>}iQHgmDRgUN?DSP``z~~4~=#;d(>1%+D9k^~cBeFwM zVRuUN$3l%eJ-8sS=`uIaqz3pyssiaE%mf!31K@-*Gae!o+rl{-1sXCtJ>0cIu)O5o zjI{9R{eZVMNS{sLvPd2HvN+<{SV@s70{i2(A)a^;oxzvMQ3SnFJND~!k)&iT0_HxP z69GPQ8A!9GBO3}LPV-@cQkS#c3RCyLPWK6G)%y+Rgdy8bOSI-L>bDrYV1nY~alExO zNtVyj<}-!d0*`3A)<1UBp<({Jrw*9U(XQSuS??P>@H?hQ~ICC#3|-^ z84aXdC}6;}W|Jzy=Q03I>mz6G)Y_^nzDSC!TL7X0uhVTpB)%8b!v-DvIW=>Ly^AXj zYtHINy`+8$$D*+@vGCXskd$DZexvR2~EHU+^Nby!x{4N*X z-aU(T8-J7}j$xxmFU@aAEE0ObZF?dT#|BU9WkqAiBVcX}h5ZLWS1~+A>zS*5f4=Ka(Bh(~2s2Mz}I`_^kV(N=7bVh5iqq>EI zVI>T2;*BNd<-KU{el<1&M^940dk-z|f)n!@a2Ds>P+El@MGvVSr`3j9S)+-MG@+r;Bm$%*qP#28w^dHkSy(df5LSz#%@#BP0iU8KM>{i^H!;{pF&${M;P!UK#1 z*=<=@K=USUj})Oc{fKX^)ld<;zlH4MZWJAhhV-Ts`$x~C@BFa9Px_gGg7v$THz24}tM+27@^ zC7UwEAqhVzA+?o?YB#WdJMyCk|5&U~=_9u}s5rMAws*qatAu` z45dN~kKH)b#0BtFXeJInv0R0({1~;hkPrRo=Nh_bW+NZ)B6R=9_u?euv$oF9^RefU<Aw3!=g&?O=BElp)a@0`KiTkIlmad0)5&5Y z2>Pp(e$ph|0lt;;YGzYU-<~CwMQ0VtGB*nFe&d(Q52*b7D;oi)H>$!BzSY8E2-F*^ z{oFhI?aBHP1zf&$Ehn-^PZDg-V_EWH_m+WX8wv*=X%yg#ZDgq>lss{sd2|s3DUKQI z5Wk;Zf9;J+v=8D_xyJUdGQ5|BQFbhLHKHU~3r1JSu8G5Dtb;$AIsg?WW<-TE2q) zdsA^1kRcTZBe0}&V9zan?mivL-~iw6w=ldfm54^fO}A5gQMzJ4n4}0#7DhHiP0jeG z(n#Y=`&X2DPT`a>m2f2c!ULwgS}3zLq;PVr29@QlU{|)aK%Y`@g8drO%-i=!dp08K zdm&y$EhaaF^OR61(JyLbJpgm@6zOO*LTk>5Y?XmA(;{F+Mz%ds9)aUsrhEub5C(*} zW0B$FWOjPo=+q8EaV!UvNDLy^oWR%^L;jB_5MplgeZu1V2;q|1H>nO_qc5;p{g<}e zieId}S@$8a0^sBbr-QZ2;=fRbJE07XirP|_Rwm9QviE73?@K4z6{0>w<<+w*2@uWU zf;JHW{hhPs*YH`%*o&VVaSss_VbJ2ucbm~{oMUcQ$`(>SwY+u$*gsHUrvshz!c%EC8^+C?C3%{y|29(t}NQG5TE@=*SG4CJY;cDivQT!7tOuf zM+Bq$2z0`cG|{u@;U3v4(iIRezswNmh=K|&*7R1V!%%(bR`^ZoqoFSo*`lm__01qn z1u`DasXV!4-pb8%vi;&xAMPiuP_**w^}LUWRr&np`1p3LUF+xVYLflV5!3UA*kOyt z8Ht@(0%ie{7MXM35tSvk#%ZBJ75piGbZJM`4;s))SJa3ljbafw_)|;6YM!vwDQ#v# z9B_Xjx&eZ6eTK`ux=S%Z^&xcQp%39Au5vCUo%ZKYe=ckD=O*o37f;hDP3E!pv&MKA zBd4`RPL+a|O9b-HDy7d zi`Ti0!9?L}Nr=f)x1pqEh#U==0S18HB2s&8RG48I1I>E&)4Z^Bw+9x>l>EHI@D#R` zU8ta#ecr%=YkSFqW<>Tt*Vk{AWIjX3{?lG^NeQkw803Ue>og!zcy?Pc#Qt`&TO z5)Q3GmMBCTY*$rAmifC{FN$QllrA*2gYv_rRSgH7L!*a!bRLPLNLM6-8tFd0Pu$|0 zb=7yK7QU+-YAS=24n9+E)f^iKg)t-So6tv$LC-T(nascIQ(}YRMJh!B@E4CGQGv>B zF4Y1GVA3m}a6`c?T{gWax)s%)?R)V^ugY|;M>K~O7nj1b9OgzRb}q|4cjjKtdmeR-|_{3vnR zB{!jIz%ekp6$r*nAq7)sBj`LS&s!(2`D&vuG8{uc)O<2d_zPv4d?nhhoT!%@EqkRK zH2{tn%hq06y6Xgo3#$+%UEFMhTg3%rlvwZy#W?bMbdvLw!x5sddM9C_KMM}}xGK&u zn}f(}l6@$xRnxrN<}nXr-wS2|^@A?>NC|byG$O!k<)IbINGTnv;CkAovs}!!cMJ(yN!S#b*d~% z*%w8r;$U3CmZ6j#@9=%Iql9zIJC3FN9KmBl(lx|weBE#d|FBO%;;pC zU0I$}VI!7VY&_^#gF{;gU-EQa&1xxw@`1bHsb#6-sDvqVI#kV+$JO|93Xq{z`RG`v zLe@~S4+K|DGBXPPLm*+HH}^ShZg_P6wb6P7r*prH8uPN5L%_6W;cHoU#&%1)m2qm4 z@#U+Gk#F1cssr~=F_0lt!%Xm#f;;BNQhQ4uwY!NEg)IOkvC4*qSumkH+82}M$OEpC zN9*v&k=$Telw-bq9>|yB`IV92tv0Vwa=;8onPVI^pjx^$ zY%ZGVJ}G;;1!T8@g!9@?BPwBg~@j;1d@ioRGoLKkTh z5f!XakgY6*@`f;A*pJMWdA;3zVZ0gw&q@cCSsm0)myfhdf@}sG$Rj++=hfU98|#V!_bRO2w#0pFc~glHM61qI8LI^XjjE zv&Q6szCkE4(UwhiIvNx^zSYQc4t{YdQZhPuJpYG%zABR*@>rE)y@E*|0?V4R&cFGGZ8V{*=P~d zv2HZK)zNXqRAEai5Nw^?b(y$JL^hkcX7fT?qPyWdvN26w;EN`aBn4zG?N)x>wHj_^ zt6q4+q9VD)ZRAerDw7K{!andKVME!%W&#m%*`K_?hwYp;I6DH!D4GJFUKySJU#K_z zfF{dr%xuyD4;fDvZAsL(izw5)7ckt)L864B?UZh&qhN9f5cvQoZS%w25^-HYx+oJ4Lh5d|4A@&2I8+Nlk&5w`yIFk8qKp{F#UZ|Cc-{}0HIMX z6Z$ws7KT;$&J_`7k;r$&eZS)rTk!wT*I(GhM~Lf~wtIXZ3fgiwI(mD35@Zr4TBWD%sJfaAn|~HaWpJVp(YjLQ8(3h?CW!Xe465tl~feL z)G`fB$0}f5Tnol{A?ajK^gN;Mt9*XB!+%`cO>U!_b0<%x5aM-sJs^pqt)D!DUkzL2 zLN(R$6)HdCDJn#UWDzOln;*~Mn7Iw<>#s$fzujFL?rN<%;-YQZe-U2ve88M&1CB#l zF@Vj2FYfS``%~EKr@;buJqaKrjo=6_>?|16<#FLeZlYpEjy(B)YJ!ci=PxPajA4_Yf+49pJJ9DF*Os7OZyKv1T-MPMYzFj@Y~KPw=K`Pojz<;)rCC6t=3 zL+?@hwYT;T9ilzG>0@h<@Y4;G_w|Di^n(DCL;7^(Jo^QJf zVu|+^{d%W3dszlHrZR(SEUOvwR>NMVhIw6LQ%0o4gQ7n~>5shwG0v*8KMH`Lmh}ea z_bYMf$`K$xqiYH)C$HvC*!O{*7EibsF0E2ssI{Vy4M^1woU-iRg&*|^EkYcLr!Kf`T_eA*`#O+BJhiNj! zoO&60wDT+x6Ox4LLe~>Ll|T3Awh&W;Y7#X$c35m5>d`6|IweeKZC7k)-ceU~nc4$7dNA{3% z=-JP>@zdoW5iFO9YFi8nMTnxRr0(%;3~^M}6M39*Ug57c=4Q2cDWwRTl@f!yCZIV0 zi~XV42A#C*$#ghr(t(hZQNS~6sY>}LbG*P=7rmdZc>s4v`k0ha5Zjse)o}ADBsVo~>nsPH^KdW4_qV2l zvJ2MRN1YTdgguX^*@`!wn=0edAngTLFosGo-v>vTC8V6xaQy);7{mKu{@>GERU`PP z$i_7$RNh;p)e207Ek=1elRR_nXjaiSTkd*c_|XgmIHzYr*x*3W;jvMM?{>&4S(D}g zbKtp`!ipO%4~dnxUWVHaBq!E+0ve|xSqxd4T2NMJI-FvNtQQUVnf{*7=#>raevb8ZFA`-@rtQP%S8Rn4i3-p`Z1D#4 zEn1IW#!5~b;Eb&kvdIWqEq)+Gb9ZYbk%&nm$_(Ry61Ou+$HNsZ;_HE4$4~PRBF=nt6Ois z*Q=|Im#zEw>7BM=IH~;_V?FIC;b)7q`IZxQ+F9bA-plOKfZUeL^K4UtW_`5t2C7{K z-tNVrK%ZFX-!;+_71 zvNVt;Sw&>SlPSkLr^PiLoShRf5(k%@y{r>o=o>Jm71KaU?9ZE4S)34Bt`iBpOm~R@ zvyPr(y@nlGz|JmrzSmCxe=_5!#WOO(c+a{Mc^2f>EMFU^I<_CiSPr>9qeDE$r)S0A z4F(|Vm}x7;^c zR~l1e{Pa&fR@WY`aX~=wH8M_LP}ZNoJOd!=@TBFGK1?=;{ zD3hn?j)tvy7M$ZIx$DA^XM(p?NWfOG&*MsR?7x9I=Mn*70%5~xG<$h2Aee54OppFL zPkO$g!6gwG09G{5fc@)kIIEj!ItyLuTG5KO%jB z3#qMBi>33L@LfC4`_9rJ8Dd?ee>_@iK68z)OE`>k1#~~J6DGeqD^PLNMUCIze)ms zL0AWkC;wBd@!(g)!I!>8sxSGMizI~TiC*A(e_7(C$ZZ6c82~oVO3CjSHMRPYQq)gS znkb?RC!*f|zS2mq+-xELi`s){FwQ(4t&j@FqS7vpQwoa>n5-S>|FS5lo$gNA1?&Qa zZvXh+baAA(K8Yi;W=Gz-DlSXmW%>tf3T6AUX>#&!%Fu^t{E%(xo~aQRe43dE6c8}W znKk26x5UhnbhTaG)9V>1=T;$LMS&5f9alXafdY@C;B52GCmXJ~yqA()oYfi4%e(vO zl)47Dce%dnqXedC#C19^r=~GU5J^4l#n+>@t;?ss05L$$za_dDxgqzqdgsvNNMB@I zN+dx=1LV&Lvo@%&sFdL#%i;lgAh7^2a|q$cZ;DMxA?%;n+96~nNw@6I?p#v?F&_}u zRH^sL2((-%AlaSSl6L|T9-~q_cd)IkAMm0|5>*x_b1iRI+^1y zo;*YT4y*mPxkL1wvW&aqqBFFZeE5TyR4fJV)hZ6aw(wV^hTKzLQN z1&ThG9V)GV`mFw9+HQ1`hP=QQmI?i*mY+uu>~X@n4=6hXpibNK1O^}n(bJe6La`Ec7}ALGI?`2|%~uaT$+E!vk%OH=w7OKA%dhtdfvIl3fA_DpFPX=zq=5JMbc75y$FZoLiG`QN<5R0kTf5k4F&{L*2iQDc z20%iTa?{OvEn)4XObzr)ZBA(vm>cLabM4k4<}a@nVcR$&H!Plbs^LnS&<0R=K4$55n70m&8eme2&NO*;g^{oky?@<#!4h9^{?i_nNd{x_*r7dZ$lF5VY@ar>hBmkN=nWa zUaqBlHn2)0yd_fybKHnA@yV9>Xx4&Off~)vEa0;_f>_}vvSTLU%pE^|hBx9L&HEYt zg%H99fY$NSc7d+_f3oQ-Ai&XDq+6(%aV|(+KCGRV;kV%_dTP3B4ycMnS~K!(A2R?? zQO9cJo&Z)~{m=8Af5WpY8K`OVtz#t%%O)o+i#HUA!rZ+=o7A(hnIXL(2tx@*&Xf=L ze5MuZs|~tJ>p1uuHrB8})({CHrhNNJF}d4Nz1L>8UAD+d6gA6f^)=!3DJ!ES7trrE z?WnX`gs8bJQ;0~#{dL&DVksUMp#3|?C@~k)`51-)YhxA81Wi|Mo~Q@SdM1t~IQx_g zn0&OZAtQO5pWO@~H_niiGMsD`X8C0|uLyf!1kah}GV-Y1WN-$nt4ZAzsd8Q#-Fe*q z4FuSRy0^y5Ocxh`oCk^W>cK*++2;<=Fm!iPFH%eNVX!yqSoXS7JeAFPmb*JP-B4l# z5zak%Ny3UMOq8ux2<;C`)x*JOKCSc>z`Fa7EU`l};7t8b3ez!*u5@vH6NTR6JQ^J+ zI>u-zQ5omRx99=;(H~RsT#7?fR(jnmLaw416o@$-hc#G8dQ~2%MwfX|!GgeU;Dmje zn|PWY&Y4pe+{(`gNLU5&JD)2nWKKTHqvLUhNBOpAVZT(oEAmlp%qIz5Pu$=}QAPrD zLne?He3JJE?*~JisGVug zydy&|+M(UXlrrJxYwSU)HK}7r9hYZX*$uJjs`xi4TKmcsNDEMvzvFL@GuY$*&opML zkygJFv zPWN9V^LcuPb+TkJ`PsK`Z}oS;@5cg+O@?gUm*edvNEA?g_Bu+;HgOL-fEP4kWp|@L za}RR_?W-PBS&)ZwGJPPQjzNt6Glk$|`1GK3+)*@oT=f3>pp8#KC6iaV+Y)5prte#V zF3ZUF?#4>tbf~ssi}&RPF}EzB@csIIP^f-F$%J+++HZb;@Rv<-`+Orv4aF>fyGC0h z8IYE07(JC0oEK)L#zx^5fnjBYuzYghBAtjU9i_le-3AxVy+c7@4LGDpPB{NDM2VFo z3=4>%8aCciq>k6J@B6K~Jki&JQEs5L(2qY z7NR<3RDDT#z8N1X*T!o6;K|Y3Q-Ac7_gJ>Bc48jDE%|eida+M`-hjkBJ)_UB8}8z+ z6Jf!Su$5si-`QwO*7b@9Q=KBjYr2jPJkTt4kXkNb5N`nmFzzI+P_|wVXLYH2R#BKA zo}(D;u2k$lic!oRHxW-aEESr+@})wm#mbRg25+Hfx@l+El}LP7Cf~?TlS*a@y@N$# zW*T?gsHLQ*5jd=WYaP5x{ma*~QvFRM8#1=aM%ZsC-0rV#g&1a^$bjT@?C|(yNQ|0o zz29Ld;Xc#S2FnCkE1n~Jh6ZKwfd)80jIyOJ@YVrHHmg3O{_@gsVu(N*gI>Y!F6mFO zqx?StUSBE*h$$iO*g+$-y6yu?Yqps?^eguH;yKJaaX2$d4IpfjoL(Jhgseu1T5^6tul=8Vhwj^Kqsl@8TuC>$>B4R z@}z(^6A;64^|eEKvQ6+hqTj~1bNhI}m+KH9%+$4sE-aez@kxB$Y@y&6(&Ts#p7%JY z{%0J6eVRdq<6einSDnG@QZq11-JAK@yXtApfBjxlT}xz_)FWCFL~!E=LU+Vd`X<;` zD}rnf-~b{^NH}CgnCcFU1IoSDKxC^@zRHZv$4qX=;KGsocrK(vq|+H7UsEpgHHGq1 zlzjbeDRVtz!Xcg>SdH%zrPY1`W|0l3SRD%&1B06=EeRqo<*O1b@jXv zA?p@2ur`}>$xxntB2fI|fj$ZDn?*Sl?OF(g5^XBIxvXKz5X)^X7!C#H-9OoeujWB- znHrts)!&}DDM*wi#Gb7vBs*IUJ#_i$QLaC70x?-8Wce8yRGm|Mp5U(j!A2S|ZU zO7AUxGgq4>#N?vl%ZJ(yuq^b?+t#FKyktx!C=#ruY$z8N4G*zdm~=k=rdR*Qtt!KG zZZ6`;H>9omf_dU{JBf@!)%9oTBw!wcpNiCbKgU=XO>F^4r1=>*O>j%WB)?@InCM{I zmy##zC(pRfF z%a#`NQw2_^2jW!xQ=yu{(RzS#2dw7kn(dXHdxTA8HV_iS>#Z*N)(iBAyRkcZn5M%* zFCLHXhB?Pm2&x^JuD@Z3)%T|xje~vO*KmrLbwY{gl%wrQ;qTg({hyYr(_`Vm?h11A z{7(;V1~N0mBV(y)J)h9G#eKyy>>o?MR}*S$ql}udY-)7m1^xEt-WPFTO9h2g`!QgR zi#nX#1fCLKc;5C1``ZzJ2g_^{(er*4>xrglz%y3{uBV}rRnm(VtKnN2o|*DoTnki1 z(xa7`--9dyp9TG+7i_fWgt#e80fQkQ_lDW^cslGTd;r@Erj*)8Pzt{T(1?G!d+gH@1X)Hnfy#IP;D&DnE=s6 zB`-Bi! zZ-JBv7LW-QGr~55`WGo`!vz6h{ARP{^ixpzQ8jv zhYy>hfwn!CQ-4i&TB5W*`wRiAt%kgvF}?6w*|b|JW;VjPk&in!#_mN|n~Xx~sh4cQ zO|kq0Slf&Fs=2v*i)7(O7{Tg?m-L_( za5U?>4@+z>xMrI}+0^Ymk+3S%Xf{#0g+`DCO~xw^rON@qis7%zzjbCU^LA`2b*`~) zs;}{FWp+HW0j$1FEu)r`V$7`}f(x4-s;uLRxyz+*5!P*)u>3NvEx1tmL--fId5xSd z+xTgDmPQ*|P)mezq5Foztslxb!xYcxw-2r9Dt)g8-*UH9L{F|j{~j1bm9K;XwQ;qb zM7T1zjjEZ~S#e`OQ*^2D;h`VEH7F>&-TV>XJ|gUt+i!1B36?T3nB2L*-BI#Vyg7Z_ zNrt`m(#{6@P|5c$`lmfcFBWkfPMhRY-2=v8k~c=cLo986~-eo{)05m^#UhtDs0^$QKaJX+X?j$ zi!mYCdL{437b!wceCu7q5&kGGcb*uEikS zW4H?@!i?U=MnjrN`MYNSr&Ikd2jMUw0}r7evsbz|1Cg)c0 zeJLx(iKxr%F**n0Dl4pDUa-p@Oh6?7X?Np;#wJk`gLUIU6lZZTLNb;o{8!3h;E;(d6zr9LQSR{q*W0NxTaUQF4(DzFHWdamks_Zfp?4_t%i%I5 z>qo*a*H-uW_oC`{B9IW4%?p!Nj0G3TTnpWiXBut`Sc~*@qNjDAv}V*$EjL5rFuXFC z@7rV#xG&7X-{ z83(WYX4sT1=@yeRUFJBx7)uy;qxQ*+;DR7#s|F$s6U8F#)H4Tqi;+_HCZ6vacp;7g zS^oIUH4uqe&mv;?3e>>wWjO*6ttk6`DhEo9jv5T-%Ee0Hj72dJ z{*~C_NmFlfWb0FPi00<&gZ^GUh~m4DSR;qhvx; zpMtq_;Iv`E8YB!NJ!Y*Facu=b#0ArqzZNA$^qHTN9H)ef5U+{)8;2@|_gtC|#bF~Q z%kB%mBqPNcW7p7?AXopu>CYlaTTthQ%F&t+EmGZWA?cw$d;_P}CA0CV1)eP5#}D*B ztG(U0K{&{cS!388Q>&ojolz{E;qi05bi8u~sQwExJ~U(K()3>x)oMG^~t(hf^Q_#{c|(-Ak^B2e|z#(@uM~QY)WZ6+9k=)hut@d8`;Ot zz+(M~3_R5UQ>qC|dfBls=}SQ*M!dD)P+X(L(Np3w7?j#E@K@O zHJLq)bw&*JoaQ!5Xs*&?1yHu*mw66YwXW9*7q9ZVh{KYOU`sMhd_qcc z16_(cv*pQ=V=@{ZpqO^wX`n-@xGAAs)YC}){qU$o;1kvf#20n;$|*6W-IrCEqi_LBeGMEDpXZytlv01`nW9gZr}{{y(%3S8)IlV)LtLYe`Bsc^o!WGOIB>R| zfDliIxaOoL28e6NTGNrBt?SZ~d2C}^-#P8p?B@Sh7J#UB^tP5$A^J->o_sbr>|y*T zfkLus`-4@L05R|O337BTQxh&ql+k_5a3ujdu#x<73mKm|%5625avEGn&hk z1c*f9&#P*75SwY|)Hiz^pIRLp(gt@ZL_tn+O}o_Nsp}_}GvR7VE-eD1+TeCG!urWr zDh)0Wr|=np9u9^>!HC6L-Ggi62tcOk;a1+zj#xp09gu*Zvp#4@{JursfwC6Zi%4j3 z$|BC_y@B+F!jNJpv>XL;yfV&IbrxLK?*|t~d@w(6G@!|1bvS2t;uc}#!!vnAeQijo zyI`rzLKJtERgfykH7IyPSL3S2rp?6mvA zIG=O9?H+bH9|kY6>w7&&r=V+YsN`#AR1@n|flVthM7EMxti7v58lbyOLEQ9#Ee-LI}D^4XW+ zr2NJoj=L7Ak#(!0Z`-Q17VU}YYv29tOwW`yn0TfSe-J63>~DyJtI2sB#^p(a`q-;p zL>?}{^W>W%{`||o^=W31xxC$Nr`MW)SCMyvF|uN#RL^R!BPuQ)0O2Z38(`j_Rp%d} zwhVSIx2;Fg;&RrIx5y|mkMRFvdWTb|jkW8bR+vCmX1K?QF;~_1Hjp05K9juM+~h2f z1NOTZPma!XV55Dd!1P`S=~V<^Od_zPbrumzH!T9%?o|MHx*t`6^+}f&(!3M#DUbc8 zkgOIIQGh%lJ6BZFs=(M-FG-N<6mT_%*(I;#d!miET`XMgC|a*+6&5vlpaTm+DRCXR zwS9Y27wIggUov`M7s?Su(s}rW9!M?ILB}MPkR1tVoT9x=7eM-ZL|Pr zYrt{Pw*mRRU0%(Y&VDp@ZPg7cL5N;7%uO@M2P?MNCE&0ZY-GLo>35gjSHfSYprmC_ zZQ1p3<5SLg(08H;`lztAXA>&N-t)AKd{y9Ij#ims%QM%dOn^yDAOCLfR5W!JJ-Y^W zaMUNqRAJwUrreZ#BC3}pY*jO(1YZGaRl(V!GA?R|{eh2rFTtBwnJb?HnM1U8wV@&a zSZ<%1f(JD`IDvLr&K8O$kD56`^TH&^cc}}n*^K&20A`v(S=N|{6ElGlas^{uH#vee zep1rPA7q>3Y!#Tv1g9b)x&po!D?`<|RqyAIT@58wBnuJ|d8>i#JArTytiq2%QMM|K5;CTUspCfC&TIh{8qimp>{`L)Z=J>@!-N*s7-;S>AsJacN4%wytT!|{zJt_h{ zDEeed$HJNk{uE9Ar8~DPOHy_WH2#7hhGkbw5{d9vBF&~%I2ZssN7n|8+4;e<9*3;W zR`5}OYbD_1Fpu$MfJ@A7sThpNa!Rcs`souL_NC)LEQj>>-z)ThAPItDNk2fW2Z_)v zio-J`u*Vh#2*Mf$UXCN5TazXn^YcYq9n*QE>Ijb%wsr1q4^}W07FGQ9Kb{U=%BDvm z!6j1wCj?meiKwtaH-Z|Ye9LBIz~>rbVd-DqiOKU&(H_5$^K+x?MQd0u8k&*j(M-b6 zchh}w(vu~QU#6+hv4h=qC&xQmp3mUJs!HJAhks!epQW2i!O;7tY&rQY4&v+c;u*^>|pCLbtaM;pght^2k zQF?X4D$(4ub!jw6B0}CzShyu4b|ANT_;^8Q?lgoUX@APYkfID#0E| zDr<6J%B!f1NMxflM$=3XdFt9E?&TUqLLrb>yW##J^A(5K&~;S>?s~@9TE{7B5=huh z$Xy6uTgMwP?N>El)2g;mBt7nWEgey8326q7_mU<2WLxf?c=Oz`0kPgd$gJMb`=I~P z0Q>Jv#vF3HLKz+ZGO(kZbf0R-$M1_P$)njJWn7?S2U4 zebO@;u%h9X7_ZmJo)wp$-fh+;EIcm>a)1hN$JVAm>07sDkgHgQ7Cz2chhW>NgB$L^ zGDom2Jk<`}LHP%1TP@JUOHYFp^vv*7 z0~w9}hJtolPSVR98|=OA+Sx@$+BrL=x1VL_V(Mur<>l_7IhYcjzErMNl?<(h} zeUHo*VxnnV_Rd3`rW7?+k1o$xLcTn%zxvOSEfDYO?A^JwQ~w?^Zq(geFdC2z)5FA%o_~V{fXbJSm)ijf(%lk2*(b5}l*(ak7HG*wOa4tvEZ-Cuuip<8NSO>J49X{)0 zKZ(O63;C#SkkMa+tAg5|%25N?#Z*$%(E-zkKkavPemt`RYN%d(ffB8%^BX0B4oSZ6 z`8WLNZM^CakR2tBu432obsbj=TkwM&50L!SJ{5L1C-^Pl+HX$xty+ITVcJ}zD}dV;GuMKG429p62)2?MdCf0ANhvQkw+1nuhsZy& z25|fgq?fL1Z9zc-rX`N>jlHlPuN71eQHs;7e7Qk(V~&RCNg4tRp4r zue1I+-ugnsa+ZJD2jnb_5lR>Mie9BQAsm5j32_x(=02IFbd&lY4Id?cyO893gXJ!m ze^al*tj=Nv`hfJ+EAi}{=QI%elWlzRQ8Yh{>%24$Pws3EoIk~`J`8K8dfgg9!K;Zw z{Sn^@u4QJ=OPzh>T8m!MYN7Q0Y>fz{^K!C3XzPL>aFW#c-CsjCLU?J}pE!EW88bfL z3mM3}{P7{qE#Wc6UHDlZ1W*z+Zr}6(A!6&H2s-|%HXElr87N;_E$@MUvF@!Zyd7a{i^mXL69#mfDv^3GNG;^w!!K|glXTssM+V!&GtnS&OO?_VR6OAJTWNx zl9E+qquXoNwpkA+n2z56S4QK7ZZFWZJTa`5bI2k<{4`bD_gvAb2j)WQz&Q2u+7+^* ze|guhweioa@!Qw}EmW7Eyp^1HJ-O+mT5K_8pwg9iPb&*k6YLBL!}h>u**~KqAXT+y ztM0)q1E0ExUQ+i=KdfX-JYgkLqD9Uk`;tw_I-(dQuo(>5&h8+Knk{5T|% z1%%+9f;AE*aq!q}rrXj!Lh+N%8wvg2K>8ihtUQ_Z7t|@EdIkk>$dLkwR{qORi>NL| znzhPpE!n2h7iV4!F!|`|oN1uWQ`J-QLf|eE%ShVCw%sDAdUEk2FOj3>BAqGGokn8D z_2ikM>|C?fXm+2ISCm>p{&|!}aUdvbCedg0KOiUpH@U`Bz3mp5)2}+PkCfhPy57~> zpyY#L9OH#>y#`!21?v2M;D??HJenVC%T>)@4G}Wwo5(tRQj8S-2J)dV1uLr{>{M)|s>MnA!OF_Psf|_n@Hf&Xj2C1{VkT#Y2M5c@wJhA^ zFNdsG)XzmL&Y@$#G<4rz~P14)TU51{8Fe24ot zZl0)O_MxCsNM6D+EU%Y4B-&6|)e=nST~BAIPr@L|$0-a@RU>#^N51}wOG(;sRrqG= zf@>0s*!$>~Rs$t`lniT|DUWXTp~IAy7!Pt!zua3$BZ$K=NZU^R8w;FDN727681u8u z{~9CJB3AT4kh8y516KQssZnO42saUD`pVS)7+-G|rr+QIret@V!|St+;!srKWd?^ZO;MAUOWqwpKmy?(Dt zg67r*BY@~T^#b?8t!z5zbsvg4Ikk>Jt$T#$^^%6sbk8iQv{lSMX0(brb%wRZWcJ04#XX4{$Uk_tMHU~{4iv+7203`DrJU( zCek8RX!@R{ZN^-745w$msK|kN$%}D;IKvY$@ENb|!9Eku=p= z8+#!Y$M!6g{KQ;rC?wpqmy+cB&y(w`km4~+(X3^HX%|*jel#g~blBa942Fmmtb*rx zU{fGfF&2VtNQgSB7h;^Xw>IKBg(j)0F&UcJ&2nYcTW(^`*47emR6?T6%UMd~0gjVG$i~L9*Xhx$eTKlEc>0=ps zEc5FwD7TpY$I`=AR!k59-b~^*OoPQmC4O7l-{JIpFByH0I)wT?BNA522>5}PYul(J zeAwY2*R4bSG?65~D{@|Ig|YZpRu%Yna4v_Z&(Ht)?#WF&)ribTRi4M?f5@%n`ORgi zV*?9}gA?MjsAS78RQ(+ex-Uk^rPKAEm+%;UN6v&k&Zf+AOn;=?VTCXV-NHxy14CY|5!$HASMd}{?+OYdx?KdN14ns+CoVP) zOrt{h=Gfc(ba0T!cw%NhS7ov+`}~?=zf5*=*G#nWyr~5d*e(5oLEi*OzbcpyE+c{q zW0~mltje(Y&i7Rx{8O(wpKhA1`{L5y+vJ9f$=O@k=E^nI7YmcB*{#(dUi8` z;0~}r6*8G|Z}i)tG;eEy3Sgysh8_W>WvFh}IfIJoQeEnTo}vd%7P+1#zX|9OGDmV- ztoYhxfRKr)L*+v>;-=ydi-5afu-ayWWMQ0yF}U zV3Z`L>sehPY;eg*TX~X!yBgmeuX*z)On!RkW1V*z%Xn&-$`6osXs~8;frd>H4>cWD zVnn&ji_Tv4RFO?V0;=YTuUJW3=-EOg+%j;vgq#`87y;76Ri|Oe8({N0P!imh1IXTS zC2*3tdan^7N|X_5 zx}(7)tQ8uNZ4%R@y*tf?o$P(FGhQpN)UBprNEdpKWL|*%2(RRchyW;34gCJsjz2qm_m@lML1J0r})WDSVH>kr0h!ZP4g>O;DWum)BoN~{`^g-L5W+G z1Gr*+F8%TJqqp=*{4o(dCqS`vFMTNY2fF_z_lzVGkE_$FXn8Jgi~e0Asd|{BcwsNS za7@-P1FCa(>-DEoE?Ohy)xW zZ+9iKIYOX7E3pK=SX`*=rU$~8T>naHTcth%P7_ERTtI!>cPvK1_-J6Vn&^?nt6Bot?wSD(Y7~`(+}@ zc^yYOz4-7m4_M%~B5W_Hp|0HsmTNpU0v+!X_Pa1W&Ahx$Z8xJj%0ZjWle zLa)hF!~BkB=|RvIA&ZSM+mD2Htt?%yw!Xd&(bCNpmHpvS(aUIgFN7E@ODHO&ga)oR z$*mh)rf3Z}K!*p-mC+LlMF=b%KE_ptlv9$3^`E&n$^ZM}m^ZajPh$}@E}^naruRIS zS`P%sheR}j$uf9Ew)i04fLh%OBx`i@GwHQQq3$V4&IkKvWSsVO&{BYY|}bs;>?*#_w-^|LX&UBC$%0zvF^aL7{Ot z132OXq$;{QX=LWcD%omJdN+3Yh~cy3wJjMk?nVq)QUz*ND4!|#2e2JK*%?CK9fRvU z>f%c)?$n^RLS7!CK4y#S{Czdp&x0gp9G2Nk>@YMot(4qs*^W=wjpl5&Pv0SUOmZbd zjVE>6(19=sAV^8>W{h%`&>2!Q-;RhgOz+HY>U{&Fbco`#jEG63^rDzSjf}S8w~UXv zxxRsV$$5S2PV4qCm_7ZY*4>GY`IFmwgBXulBvh3py10QXPAlOn~(l3z=}WAcsL zLS@?N^muR!xq}?;fDxo*;e!W3S@SEfI#7!PyD1?&}DuGLUfS4d_TIzo8zCBVv^Au|sI%amD0`T4iN2N<>B6-kb@-lDm&m!w<~4 z;Y~n~)a(dqWBu?AQ#FRW@$vq=tDCT&D}bh_0LW?}WH)oqH&N2Y!=@|tVAzZ%4BXSc zm;&D+GbuTe<`{*HoI&5jw+i~1uf^f2r}$E}{(G$`X%nPsbmd9^3ll2oHaZM2Qv}Ri zq8q8cqDo7QH}d8z#fO6V%nIQr+IGO>(&O%YG!z-fe~sBkGOF zdyfx0{Y?GIOXn#6?*r}BN|-SR*RzZE z27d8ymK(g_PQXNsrV|8lpcKD=r657srVEFM`;p=w>(pmb$E#<1lgHwKV>NcTQw~5N z-Y@b=weoOjH=o-t&D%x?MWS_-5KJl$XE1-T*E>9hKoV;0X?m{v*O$pV7(BmT1m*r5 z{l4~jqteRyN~i}DvT584Lt2YmKp{?rvlqJUh7HbR%i+F={31YX3Gh;vzz6>J0)yuaXS6PdU2(k5|k8u5R7&EG{V+(WDc|+j&NQuw^bi*K?o4FB9N?* zEZL^w^D()XWAh?2`iQ;!W{9t^WBtBLQ$0*WnxvFv8EV#ED$b=m{)(y;5^SwX9bkqD zui3;b5||*WH4dYjrPT3#VFjQ3Tz$qGz-1!W&T-@!aYUD%u8#8vy_buf1rNmvA}(~M*q z1Gacigr`>%xQBp`npN}7e}J-^ue4XN{)gV~tC z0X5kzWJny^Ro@U3Z3-F|hZ{}FEUL-d@|I+;cdyWR&%7$`Ahg-kQdy|^UZJtM&)~p# zWg9>m-u9=tveJL&M|e8}S1?fE4KtVn0_mneRjKysOw(X~NBh?zn*W5s6!lrHmjaa!2yPx@JL2C7;#mKC@?ZTBnz+VL zq+>e~`pc}jgK(YBGR=kqfWr7U6^B$hbo~`Z1&j6<)8Tsh;Dl3!Yma@OMjuTjuGqkej_FGoL3x z3N`*!)mie(!fH%ph${Wcz%oBZ4^JI~Edo%;!KaiKwFxc$K1an30_?arfzzO^Cn9tn z0AwyegTGguE2x?Vb4(&7DvbO)bqP+J+`cu%0l4M%Hs8uQba=vAEeSr zeIsMsW=^RTZk2Ko`1uV&17rJP+-??8UgeBEK4geX;&k+brDX@{SK`AxHI#Drzf%$Kv?~`BV;)U^m7F zny1f1s|%XmFR6JehZvBZR6M3vh`vi0m`{>>7&~C*nNr77?YM_E3U|GL;+C}O-{c*N z!^+M3N^r3MC1&O;5q%GO085|K`vXPGU4--tRrxqw|3Ru_Y0%GK*-#o`zUf0xb>h&m zTe+=sWS`ybcig0XQxf0C^&TYJm^rih7@SL4m21;EB(Y>|zW(xU7jjTn+qbEQo^&JV zy1mvwOnce&_nDg+-k~i*PoTvvbi)I z66hDur)C36;4Vn>%MpgUS z)TaTSFEuXKg?3Co)e!QtU6ktO7-a>th}b$iwnev@#*5+oII(6bs^`V$hz*5=?}dWt z48|)u^hTDQe%UJ@MeTu$sh`YLC0L?KFc6a)HD{l_tzn719?G}E^mSoVy^J5`L9aHA8T&4ivKTv zr7Ox3U!u9Zw9NF=gc^=h8=!P+2~8RbnyjO_r=MMhWUOrN2Nz12K~o{Dz#!73w!Zlh#F+cC#BFjOM@|V);?alu1;~!u$Sp zU7!xY1f{S$e+1~v)IOs12R{T|e%2$5#6NN!CIAL|t5UuA?3Q8eavaZ9f51cX&9L%A zJJPCZ4$y3WvDf*f9v(i#bwg0%;=BkT1iT1WhE()4Od!UAi5S{$*Q+jhnIE&s^x!s9 z?fg`gw6N8k?WVNV^fxa#PEW(Gfei?h7j!6itZmulo^+o2pG?+zu6L7kq$J9&dESPg zycskGcZrQM#)W@&fdxd&c=pkXwd6xZ!7SZNhL`k6$yx3N>*2EM0ZWX17JdAdC5T!V zzc|G6i6SAtMo6;yD>X*+tHpLhPjY_gaeM}}b-Ga)g>y`O6gx+Ky=I6PEd!E-RB0&m zzAH)?#VpTXW7{JQ5E;529(t~+94ovgOPDlSazPdcW1O&0hH)#}gdUbMkdSm{((4MT z>Bx`X+WOnVo+UZeBR?*kZIJG&52%?bTmKpK-SA2O>_eas&J9D$wiqP(6ZIQTa7G(5 zVjS0645CiAhFd!ntd$tsRDiQVQwBOVK!bh#ZW_&%ZU0*X)K7$0GL5TVet8 z^fIsFn3k#j^N=0x;eW;vzutOR%Ni$Z$8R!~Q*t?8s(`uJZL$20i|C2vmYqNS-(DwW zsYKW~pUt=G-a3~RLNz#1#0tW)?jjMN_m2vUPk4w4mHnYwHDM;uB=fFuFPV8_n5{^p z$Qj#NtDA9tIr>D1zny%11SUOn-O~tC%S~gmaio<`ThWL8A%z1|A2;4U4t}A^cn-W z?F``PM~9PDQn>~cBK`-+pTrxpFGb-S7XJg^VMxYxZ3^nX&p7Q2_eUC6!5zFtb4O7{ zOH9{EeciJ_Q!3i4g|YQphSS=xIKF8XtX>)7Z>WANA~lVna|OXc^Mb*rlhZ_#TlReW z+^_sv_Gw9-;a5|Zi`e*=ciA)5f2r>2adv3NT$_d6f{{-nHaaVk7Gt0G9`>RuNC&t3 zz;hTTAxbzoKk+JuFiF6fWt5y44vSO#-tXPfoEVo$igbw_E;9{|t*(tEC6~Z+{Z)*^ zuqtWw$=butI~n> z;bjQifAi7|#wa=gvG44zas0@&XG&zQPuEcwA-k$uz+tW@LzdWvUBk&W}r zvUYAIO)6|{|2ZNjW??aYYqEbY$2NcNagIp)3Uxf{`V#^K-TJ-=siJ%PVfa?L-JumB z3<`eSYgS(nkXO|*w#|!D#wg?9^D7j!@J~JC!@nXqB|q}|WS>M=K_OtWRQtfqNQfVg z=}Uy#WJA92d_7TWJYIC{?_=hDPdS+gRR5NFoqSmgCnV^FY*^wTP!86s5dFrN>N8We zZ`m;*m!sq+{rX?23`mr{w+3fw(vf0vBzAGncApTWi~fA-InS3Hd}42jW#&3I-~!G| z{>csx_f9A14b!fWWO`WR7&WRSYU8Sm7@>S?$+{T@;L!dK3bgBK(y%Y0u1Gaw@X0|N z@!4H}6}2nxKG5I6UV?~l~}(~M~T7yLlvn<+a1ZJ`?R9{;n( zc(IZ&%r8!y-Hke?e@XCDM|UFHeO~YoDC4QuGH$zf208C?)vi9-dI^W2N`{?{fb3Km zIGBArjhEJCBs zspad#bp}32I2R@cQMeNRE=2Hp(7VwSN~x>AOSJXyaCc8{7s_?=>Yv=?052NRY>0mk zMe4Xx+vnoR8)K?$wibKT^{QAY;(A{cP59Dph!%e)<*wF(0~)TI^K#>-oR%pi@zcMA znRY5}1`U$2twJo}`B{YbcLp8t8 zbRzFlus`|U;8Ke%0LVV0WoIUIt&}iagJ__;{|#+~;U@aZQm6cw#}D7Dsgmb@knON} zyhkucNyS#*i2oP-maVr;+~n=uOzZ(y#+PdtT(P*|leEqLg>wK&K(@ce+MVD9eo)S4#RiCX5`}; z2q6d>a`VF@@})qms9*j5*$T_%m#>TlR0+HQg2eF?A?XYd!8_XeX=&IR;I#ss^jzyH zvx+Xe;*j>99?le0Rk;UHVLJ>)Y;XLcHtQfJWM9+X$|aSnDcKeH2EI~Q|Ei~N^y(LuBfG8T7m>|%BG~!?qFtXOD z!}p;Ws=)as_$+TRykcd>a4Vs!#9GedowW2EkYs)9i-$U7TwVl_5)nrT+EQg z^-L%_gT;&~JO}Q1$=`o5SE6?8T0P7f3l^%bfDnXPb}@sYtj2{~ZU$?z-jfPA5wh>@V{T zmY?A&?Qd5DL_VjQY#tKmg`a&4mt@@h)VQ~vEIHVA6Vw#p)P{QmfWdv)b3UKA7ohLn zYE?lv21#hp?;G%eM5=jU*@WG}Ay3Q!C2Wa{tLyM`REz}rdi`cgJ zUf_`agyNL|W90S5e1<IR@;0IdCu1LWi$!ct)MLBBp1Vl&r}@Bv}kkGi6Q zpwifUan29}(~52b+E zfakkJK2jo6PcMZe9ZE^0-iWJ{v%mjd2+y{SHz$!2qVs2GMgbFfg&pHa z2{1-gbUsudOxHE=H2d@_6pWtOBR*6LV=6LE`Cs+MVH+&4A;Dhny}hEZ=sDp3Z<1YiS6bXp3r2;^ ztAWe(2B|s!z9f1oU76g2&*>lC=Sk?knX_V><6}q8{DJMK2Fg>MF}r`0Wib;n_?AlZ zBaEvvJvNbq=&*?vqs3Lp$AHR%k`5w3I98{-mcSV&qiV5Lp?Ie%$SEhLSJv`akn4kt zi!)E4vl3Wx<5~;Y8tb!Da22vq?)X|pJX0{eVq|N2J7n|K3jQ7@pNf>Z%}NfP=N*Sg z)Oxjz7`4l~@{dkd(Sb!#26>74N2pGzU+j5>D4!oTjN7e+4gIsZKUdJ5`zs z00J=m+abAWlZZ5s4O!o<};}p z+?tf3luN?n&#k02L)`k;T&J83lh*k9m*WYn&ye+| z-}rEq_dW4YOOu~GYg+l-3&t_O@H%V+{RanpE-mrty!roCy38CvVtF^&v`=6-O#a9| ziNb^DPRIe-9VD$K9PgZo8}V0*E|W}mV?vS^PH=al*&oa1iuL)vNShJi$h0LuXL(yG zwL#e7%0lqz@f@S;0z2Nb`Pl-1yJKee-{&Gk_Ly91{%mr2FwKAMPvmI?Rpj-oL3&)+ z`USficex2-z^d|Ys}IaCHqp`K*tx?xG%<(u$ZK!|XAgGgi+?HF&s44rkrqVe{20&M z4p8{9vpH)to^Hr)#}7!$opp~tZzk_mB%C@_pNYc{gp-P(Upuyn4W5YW7cs3K|3@cOC3Aoszd_n{3yTX$b?vm zQ%M6OLah=TaCDQ^X97L6LVr%(kDw+$HlNxNzsiVF{orF9sl#iUb7|Su}C5g5A3xG40C<9fSG_pxo!9%XK+Ge(Jdmx z$9YZLQ92ECNTF%8i)wlVR=$4ICzuLJ(%Uf6;6nqEodin^lVA2RX1bmtnrqqRf9=cg zwae+$f>sNQ!4XP!3DM3p_6V!j*i|>?VjU$P+UC;^we414s65`Kn9zmXbpv(su{-zx z1N;K@z_P%1B?Gv?%^`6v6sdn1x_022SXm!<4Ttnz=&8eSa77oqqMa1?=*WEJ#Az7c z!pkzS%}kWZZF8Q>%`X`g_WUn+-Fhg)E$stbN|16cjA3|^2Sb>bLWf^@e&ljmVP=MI zAYxI}XJt+)4H=uK(%h0#NjUaCG|uteR;T;`7VlY^wqhRm0Cd-+RjNKXGDXAYd6squ z@tjL8;YEwXGTGU&O^BxwY{_a@Qp4=RT7Sl^cNCP_u{Z|z?MkcPcCExNm$~7g3Aq$x z?)5d5_=wCJQFUr?AoS&RvJX^)grT1kDn0&`ZKLqqedT3oAp>2ztMW@YK!>DWBPFya`kz*N| z(G}Ol(xXWYJBHl8j1cLj9f@|(y;lwYz;AlUs?Ir!dU#(XO^t>c5?~2v**4K;kpDK? zM{m!Rerav3pN@p}AOnSp_~z&&>mKF@4wMY{(f}?tybA5iMqmP3D+t`bZA(7k55QY1sM(XQ+aKsDpc(toh_5@(Bi?NmH{~*)IN2wT$k+ z?UKxV2}R{FZ*OBMT=lBmQo2P}GIKpoE4_*rCus(;7M=VS7W)YXSp?~+Os&Lv+|(){ zuZlRT+-zwjIkCw$FAoZ)t%phSLclLVwTTF7(oy z)k$*yTro?>TaLK@l_vRRHSPuhm7q_%bRHh9iRN>0TG1FXFD;DA+hrAo=(QvyEn*9(*UpzkQi;(VeKwFJP8<=NL5)R7=urf9lAm|`G&I^ManigQ**wjKwe7P z_Y%bcJdQR}R*vu}l7D-qEr{w>P*HLibNB`HafI1tf^Ru+xbFKC6V%NSrain>(7GY} zT7lpf5wc8)gYS(Mkfvp1I5E_9L)T3foRcOEY~9Yd_feE=nXBD zJFV((H$oe5d;U#`OVpl{?bWwn4y!3KD%tz~E%>9T78qX2#l=}Z;yDvL7c^NYI;lTF zS}18BBnTbUy=FZ#Hh>lH8L)4b-jCskYFvga(N*=DA!Ym>r=w)icukI_4YWI$bpC$+ z0B*$eL2V>6NK1*k94GET-5)q+z?=ozUtO8x zT(x54{yRqgb#KvI|Eb>9hwSijtJ}qY2|Cv8hGCNOVvHI*tO5Gw+(Vl+5FBv9^?!@_ zhzq6z`w1~|k0HAmv>nm<)=*3=XqrBuAzC8%_72Gs z`I#p`kOIWXqtHZzhdhZ+DHXgRc{cDaI08h@--}0qJGW?sj4&2e6k(DEiH!0cU^eYZ ztCOTi=1NNfi8~E#)N0`?Qqit=L&x4>8)Sp)86yTx)j!g|xgiWVM9V^MYMR@}bb1AR zfUBHs_~JaNZe#@k)VR*SV!BF8yxkgX#ZGoLx0(uwdh;JJqz;?Wwa8{3?T6#Hqu{Uc zxA7pckE}u z{PIl(r8P0oO8VHU>5_iwGrujrloyTQa;x8S$3PlY1zvkwb^ZiB_mZSlgaF!OeK~~B z>h?H!p$n`7Q+k=ON>#8fjNp9N&`YA5VI`?S1d?<`p1lB?6_L;8H|8NYY<;l%Q8cou zaJpMYBN?*0Vm3UfbLms+ADL6jgg*kOSk*k5eDHw5zsb?zQ%*cUW_WWGowjQIY)UoB ziw36e&S$E+PD@a4CF`ngK;ZunRs6Q z%)avL1@nPqEOuU@-1itWedhBYK3`zsJZeYih{gC`cq2y7tCFqGV#)Kh>*&)v;jAO^ zstlfYDH9=*m8JCqe7$t&j_qy8x_P!4-R1}j`!veJYiMQ-6yAdL^n9P@I&f=hJhbk^ z*%J{A`XiyyN!yVS`2ZFR9s_i)j?!X%20m9fabX`B{pGZ%Dzs&#W3k%!Fi&!h|I#{2 z7Du5D?esd_eiA*)c^L$!4)BP48Td++5I@k8QofJpyJ;$imcYB@vm0zcy{@k!-stA9 z`IDSG)dI{9NV{KB*LAMG*0eNK!YfZ|U!73Ff$gR+DpnlL3DD|G93$=)K>0ziwL54A z)pzzKh?QUPv;?ae8+0zs1r{e(chsxJdaydOsrd=>)HqCgTcWy3TSn+`JoPwPaa>Nr zgQD|oW}d>)w?sQjiH*6BK_+PGkNCTe;BkP!;9$6D%@-FUSkJt&OSF(aZ^Sl18j*{r zSv)BEijKNy?e9k<%EK-M+OLph@DAuH$+tky(wu{C3}Uv6BOeJVYf=bM**Z`L#3!MM ztnelYTo@EC_wBp@?h!90<-Wu@dXz8^r+x0t)BMnM<~m@+YY366m%Z#lrK&yA$Xl=- zSlm}PJZeHQT~GMI0N64nfpzj|KbkqoFeqLRRh4M9j17!&40@OKrHk7E>TK0;inqQq zct3VeDROlMpr>Gs?ej+ikS`Zmrfc^Qgz~njn&Cpli7Grpxa3-9~X12+zTjIdK#RqV6L|5dVwv;|B4<@kbFr2Z#WPvu~Xg!nhGFY@65KT*-;^ z_xRc~TB6X`x8D;#pI*7Os|jWYgh!wca-fe*No(cA)XZxXZYuL+K{_vcx5hE!Q^6;A z(UL_L@jrCsOE6_eMMPkhM#1xcj^(Xjcikcql97!!2Bu&aMH%+xa!i9xC!Tf`&>sH1 zRqOgDQdM4^AW%10e}D3$lkdxXig*zrOct74b!G+SH?Dt*7!dk!8Co{5B<{r)Pa$K0 z>h=Oh8m?_h`Xm9QKXNeY(x-zS{xtmeW+>(=bc*IJ-}Vn(`!n0ZA#HuD(8J1qY~4#n z`Po6l9x4_;VK`>wsxrOY_VpX)9x7?Ux#w@gbk|2N?Zil1Y;n0C$9Q|O{g>Z!UlSmm z9Ao~Yt;1pyM8mXh)7D{Bg7nCqi23kE4m(HvA%?9|(M<04yJ#vsjXgj?CP0pljs82GNi7<<5Oyx z&l{iJ-od}5OQmgM+APAG{nS3nAg!GFs;n%L8$%}=+dZ|3VXbCj@~Tr5gsp9BR9-9_@s-VUpczc4XEUP*#q`VwX+{RhzZL6_UxNJXJlsJ= zdDuJm*rZ>Cx{3exjytaRZuv&*^tQepi=Yy^5ua+$$>h7NIWa$-swdxJ5vh9YO@kj# z4C*IV0mmD^nPixm5YLmw*W?+j(NfEm6_8cb1>Xd&1DDUohWd|J^?AnPYoVe7b`hGa ztb9^qG|k+AHc>WAkkSPHdvVV6wne`%3QA%ZT|*^F=+2Q@ZNsjAE!!U^{^ov-fI~-8HS@WU$ zKg99v~DO=Q%zOdn+(Ci!Dfujs&^KQe#W?eF-)Dg zgzS2Q@&a6rx;+E&{s3iLBGfJo%LgglQ_wMcbEm=iFoHm&3k#DZSIaWIc{XXfbTa z&p~i#Ax+7qJxsyT&Go%xh!kh$khh*j<%RzcH)bzISbBg;ypozs3d^ha3 zqg?ah?lN4Y(}4_U9s_#Ra_#ixicm@Y>-3I%CYj5&lu9)?y1gXJL{g`-_QfoxXm70e ze`DqTV6g7+&@ZCx)}B(g1r8_BhiSy30!;YCu^*K7iQ^WY&<4oEcG(~NJ#jBob=0xf zpjB~?! zX#tFH*%$+_JD5P>Vf;B^oR}sJNc07PEJJxG0k@}~{=rH-glb3`+{S)e@)5aSHhXwT zON2W;bkq1G>f?jt-5v7iOCXiC6QRDZ$%qSiO&)nuxDq5wVgp|-CUdS!Jq{gxE;pzW>9$fGOzRysW47e!XaOXN){q8DXJXy^weCBhmr7OU`a?I-f} z0$SaoM*IsAMbl?B7}alYCpLO)az~%9;RUtiF?!W(MT;?T6mD7kNv$3mauVUD;!fK^ zr9@izZ*r((CyJ@bt(za1uJ7f*1VUmklS-GFa6}ITB3s`FdI~?g&mhMN++GOY?K6ZB zhm78t{>dZ#OyY`g7H{%aOF~qLDK+qkD&Oh(SA9~O>Ni|w!EV|r;p6wKtQNvN56lt< z41PbqAg-S}Be?KDc%7ry0(yjs93;2&)LVC@5)L`3l+0jOi|I>HEIExUczAQd|BMiz zUF6%19Ooojt8jkNJV!@63?25D6KrhZw5R&AABs3qo1x2b*C!2oA&ZzfX8r z`M0REAOoNU3cHxXE^M*(7SaE}$&)7MB=FQ$7%ABQq=F~S=V24DmwFNO{f*TA&9RVs z#2^yYjkq-wu>W!yRV~7 z2%HyhBMp3CHnRI=UtyYu=^-DdlHRZSkOu&}^N+gzTQUpFvRa<6F z#SieBM3TlwnH~=D+Q1NbnkF*veuRpWq4A zuy4*=V|^11nNQewrhQ>;A%;liEF=fh6i#RXv5F@*O4Fgi~)Oxy%~5;H#u znc8n!dt%n4_p}Uk6ldVvWb;3#AWOV_l)7oJNQGwuTY7W*wNsKll&25KB9R!Oh&N$V zz^JY;&$P5CpAUFXvZ~=oMW!|_Rr0B;=?q9P?Df$Rq|uEU2L9hvkdZT~5H*;_@}9wT zmcKyLw5=%5Ici5xa}s=T({Z;UD>v&g_Q%5hLf%GJZB+`+2gYPiy!B9!`K zpNs|+ePR$Kb+%XCQdESjXuRv#&jk*wd*P+V%sM~DXV8aBX-?^j?sOY&TId(;y5k?E zY8y|zCJp}P0=AwvFraGj@%r72&4fKPsc%M_4184(`=#gnH0Se9wmcu8e9oRdkE5~! zdQ9Gm7^;_1Hr`Qkc+49&IsETkn7t{fm1+f((gioZ$ ziFe*6%o9&0D~TeUOmwa-AiZqiAAF{kHAIMI5Tls!rLR5;2O>8a4+U7R!L|QJy%9f( zC@QoDxO+US@f2weYR}@vLnqHn@K-)SxZVk`o*oFF$vl0z!_%M14{NXsc3AEuST^O; zyLirJ6#Y=ipM$doW8*CY2DrDKFiJ(0;UWSM!Mo`Jvhh86zRNd!1tWbaY&f0=(;%fe z;l9zpU@@3_63MN1o5iyzW=T|2zdpcC$y_NRqeGlrex5=>tHO2Shj)GZRbhY&f2JhD zRwz%t263mKI^&tv{zP{RM&@*#FP@IlZ?QAV3`|?7lJWrk?i_w5YFkSs!04m^VG^_@ zYd8-lJd@LYdmGPU{vZ9YC9=AQjv9Nj0`xeB8n^WaN_&0^dpwq2d z&MaKhSryV5L;iVbXP3Uk0_LqijW& z`Ep(V419i~Q@gI+d^#{0EZrUdxR2PPo6YabMXtv8kx^O-YJrvnh-}7-|$F>_J&B@L-#} zt?gv0y4s2WT13xa=Q;k1GI6_wHMi>8Xo(-UReW=Y^P@akbjwW%Z2l2F!Homjie3{) zg=o2QA?zUu;cI<~NUC9Td$jt@>XKm^`^c)c1QU%Pw zzW}ne2~CtOfKoUe@g#(u+mm2xqFLTH6!OU|t$*m`?Ntm&B1Z*oQKqgNkrH91WcBWpKywp`Wvpb(MM;!?`Hy zn?H6P4U<#l2f&YStIvfC3Zltk{YTy49Y?Q+TBidq>v85xx^qHffJ1tu!pnl#gcg-U zO6lADl7HsUyp5K<;k^1IY*M(A>+1Dc1#=F$qO^(2)Ur`}g67gn-sg+h6UcEKyl34K&|0L* z@Ab*J-(a;@NHA*_z+m7wr;==GpMbWHmlVBX<^GqblPe>Q7RE0Dd(`_wv$gN zpDd5v+nXwI*#_FI!@D~B_fmO;IuafkuERiS@u;Bp#@wU{{Yqxb-;AHFX2uV zZ`L>=;$?Rxr$)L2D<66y&e9d+H05H{ywq(}l^i1j}W; zGA2bljrx}tjcNOZaR$=*TMFU~FFo(K-d+2c^jl&HLQ)xlQT)rOo3NFjaFxXm<2t|@ ze02hWv^Zp!;-keyko;MOp9GeU;I)`fu$APpdP#Mu#f=(&4p)4BP6h_r_FDTE8W7*Z zF)JgR6MEXGr1|i>L2eD6Og2|1%+aY5`JZF}QTR zU`01&mU=5=1l-e_+yfiBSkV84!l@v@R0{InC?EYe@u4&>?bB6%V~Y>qHHeq5T{r=QS8e!uuhL?! zW^fzQRYA{P1s(Rz?Vw6jULq$3C}H-W56nP@Pjr|$suzM7w`|-KkH`LdA|9q_yWa;C zs%?7&cI`$>JO+ndRRAG9!~62Ua8v9&T^~oWx!#rQ-5?ZIpSGK+#EoRf0Bez`2So(T zwTPEspWU*HLe}vAv*PYigA)cyQm_K9^k<1UO;z_hd|LhV&7 z$7U|XOjcFz^VGsCn-^%wB6HpmHr)WD2egX18}&;!2%8th)#oHQ32NKc6!^}B53V_x z>7J0Kl)+M*{c@!LU8i$8VhF%19X7~Pqs||aKy($vkSn|p@L%`^j~_edMp@Ts z`V$*w?~*Ecil|Zn*M7_Q(OmT|a1k@8Lb!{joTM{JcfAC+S)~{Vu}9=udrj8z3P-Y^ zP;vs7ek=LCG$Cr*!*RZdqd=U$66;FN93QBK7KX%Ck3bBi3P8{u&oUv1<{8=Fc0lL< zVfCpF2dkULXO;5Fw14vOa5(sJ*k1Q?_-u|z@*=nKmaKPh3Z~p!%prVJ`&t4S3AX$6 z`cI<|!hjLjI7Z{+13u>bcw(4_B6A+n8e{ty?H}FOij4lI;khXh6k9a%%bs=DBLm8R zH-OZ0?nl#DdhCey>`T2$ZFZi=u96r;LYm(CbAmV|pKToJn~ze>zAq>X`qu>K5IRe_4l@OG|?LceRDW|K5TSffB zd8YWxLt;K$HV=OBUo%C>G7=luOblIx4k+PF1p3+>+wWyj7qqXdRbz53!g}G!7bS%J zVr|BwB-Bp{_IqjOwFN`>e?VR>0bi929R}QzL($@B+9RX{i0~Ul+oIIAK^?^Jk$$f; z6OOTg&-hiC(M}3YK*5@)u*k7*t5QTTW#dUcZ^#$-KebiyRmlDt3S`%BJ$k6~GEJYt z?;MNumu*yD5KssN3C#_yazog#{69ADD#Ew}eg}xzqgtN}$2Xk~Z8O`5bL7|6vKOr; zH4#-jy*l;MliKue8Eq?_{LM<42S|okWC5jLKpp?RXQmhd$)h4$JcsUk$`BHnU=ko| zl|Lt8xC61|`_Q4tO)wZ*2DU_2IM`ls?xB=l1<71lamoK86vF8338hJ;Jhn*2#zA<$ z)@(ISgcj<_rYY0a>KRkU>Fr3pGwH{At z1y%Ium}Rg><#gGVg4-MeF3vw$>QHFtYsxcVF=*HaN0Q-mkeb>3%?#jOjl)M|^>j~0 z#~RKFv!VTlsHq}%M}Ekugdb#^HZkRP-i{m=PuJh|l{rTsX4x4~5D-9OI+2AD;q-x* zdYI7>F&n;c6;x=i5Em_isDsp1$i4rS#X<)hq3(yj-l^qs@Pb!~bw6}DhunrekK0b| zZo;HI9{+pbmOO}4fXma&9kZ}Vxz}eHT zu~eq+44|ZK{qbqVV^)WRxyXENXp(*(wfX^-ctjuzAKt;9VH7+R&wm7UKlbYfuwHTH zh@9rp1{pHDgO5Un!F350UC~zxBkyqjJ7xj!u$0p;HmTP#yWhW|5{U1nelTxjWN@hV zkbR-PO+9$aOs|H-P_}j2VQ|)W38wbqKj?Y-)4sLY%o{()=sY{q<|1_E(P2PpWo#g&+UGi@BF`PJGz;`^b%E{s9f3ej~tW*9gkg zMp1iH${rme;rV7}Y1d1ed9o!jFzH8Pkag2i*Aq`|I*TK*u55a>a)XPUZcu0Ef~`%E z=)zldG0MCIl@2Kki*3-B&*jrq2r@}ChJ!QrP+~j24kDwfI`W}&(V85faZ>vX;i7~{ zxXca9CiS9CRpQ9PapXh6QZ?}eyP>~(bk=^efSv+)B3OGa6=s2#%f4DSvsor_yl&ed zvD+unqYPRgUlIS^1Ggud9|ML;Dc8qe-NYKvvMLAC3hP z=)X1sJIvB@DkF~_xU*+&nD9o0#~T;t=noQU*GxZ*Bm($+EuN8Ps|Ds$WBQX+-?!CW zE>X2ou!-f`z~RD-@8g1gipllLE+y`CYBA7`4#PBb_tR-$7h-^A0}(5oW*U6;c4zAJ zitYL6i*ka5@~sOUf{fORgniE8Ci3ah_6yg==LlCPQT-E>juQ0u;jf&&vBs{_VSy)R z9#@lK!~bLUU=4}HSB_{bt_4zQ2_OQm7k>YYby;>FqPQZs`Zk{-Om(c+wqpy;E0e(< zSs3gtvKWykGQGTRnYx-ie8rbaKr-zdpVMKiWMO9J@&8m?G&d8%hotA2|4zA_%bcBg zKB5v5$Qhr$oHl+e{BB)m11Xzt^4R;0x+6jG>A<=0D4nJhVCj_30&@;&Kr9YI`i{AD zbWfQvy;@b>u`ZPspH4AzsLXIJF@!8-jOaCKoVlv9qKY4GD585{cV_~V<{f#~9^bF( zoTnZP$fh}MUJvm?KO0aveIqY1<1th zESGpSg&qJ?fa_xifEFr?O3f&JtEE@JF2c5elC(69yGa?onsPwPHvXD4MMd8Rd@E-! z6^{YEyplPm#PW&|%bPG*33Voqu)kkC3uk^!5p0#(vrvMnOH?QC#ETY~QhEE6Zg*T; z>>cM*E(doY`DFH+zpDX_Zn(YUID>Uk5yv0ToS;h?zKgL~Rg<-r>2H3uQe@|zueSuM z7${eJ3r!>!c@o7kRrCSLgjLh~Phu_Tr$%*>e~sS6MN+g;xyOz7(j$HQfe!O@QZKBW zR{A_>NXJ^QaeoT_d0@OdSMHDtU9gdm^_|t&`9w!saH%{*i|+e==HH2ZY#^jna8wz& zXJCQ};6QJ*I<0R;#GX#~W1mDXXkN!(eTz_P5qT8D={s{8i*(PTjzK|=Nv*nmV?bre3}7m~(g3rk5Oy?;SPvT+ z4NmsDJ6IlwDhKkXMpsp;6A5dnmMQ6SE};?+8AMoniyxC$rTA;`Xii;_{EeEX0U*dt_(F=^$mT#5k5-@sy-ILhvO| z1iE_)rrAOd1m4OHE(+dC*|6NvbH-yLU@2~C@YuNMZL)bmj|g!cW;SAITh}};)*xiF zIk#`GHMk^cn@!aP_p(bb04SlBIYV_---XV_^#$4HP9={DT7Gxf1n*-Qw!x8{Y29l2 z=W{YGuxw_H{al(~G0T4eQkvX?x(){)ceI*OU0(yQmHNptGGCJ8(GEkbA*%s*xLryS z&V0=Bap$T3kNujHk1ic;Y-P~jvx*GiRN3N)zZsb$xZX3KHEp~=?qpL;mnz*p5Kkw% z6(c1rff|Td-JCBhxcYwWEa$APZ2`ufn|HK>#lYsLuC5wK<_kc}Wr{>dkm8Yaj0}7a zy9^a{vaA!n`lRK)YU#v8l$DzD>)Z56n-B9VM=s%E>tttrz~m-Dw#8`~2?C!G_WG(i z<-bf0lOm?+)ZX~-LXoHs91G_0d!(n;*YinO`Rw}gllM~Bxi@pk!8;cDyKf;hvnsS;9WaF5nqP&N)`+mc)MpX%Ne*1~u z?~PAWDS(ZSn!Qcu1NNwP4XQ@-csT8@-8ZbUaP?v_J}YjQyGt1m*F^g>9SEcUu~IgrUtt zkDX2zG6=+VZp*J3i7?KS6-N69EH-uVH3roGHBxwZQ=bY%ZXb7sIl+cb)+mT0w_u_W zEnxrpuxY;QSWYMDa79$mFonmC5m|=bfHbc4tg7f<62&8DAVu$i1v0%zw8s#=o-p1q zk4aK=XEdB4Pd++ks+@D6;4ux32tr0yt_ICY3ehxwda+qeW0i3bI|#B!zK=sIj&oux z{_Cr{;xn>CYkMuHX030!k2hcc9sXL1(yZ!bzY~Kc2@r1&ofA1+X~k(AW;}L>gipD_ z2NmEnylC9*UL4nI2Sbp#+ssIw!em({u+L7?lDMS@qdL#D)Kv=2AsN`@0M6}f@Z?gj z_=DR4Pg<0J{8{0z1o;7^$}+M{gN>e0*&s~hJR+q> znG-xwJg^McaVvz_zH)AqK-xGf`i+I~I1@tDf~N`_cKy~{;5K&)$cE)T;Y=74o0}HX2oNIa&67gfbJ*u0p4D>6sdaXQQ`vGZha{b70E46u zmHLX1CUa`khmXEEp$~3BE59R>rr_@w)Q|+a4G!@NMM@w?2ykyx=T;x>1 zjH^&@uSc^*y#*61Qj+I@isFM{=HGk5k`3!8ST-484q=$O#=*r{wGePMjH+wb>_EgrZHr-HtWaIqVOQwm1;lPd@dk~Qmy zvLQ!mk{mUc*%K1PFh@%#JB7eMUVQd0hnRl(DvBYC6}_a-hpgp#Vwaa;L27F{wWd{2 zb@EdZ&dL0`frcexNhi0UAgqzXfFtyknjxF~@0s)iz;!*~0+!%f{dz;}Bx-d*>q2Z|rVQr1GxgfRPlg4Z#=!WOWE0?a9>gjOdkiOX_Ig#_R&J{VGt#K)@a zokmkHqRl)Jsp{)6ib*TbQ#B@HMdsX86HM54*Z>LRt`KNasrJt!03f+`+k}Kt*~xLr z#bD+C`kvJMZ_HWj_Hk0$zr>AI zF$4hp3chu98Dg`z=@lvPHa-}IN(J2>3n^E`(jO#PZ;nTp{#iA;t>aGAa!wSwl0={C zgw(}X8{YL2PfpSmxPh-XdBAn3c_D>~@y678aS`7HA_2k%Z7Vxa@8unej5E!b)r3^O zmyES zXO>k?*NfYp%5VCY%NWL-mfo_BZoeSNlNdGS`+s2J`|d$xo9(oNzgt=$&jJBTAxW$UX(3lx+BWs7yV7{-mS0vbm#V)3OPLZnQ6g~B(k(dj zyX%RSfaZuJm(gTCs2nafhRj?ZiyHYspXUug1B}RQ z&Z=%Zs+9o5dF~n8X!#sBf>6u`=C1rcr7*_wZvB^^p)%4mN)o|6XFs2;CF+SA#AGKC zk|WB&qHU2no1;iRYU7bMp|9N7Zr1;J%ZHRS#iPj7r5^szcr z)+a*EDot^v_~a^Ho{_NL(A{aD(HxF&b+KeUluPUUmYX3r)r3w^iE z&`1sEHV#lp)PSTVTJU!wj=A3T>jo}q->2s)wT@@ww>lekZd$=~^DTZ06!W7AXO^Vx z7@4Aw01EsS$F3h=Di_KzE2YLsZ!H;F`bg6he+TOjS z7e|idQJto}$?GQMkRiJ@ljVwiADZRnXMkqSeMISxCo-qe>?b)rz~mP<;B0xmc^ZQ zL=D~2K8 zD)Z(m7=)IT&HOU0q?@;d;Xvj;?C`Ei=gcw zR#-$06}AO6y>Ao>fQZ0Bc^TrNlX87@%~Yk7du&$bCskG=$VtRDn+=&H#D`kNeorl6 zbVO2!ymp=3N^Z%}qHd@k;5CCjZtEsau^`YO*uz3p2B16fue&GdY}dF7pkikIKE#!)~S8Hcs$Bwpf} zk{;nzZb!^VC$H}7?$oz|8a>h0k-ig1iJI&RdNN46G&)0nWyA{K^6n)+I#RERl*8Y{ zqThk08S_N+c8}W#r>3&GUAc%zm~z9YZC8G%h5)!0&F1WjzhsAJMMSu>uq!+w1nQLc%N zJr5Tj@T|DBqI8cn>oG^bKi+5q+kaoP@3nAn$TH$H5_+qgB&pCs{j-`c5q6(=rIIeN z>bMo{^krog8x8kJIPrK9^TulyQBHLUx=Fj|mMFt*Q<}nCVplFlQIuVz{O5v8jGem= zuJ6I!#wlw(O1gn-N0h~Mc9Fety=;Ym!$SA!eE#lT^N^>)uxfm}x^;nt?eKne0Pu6e zXUd0qCO}_=+o)dz`bB6`;~{>(=cbn2!Png};O__Cs$5C~TI*-~JF1Qs62>#Y1FHvi zj^o_~3(O;$y<&DSxh>>&>Q?!}J4CEeH~j#%Z|&#Ltc_~$dgi?KC<0z-$*}q4G^;0& zCN(&N^RfZNq%pU~jq$~Be7#LH?_8#&{MlN$Y;n$L;wQH9y7K2t^1c@<5acwq1lUmk z!7*dptHfmmNTBE=uINh=y$KO0B@&T#Fp#Ux4S_%g>u3xRa7KiJJ@Le=B7fv=05R0w z&xL|o#3$X?c@a+JR}c4yu;!gyJg>!ri0rZ&%RP)dRv9fN{R#H?lsJ zXJBRka`XOPD3@V;xW~xh6awYTJ_jOxK#Rp`44(bE!@M76khLw8Eg)m0L}t&^}cgj>vm7wOkZJID}ic(^zj#;vEp);KhQ(N?lZ6xyB4O zuU?beG-TGT9*l}cbPPR{3$fsYDG8x8?|j4^S=$1e9AI+%Lomk_BD!j}P09>nGH0o` zBeo;>il77)^kI9gUZf4?XfhYhMi+?taKSegks(w0uO5fV32Mz2Eks5q4p+G`fRX++ zZORlmln6?fWtolyaHpY$N9r_&YtJZ7&KSREI=3wd><9vZfx2d3N7$(zh$v<#l^(f# zJa~?(wFuUbqV7UC0JmN@nfzeYJu$sY7w@wQ^?(6$h$5if3s-sz>`6pj;|bflX&-=W zX=WWD5wBr<-4?3NZ*K$V?r!ore(ANM_r93oQIkUFtjMcXSA9cS#rkd0v6^)S*h7}6Na z=)^`hO88G-I*PGmvIzzB!L&u@&jRIzDDs*4Ol$3b0cTHOByc|yo&t9!q2mi zo||^e9HzZ9|6^`*E!UXGQIf;Yu5zo3Z<$8 z>+({k63&NH)eeUu`Tjh}ce`VOPnG`#1?KsHh=;tSo7$COZH^+D79hJo_BO=XT@h0T zn1;taQ$GF0V2Yuv?xn2f{KlnGb00RYJ8COYR=t||DY<*Rr3=2}>I2fZVoy)Mmq@Rs z^0@D{*vr+fxnmb>D2_~!6~JA~BtMX=JF{`<$^cYUqCH>~We~6n{ycnQh2wL>v!5#B z7MAJQWHc_&fIa#vulkVNMfI6~p5~TgzVq%Ei5oz%= z3Hp2QxTR(zhu)dL##K4RddJF1NBX1)Ev`o{7sNaTiqKlA{UE-=LUgbP|IPwWtljf_ z7hX19e3YD7HC%oHY4eaD%QwboTOt%;^LU572(CGTV0*s9@Dg<%H{93WxTF6 z@;i};Y^iE-q}!q54fRtC#U6rFh;@d#C13oSPnEOAA|-4mXc9hr{u%QS0Fixxa~Pa- zmwExmnf?RFh>K=4E0WvBwuo8y5$1P+@f#6z$7bvKk$muY(jc(RYhiwNAZvPRA+}2d ze=9M3^Gd}?GR`Lj4?>VXBw7z#cfAHm2=w7xcv#ZE$hygEsWb@}F88(C-s?q&1VP&s z?Up6GalXq~*6H0FOIv*QY(~*wrDvgXi6OrziH9wvH6jZ*7joAEYT-6hA>z+mlN1@HwZ^9#Ea+FXzXbw9^EFLG zqS4@dsT3W*Gm0yx=1eQjX$S}UY9k5a-3HYJM5KTj;9mHimk=y-%AImnEb8I@xkU57 z&K5wVAtc|!z3v^u^eZqM7_)++a{X6La31FxvjEs0U0}r{>IR^H0<&4#L&!zer>~*X zx3bx1Q=||?6!Q9D-M;^z{?FO2{J8!)z{jh@;`SZYvNxkuYY4b>(~sYm?s3w)(AXB|IzU+4YUTo)j_x9;zkS+nCvoTEFWGHqGy2QH_uATBT9(kg1>!5bpmtu5YXwEo zS+%Q9jn$STKp@s)EkfO05jM;0fLTbb>LR9d|JPXjW0#b`BerLEeHH{!;YfSUDGqMj z+XoAz1j>>_a(fqpuF*Q$Ua)_akdjax)hvP{ym<{t-8!Hn2x@B=bGrvQ@!e3pyR371}0v$ zQML@}?oCuEHwSIB3IDEYI)Mc@sOsj=^g=D$q(_OOH@VP9QH=wqYxm=jV@+`-BgwYj zCrCVtolT&U&*g}E^HoPpcIcJFx;DL>Ma?4K2xy=!17D>*rbLMfHiL>+AyzWGKD$)9UTJ- zN+J^Dch3fuzc-X~=@*HE;7sI9Uc?1!zWI92`rfjDDSQ3`8v%p3O~o&9M<}vh5ic?SIW=X=XtJ)(j6clDQwYlLPAm5mLToWaYTq#k!7;vh zp!xMwx>eJRZR#SjCm#6C+`utbLlF)$6o7NU+)8I8aP!B*aauRjU5jM->Q)8n0R;-f zv*5Rw0)V)W`#{0U_2%;YjC+ezhbN>5Z&2gEQ_cxiL3H^zsdOe9!7E4~VOz^J_5Dy#li##ozp0ADxJnQ?zV)bWYUI>;_a~N7*u*0bc3`Kg<6ZR* zk{#`%$3Ll>&yl<-vIH|JXNf_6GX|N*LhS@c7$?I6!fD6!JGJUxPgc#oW`!NQh0ctN zGTO!m!_3g#qXBB;c#(fVnvSDLGteFaoaQN9b;NpcpL!D3Vi-1UXR46gQRdA*M5b;W zKVR9FQJkBq%DxQ-Rmu#KCR;=t8(1iGsck~exmHnhxUR&wl?Ifnb6upQu6w^E9^Ph6 zcv76jU$CNCQ|C?22T?0ogxJDH9rwkx;}C5+>8b2SGKngT#|-5PkM&#w4ga=*3i_$K zRJS13FWX9w*(s_3Z$bt$SOmbB;(u0015szQHo^vCIZr^YFMs86J1UO?@{LQ}BCa!T z5C&eswTiMwFH4E{s4QOw#FlrW+2v^j94^F|55|TjGxPy#6Vc|Zz0FB>xbh#J{+fXQ3N_H=N^D^-wHsgy#d}rvKq;bO%GV#as? z%`I_C@aBX_iT5d3$54Jtmou6|>297$wK-nEJ6%0-p$lOO{8R&052ZY)T3o`Kjmy=| zw51ZPo()sO(HNLru{2G_kl^Tm-?bBGYM3k%o1ob>5q6pE6gQh~z3wWxGeI zXy~`|TrHLaHrjYZF@cl1VT$OkO>vukVu=t+PAFTv4_MsFVTp6YMXseco zmkZ6<>()++C5?h+?$mYR(U?Es;~!pqT5w6gIaJE=F$H_#2ddHB(gYie%pwEmx_zEe z*Kl2WGA|kq)V)n9piOTVY7&fSsPzm)Jtd}YkL2T80D%f}-SfvXYH z_C^N}YY=hF&{I(}LPXpH)ynNqDnr_HIcHgI$EQR1c#>UYpLJ6Uh)eb6DH=8Bhzz-C zkWhQ_$GZ!N`UHH;p3IQZ`0u=*ZY}vyWJ%W)G0ZlCL1&>;PL9<~er|WOCtYaW57#pr zAxb40U?71_nF4Y+<_*~?^^jK1^`&8L3wPGMU@)PP{mzjkN8C;wOrSom63bi`UHnau zvBituKVzw}qHSqT*oAm3xK!?5cPdkB6^RMJaeqozyU8yKbh5|^r=xR;%!8BwX;R5p z_!Jrit6u0-Latt{%mV}y_sn~p+SqekS>_H|==@$14^(D{p@4K2e?mY}wyU73V*0tu z179F!hZGhsR$4?A-T@pG@j@P{^Vav)luyRKQ5I_j9rHLiZ&3R=0a5m)u!ce}ddAq- z1~uZ0idiXd$Iu$pLN9apJ|c~tQL-)}y6sE+Da~b`uuW)8N<#o5+OcKH^1HP!h!TdU z&SXWmC2euEu1|UrV()yL@BdZO%mhDD4Vs>>{x+ zb;4I;&czB3p12#Hxq({WW|%QSm`q0xYPL~V|3^=9H}kCfyyveQ;fSb{?B&}?S_v2t!F9WTllKNYMHX-(FRBH z5TmbO#z_#WMaOIk{O4d4UaMzZE}JEPffKpDDHiERtNhiJ^px*$ak1-lC#+*D0bDQg+#-zZX$z;vS3Gr7Pry17hOxwkdDN%@Hd~ST1AQpzi53Pmc z`D~4UiF3NwGNQo5r|*;))VlP=>sKkbwAH&b>H>veIR=;4BP0d=P6$X!Ph^w=QjpMs z!Z>{GXVQ$sJFCtX>wII9p7wx4Ao1#Gs(Y1tZ)&~hP1gT*4OZ3U=?jcF?>Y;`#_l0Z zDBqz2>1z$98|&hY>j#s<)KceP?-o@szCy%fE@>w|8*{iSC#sbi^u=F(VKpVmi$Rmn z_>M!;dqqOHVpg}HkO}E;40#!+R(O&|Mi((?c9^|CE_?SU@zB%Ig)~Bh?2H~OwCxLw zt8$XNL~j*(i5CaFw%}NxAvf3ay=rbt-`MD`@8rkyB&f> z{UycrD}f-Rv%--W#BIjJH?sIb+!LV1EcBeM{`M>6Gf`ZM)J?P$)k=CsfKT4e5-!F} z_gmOdHp1gH_{~w$UhbK5|3C!}P6hcVW>QS)7)_vOyh4NKwlUW;yp&BsE0-AfBz4<< z6O$@A1xhuuNUZ7+R@1wVS$F)q{k(eBQ~07mDNpQoYTfrgN_)e#zqL+u)ZKctx)i&O zL2h@2^#LU`OX+5RaoD*uY{2-;m9;g5r|yQMNW?+k`VE~&24lEqCx6#P6;7W^Sn2df zoi#BJuAK43isWmVqH+e15v7sw7zR}{7AELZ!RH6a4RNF!C&fdoiO6Eh%X%sw)?2%^ zRTtJJT7|7T!@?$mBYQ+9<~pcDR}%MRzR1?G&w2`3;|`d1SKDnF7);?%GVT>7=oR~C zQsc3Z$*YH2oT+X!f_`*=F01nf(%!qsK!$Ih3PrqL8CAq#-3n7m)Vh%>HOdI88fF*B zir<`Vm>1utC;u{ob<_ z@6>T~ec*z8L+ElsdHEfnckaEPnTXEF>aHvSyN)4lm2P^78kBonI340?8#VCMci}=K zp^0iG@4*KujAGlDn+1xsCM}KUEWN8TRO~Wl_j0;#|A9r&_0XoExB&s-yngG<9cfw$ zvPUAyCD~X|zB|HP{Q@+S?gtT3o9WFd1WF*{(bzH*r)!IWfiTK}1mv^iK9ADj7`<{w z!!(qEBO@zcpXw0kmbDPPNmAK!;tL`b!UuqgTQ7dB1K8k{dSUpxn@T}^j#H`sMBSF- zBGlg)DoZ}&)>LEZWQJww+PTD`caoSPU*<>B`{Px~%$7>fZf%VfSL9-1_B|J`io+L5 zIwPTB$MfKlPiVUqN!E^d;0=#eC$hj8+R}rom+-`C(wW)AO!jJ-Ab!-|IkaB%&(dXW zUNGcXd$%J&nE&|ap^y!JP&MJv{KMFY2nA#(NYivSD2)58SHn~YH2iEfERnI9do@3G zvgAy&6>M5U-Bc`5^bGeZ3UjY{$yAL8dHox~VCP^isv@lI3Nyv8fbh*}wX}|}h9PxZ8TyR7`9@9ld$5!@i9=hUN<7 zQnZ|EWn0?@&DU(&W9$YkmuR-9$@8XSOjA#if+Lcvf{O1xA^@!7oFZ>p!LhXhc|zb2 zO1QXgyOh~ydoZt^IJOMh@JSoAHG0%xBJY)iX7eH~1YZzEku2oN6O2?%j~rl9sUEjh zePNtG?w#Y$ie`Gd5b~X<+x4MUKFZDKkb+x~uKYXPtH?gKNk?2@u9<;X&s?O=S=BQY z-};ee$I9z&;a^tth!?vF_9wP~MZ+0Vl@TpBTv~_y(YgCE$>^@|Wty<*>Tb@}?bEfTY97)xwF#Yu^eNS$MWWqbF_YkW zn!#YYkb82ue8;^et)OpFQJEhE=-Rm&TgJd3O$d9*JRFlNwN+v(&bd;82Q?Y!#Uz`! zW1lKc_Qlc*lk76?W6uR0&XQ&rM($3fdFDa|FsU-Ke76;SqhBb5*XT<)+C#D!l?~BP z4xqQSvWmZNH5~Vi+EX3s**Zd7P$K?oB;+suThsdaP7b6mD>E;NH*#ysmJz zTbmG1ExI%zMQc>ow0X`;z`v4&yc(RX3WX@8!Fnjb@t@gYM%F*w409bUHEasbh%NKP zN)a@|m}qUo<4>*ieui&$ZL4?Q_Rqbp_r^HnL#90LF~ov%b4(zQdG-DIl7_rBTs#{B zSl7oo)#&?`ubplT^JHtf&Ue`Io*U0|8V*s!S7@@+QnZ6zU`*WXa1=b(tLFT$NDFq8{(+Z9=Ct^tcWR(Q)I@ zfAjhOskjrcI!y)=6N+W)$?<980)#?|0)qxG)6}cyJ^gzN2j5BLGhA#T!55sc&kbm9 z<-n&(W`Ab4^UP>IcTb{o0H&pJ@q0%aK3m8*PfLu&+*?%)E2<+>yOb=1kJ@u4EQxDg z+<$Ctxzjb{ZUFZP0IGgJbRf-FWgqLL&(n~7Rned%*_`3Puo|9BpZM4UG?GxHb-b|T zjs0zBphoCa)Gayiwy-_BDnH;GBu-hbAkSINhXyBRLQOq1#1k*LfZGc;txiN>%2&Mp z-fyw3b3s{fOJ(JWedpu+`1#_A@RTU62G`*$G`nxXD<0)za5wjw#Ud=|)e&*LK3}>@ z^FmqJD0x%$qTWq>s7LRo{c>1@P_`V^C#%9~Kq+)?-FApb8t+S|@F8XKsymz@vYqIk zJDX;ktTc`31VM2R^{QC(f)Ru6Z|X)&Q+@1xj6TQF>v0`QPC4DJ3XTn}V3X~g*F~a= z)XBwQPFx9HV?_^PX)lrzeFDoH9yxw_1kYi`3ZQ%hgQ89dSi4YU1|EEd=cX9 zZ0DZ7_!d(%&iqpIwSn|5O1c!!#21JDIT(O2)L2sQx;UPa#QOW{@-7vDwf* z7I2_zLgny}LDpcmlyM>XqAl@;(gO+x`PDihD-~Q^nVp!b@2-G~*L{N{s&Daig&UUX zu*jU~po`?V!xXJv2XJ=yaE4@F;OX!TxLxMv^nmN6PRVhh<&xxbZ$FM%uS1lC%7{jP z`uReI{~M?u9|v1!`v$vtcSQ-g64yOYR8@n(PU*rasc!aooTIxew7u5^FZvfUHXTMU zPIR`mY%8n`?lA59l2-Rk<2}7M7T|EtJuL*3Bk^+roUlX-I_e&cwIT2EOaaZ{GbQ?B zI$4~}ohgM_|9wyHp4Ho`4@uwOM+UPQ%19%-Y#R~VrVeB7w;2RLFN||6*X{qwSWn**ZDQU4) z4UrP+9g$kQjx~mthM>huC8oiy$ephyi!v~R5(fe?DL(?&dXQ&E=%4%?+;Tp)@j8WG zP`ky&!zxYmAlA{eJxBUf3EUonRpTsr7l@vw`=4cmOXSI#--TK@o|22nsBl`*k}y)C z5D3w@^f8(_gZozUTc%#>Gf|)ij3fYmPpr+eBk2BWCb*p>$23O7eMd z*X_)zVcHw=v3zw64{O)rWJ;@b@7|LnvtxK;nAc0vdM_9oJY28L=D3(AlK_gP>boHq zC4TWW5>(@?>uD3{Z(as2--NUw$g5pqaqWR+imMjyF={!l6z zyHnQct$(wttp|nFg8AAwc$z;cb%a)2oHU9NRima8u-s6Hjqz-g`gKj0-A?K39S=hI$GNt z!FKiUuL53B?@iDNC|)EkdaNWO5lmH+bWqj4bphPR6q88Vf`FW7`=gPv3csMi$8B>| z8tvfP^%G2JqH5~O{|($G*UkU3JR62teos5mdED&?q{9`~0l6T>o2cAvLh}A^bI`wbwVH%fOT!r&!&mm`2Q%}X{{EvW*!;E`D>+)+G7eBj1)bfs z4lL4TO=2LP&rf7nL_R^*8N4x*5K$JfkGuwv^s1>!3{lYujUUm>2IhWbL)YJ;bf8zv zicgFm$sTpu>fX?_SY(fIoaAhwKf4I4Qhe$Zmq*D^pnS5PF_ZGfF6W|{Md|C|lQc;$ z*F}{i3n0Mo63-V|^tw{$Mk0b9+d-mlbap?9Je{z6Ja4NnNw{yf3!&^GODZAoN6 z@{ez(P`X9F40H&Y+|Hq4GYiPt<91}o{bjk?QbaJXo0{gM9XGE^S?OQW8W%XvP}{8!EJ$?FlPJb~h|*y)_{0 zG>}x-JvDd?hmm49Qfb+vTl>4QL)x{;D z>2YDFM~ym>(IwyvIm4Ss>VhpO7=rA+=g#8GZ#8Ld2~woaP3nVjq?xU&b*Vrg?T3Dz zZbucdXK7l}lGKnc2h7N0&lnyMY^T)*zBFP4#||`CP7}9)9PB|kU zy9WX1!u<|q#jwm!dT_c=0X>Fkrs;?w#-{-|&-{2aeIf=7!i0Zn!w@ns|AWRVwlAjvEZ~L=v!P^CtbW0Ie>Mw)%?Ylu zKqyRG!8=#rk7IoH*F6}xW$W)Aey>Nck%#ml1EWL*C}aHQWY}{#(<6K?5DJpC@=Y475w~l}-+3`o|sM;2}Fs{2AowB>x3PKIktI|lEk3jtb!H9xm3X&Rk zt<6~Pt0nD$h?lz$UNW+jv*jN(=c~*&EjXa%o$x4$5mBHGw3xUuW#p81xE(J82e;id zN_hu!Vrqb%>C}8++kifHT3hyLX5hw>O;Ke2akk|``g|Oi6q-R5ZK%bjs41$?%{%99 zMhV|Q75)8K=hb>am@VVF-$JgHP+Nsj84L8}ne>heimM12L^8yZ5=p0Cukxat%d2RL zw=03EvDkqg6>_BSZU{7wjQtZJSpZM6cHei$pp$?GLJb>64fof2N?w?b!rmL7%qc`2 zsaLmoR3|23=o+a%wfDOcniz1x^#>VqK-%a}4An~3d;3yT2_c?i*6-w5*?`f2F5^ui z(~JWJ$R`Ju9U9YMBc%MoEQ_3j}*&jz{Wp7FMDb?`~xWtcL@-340 zenHVn8%gl|>N=Y3&Q!B6|4)T?+m!&Hx;E8fdjsvdJWEcBQO=-3ULQ{q>zK4|vUbYI z8+5LSlq=Z{GYZ@1&n5@82C|CHejFXFP&FC=#fphWr6$)(9cMl>+-}gvocUiDsF2nM zC7nj-LDfI~L^nv;DT&cj6Us8+6iuYm?tlm?DONt-fxxhh)eF~xqP<`M>QM(kegn=I z=?oY3NwT)by;CYt{iT->QmJu`-viQ~SpIHl5Rh-{Rzor-=^pW;LbQHSuQV4fu~T=E zspMlW7X7J`AlG8aEUkShC9)Rj$zdvZ7Pdygf){@A9|2Y&1zWO#2lyv9&iD!nMoUt* z0~xnEl;GrK78?V^*-c^1B=nxRbh^B|J^YW){h3t#o9AL4;-IOaG3Vei#vPuq$>AR# z!d>z2WG|_2rvgi5hYn_luhp!QCaqhbc6e#+f6MXoeOU~$lkAnv7Q}tqV!Kmx4;P@x z8uD}6uGAU%FACd9Fdq(vls`BqhAF-bxnWgbymIkpCTNf5#rF%o5-)hGHTYd~swOe( z-(jMrt|LVPG>p2f5bvw5e5y12(Mg32dtBPH+jm$jqS8Z-i<~iyWW>O#8}t*goP}CQ zH27cO`0#8ig0-E3XL`A>dn;ej+S0>DKrSB>*;6hwCz_zR9=r`ZiAtieXNL_(Hx0+B zvTG?M21{pIa|(<-jm)B}eD2|vx&&V4GEBXUk%`lL+DN9Y@N?e6)DBEZ+sJQa{p|kO zJohrTeI^D94rfa|wU?sEcCWuw>(GWiQRxfFyK;QVoCY}D>O2dL_#Yi`mW$Hko)Zmq z;t}N}LEr=YY}R$2B`L~@QB^Uv$cnAQo3M?FA<>OqyY>{Nu~926b0tVVzEUAW3Q#ep z57v+YkaA4xO;bxflS_N(6+v;FCzP4G2b}r%oo_eu&?#z+Gtrm_c^w;0L9l#8uH8;K z(eq!YsIZflILOvtFJuubz%bcvD=0rfa9~y%V^+@IDv7m@W(659$UbU63OK}YHvkWb zY(5DU-zmYoJSBwB4DutsYpQuRqojGVER8{FA|6_P0E?nxYw3|#r{7q)%Ta1$V8zp~ z&w_46u9(_qg{>CgLoOd^=;}mK)*7GpKNwE|AiNS-aUfL)1bs<(QUpb?*0-cNJgF%+ zm;qwXLkA_3K6k_?=fj^kRG{{6^b(^WijEcS)oc~;o<3!y7Z7OZn-@6)Qq+HZsdQ?i z81Te1HHJiRqV|H+re}t7@gJq5PJdQBStM7{DwXprU*U>f{zkDDBXY(koH=$fwv(Cv9N$*Ks@V7bf1X@G>O4i ztvtC}WjU$lKlNLb91l24+?35Au5^|Vhc2hufMq2A%VX$x%R_94^MBunLVi#;oB&qzYM8T{@()zkgUF-jR0RRAD!l|T+|3>^R&bc(})3EL?KtcsXSitz)m&P!pg>%x_&(zPCUbf+F!S!8RM(MhD4zbr|D$9^_RlViQ+ z&Vw%M+;yy4xj4Q1f!srU&r*~j9r>%l$9TzBT`I@Of|6hE`M;5n=j<%W>Ml>7=_l?o z=*VV`|L#wO=Ut^$6Jn!;X6G`Y@K^?(ywM4mBQE9cWorfxSWX+TPqi=KRCD z`UEIzmsMJ2@xsGP!%LS5D^ii-F!GNUu)aEJ1R(o8t`%f$SJ1ZR?_^(+k-Su~$p&y| zV1P^v-|7TFc*S!9MdpxwC-t{_l(alwv85X6llZw|l~N=Ldz`ra8g$=q*DJyI7O`w!xpQ`|PJm5GU+}pWC34s* z+i)_aF2tB1*X{?eVaNp6D&eJ2Z5!g(Al6j5K#B_iG07V`$ z|FRjdk7$W}C?yhMLJAt%Tq|q!6%V3=dlnY~-|ip45cD9JH+uV+Iq_SK&I^=V01Iq- z`fHkr6Hbnsolw4#EZ8*0NEJRsNq@cu0HCY;Ye8PzB=&#rN05M}{Qqpt|3pA_JK6uq z{=Y^~HSPTc>VnaG|2>PD4E|1x2*an+k5CT3KfdI&f`!sZV$&juA~k|525rDuLeJyf zA)u4(=TxH;V=~JZg9k z!?}zij;|C;KAGNcTBKOM3wSDB+w*W!wwYm-(@(=ccFa`R2p&h~27((S!70{2gN*W1 zvgGkdI8`){8ClurcCy!B0zlQT16Fv3vD8YzESSG=MJ@&5QN`f*Z{^h7_5*Y}`UP4X zfb!dL+4AFIt1XkP+6NdQyjC(u7@G+C|NWEyVxay2_le)%p;@I@fCjYA`diMvOG0AH z#R`Rh%DVCFo~w@R88Aw~FoyQ|8(xswvud=)gb{tHh5LZt?6=u4xI)@?ALkMzk2eOl zS}&jMZIXP6X|U5BH?m%>6+b&mpEa3lV{{NLeWEihuM#(N^ z{qstN*um*7CA`S37{&l!c?5nYdJq=AF^DjMJ4#2UqvakM(nuzHQcv}=JNO1_SYNdX=~f_1+VN& zeSasux_@JE?E{kJ$0jfrSu0KeUVxy;vLUhdFq-W=?5l3{VHBN+DcZd!79dMdoa4a9 zVicf;>yKntiD+hTNKX(WittkXpwIg#zhSA)^%}7+jM1jM71uC(ueJ3Gv2M13wHl)z zXMW6rJ$Y<5xLCi}wou8NNnsDK5*k?&&FlN>5tfc5Q)A_>dv#9*@ z1Dy<@Hw_b|fsbnsB&Q9$b@5kZOOoXvMil?ibr^pm5OpI2y$Ytvc31PAaWy0L1t9Dx z*^OHH3r1>$!QwAnTKsb6kQCx4KME#2@h8DkoDn&efQX^4N*H`N{ zXD@y8dDZ$oV9yXJvXSxJu%EoY2MSVuXcEENuKJEwnRd%kZL3}*3@IXRQJ%k(Ew}C@ zBK%Xg{Oar+iuW4uq7Y0RIhH2v_>5l_8^ zSN7R%(AB_UYd_>bqP*OphP34}7;zMpFqNvSyt6?2DB5r8NA=>-tj%V-O239To=I~z zK+H+e>UbL+w?+&)mDxGuA4IdDF4DlLYO9C)NJ%Kz1X6hES~$-h({Maao^x67z%5Ya z>RCc_89)ZkFN%Q1K41OU=)$xhIjb{`9@3Xs&vOy5{8WiZa-(-Qt7A`FX$~3d75Dc~ zDMP`)+<4eSHsI4}+pNF>^%1Mv!=I-H>0wjpAH>MgNx0@_banq(Kxh(fRJq-phU3*_ zC@8^jM|>#%IHZfQpA^^US4?^dI>~siyf5vt>+aVvhw>*a~4cSlaCLqGq}{iRYAF@@&VITJ`IX)}^;8@(A-X`sB*m zzso_t{sG6jiO7E43h9}*%5QuA=KTtpG(SR71XL8d+Q5J3x2F+sw3IL=JVjm%cMh)H z0Km2&_w0wP3z3M`rd!OiA{~P_7INh%INp2$A2gP5ps(oWB=JAWde?{_Ao zGh*N@zOG_>Y#_kWm<`C?P`XtCEjnAqvr7?N!~NpENv1#~|8zq<5Q{VA-DNpWRSz`HE9Nx|RMUp;byDoHNs(QX?U9SYiYpelsN9vexO^7rA z2m}9#;%q?@nQf?JvYti%AS4fX4tQk}6N6RUQSQ#9i0y56nJ9EZfl4kv0dnWx12pr% zAk2BBvNy?jwxml9CqIEH5h-da?cPIe4$Zwt2Is#J;?<3I+!~dfsFWWh(s7Y! zOFVaNVJgf=a0cDJTS?O}Il3~|SNAv(kP0u)P4LI)|I;nxF3&AKeWsIJ_(hepM9!d! z`ce=CvE*SZsmSY^LXPUKZ0J{^8B>D1@D{KbdGL(OJ80I0J8FYh&dFBO@q|h}&+&fY z+r~c1V{GI{=^cAu|pUvhd zJ1yHnwkSiO0_5bN74BalHVg-?Z96^cK6i3=W-00V%`ht4=5yrS3LZ{+@ro#!EB?C& z_@?Ezyp25NUbb#ZI1|;iImZp+%nFKeun5zct*EC1TS>n65YE5BC7~u=h5VOjn6v3r zr&gW5h);@I5_1Ms14|cdbN%f~G?88b4+Q)Imh5H#`?zc|@G=1A8mEh@6HDWfk7NHC z`uz~KEQCA|Kxk(^YRc$G@sRG(X-kDrzYoWvwJkPV53(AxYv=1rzSiz%IcY6kJzZxX zW_dD%`BJ=qSjnW#5Lio`-(~lbe=8d~^|GqU$$tKw#~5sI@rr5=oOL=S&Fdn$?779t zm0TmptGihu@M%6hwVk7Sx~w!PP+ds>&HS=uSU(TsP#3VP$kSeUaSKUL(K*P^Rkr4B z|0|&St8cr*Ga}eurY(D`!N$L&54K4Bu+vDC;zgPsv18U?1L z1J2sL51G*uYsa)AY5q%o03{6ax?DCD<}&b&yc8vr>#h<9qiNrPti6c&#qL35vmpE{;CsF~ay^?(YcsEn^sQ5YVY z%A=n8j6t;H!6H?xN_Q`DqtwwoQWYKYv=fjn5p?-yAn$@~6wyyjbKsdkXhq~U$^P(E zC~))1?XkiXHyTd;AHrtK3Fi7AjSFB?an3BF{n~nk`;v&s4DTa?Q=30-sNmV^3LLO| z>2m(THBUgm-P96Go%V!%L%Q!Tzm4%4V#_use9aAe6RCXagT9p)YBa=wHKAmEh=oHG*zo zB$It}VJuotgry_PUCs40!2dq`U9Q2Ztwg`I6)6MNo$XRhS3{Udi-qRjmvK0_pQ1K+ zKC*ZE{#I|9rQXMxo{?y3LTIpe&qtZ~@9Ha|f5ga%$AU~&-M zuiQLhvwG-pi?}VxS3Q}-ie~3(Q=MjFILIl9vOV{xNEJQ3bzmWZMO2v9(5Z9D@={<> zpLN;1NL`+&kOQ{9K;Dk5o&G8B=lR(7g{FH;|7)M&W7UePirMMj=7}t>-dV4^TuFnk z8~SQJ8^!jiChFLq9?SjD{tv9eM#O|(l3$k}7`zhXt);`S8(y6~>9~q5ehBi0Ow}no zcgx29&MAvW&*>;A;o^c==|e)wfBq(W{)AsNZ{dnXFQPPekEjg`|8+AzZLC|nI8|z% z8h+VFSI7;t84WZ9XYl-r7yyb$5;03niyzY{4Pd?IV_}~3{Zd81!8jX^1o5NG%<%$} zF9`L}1O#@Lb!tp~vkD~Sf-G-9bLgl7K-y5=)j0e^zx2erHhWc$wfi@-Gq;pumHO5e z7zEWE9R@MlbPsxQ+5j~OgEo1fL{=YIe|K)=71T}FW$sz-qL_*82yR_U)- z`4=sZTSsp_dl|uJ>M&9nU;5dj!kUz^oopZCopDQklLVT-(#vHJeq1XGeZs2{a-YIb zAsDI0BFUhH(W;&#W}M}LWws7J=bTW_=h9Op>%u>M6f8LliH#V6X%)*Eli;D1l zPH$siKb<#^f%tmb*Q6@_mOUS`F;&)8<9mI2E6iiS+6T)L<#=?^>7TVNc zG7hGP?7&u*LIW{Xd(+Jt@Hce&gTX9Ty;$EKG}W8k$~nD4!GmdCT?d{_#W#jQXSuQ$ zZ;yEk(R5`cbWXjMF|ib2sKzQ3(Q?Nvd=uAdPd_ZgeXNyDg%|>;-+_WbXj`!ulySz7t!g%caQawWp?2 z4W9y-pV&EO7gC^~*VqV4OL-V8{UURxBS0Dm$Vb<$b^%zTSJT(F2hu^8;?p*>FUsNE zr5i=PvpYh+$bw6cU~LHSYC+m8`x}A!Mmiv`)xfszv!u%p=0#KE`>N4?%Q8A;*T*H* z$wo}(V3|?DL(lse`^WGhDmf64!avWbl!)xt!})=X{PoF;o`%}xR|7omjP<(%QK zhWm{Fi3Tfn5Qnju^t-HtRWej5yn%!e!5x}53^D|4Um5<}TG}%8^%f`OK@)IG`yaXM z+!0U5e9(`l@U+9+OIkO;tjYP5RmYzUaUz|D+<|&CL@REelNK}*g ziiv;RX%x}Y4eYq3_01|KO-T_@zjC_JCeVK4)Tc!7VNIVbkd%H3VP8d_nAO7Hw|vxl z*n>)p%D79tGPy*fz+R2|7UwSjj0v$s_8PyC4{`|4)`@3Aw z8Jd}8VCs!-s>L#gE4G9QnTIGLO;`bE5vYTcIlW7`?*w?Z@AGw2F>oybc7^NSec*KK zgc4@ba~U8HA$^2<)bnSF@hOedVQ3+o`Lv9)RlTAQSrJQaa!XZ)rx*6|>qw(dvU@;O zCsqEfSlJXWF-gffTz5+$g%`&i2A&y~HdjrZg>-yX@A@Dh@wXN|Z@N_u3Xa^5Vs9qi z3%f$dmQ~tZTj^q(8JzxYCkg<=NJkty(~VK|oyva+_iwcxTTQryb=29NheB|otJ|x5 zuGb=Ec%^(Js{`m1IoAXeom(mqw&XL?QhClE9Jv*S{+=*3SDrid@;3pv5CEu4;poe? z^$-+5e^&g(M;nur=bV@Mc%XC~GvuIaOvwXj60$`i1gdYtcD11iCz~l^TneOfgaF8B z#RdrBLQZaa+eZc;1sYu$G3!j1!Rs5eMCK`7#%yal-J91R>D++9Gz4bah#GWCrlDu) zQ0i|QmM#^{B4(ev=;YNhJQ5Oz01M!=4bONAd+NP3)PB?{j;*GGXN8mbE5lJf%XYMH zdsYh%HY~Tju!799E*g>t?t9&Xm0itDx>IAyMhh&)<&dd(`@18byjuE$oeI_Gj=OiK z)CbSmEkaN?omUDhqKPmbuf6ZRs8wfDBJX-iZo1|)s0DW2*`L2)rxR9o`Cqlhc~B*_ zc5(NBo`&&>QlcaGfNOE?o1bpPg8}BY~itwSUcR)?X z+EUeLR#kmX3p%|ssL5q)m=SeuM8CzMv-A|95X6r+Miv(cJDZylQH9LVPulLW$!M4aA)dUj_iaJjT1>D`+%AABr?>Zew?Y#f)@S9r zbv1o931Hc)`34`g$u+;tB6RYsA%ZvTdd_#puKZ0+_-kGQDJSMh^eSYA z*b~RXnhJn1TfV15qE~+hgMR4h9w-}B7(Hhwz65!+GcjYQBY6fv z%26~;FX10o9?cLudT_nz=NO4@w32rISSOQTY5VCs%b`O&YFDPT0xMJuEjOzS2N--; zEZdAhnJ)A$aWhL|fzChjt2d4Qm7+5AjmgyKXD~7#==-DJJiFDnkd(X}J;dJrf1i{J zSo>g~)jVL;_|AWfz1$M&hj3{XWxiRLnDG8YCHHQo4rF0ZVkL^;rfs+D5Cf-AZ*O#yEr-;^=6 zb9y<*Whzwo9XP+Z`;pVyrrs!R$6=gE+?EUexfAS5lTL z+P1C9h!u0X;>H+6Rt8Gw|JFH@SQ}=yeS#la#jw${H@jFcAUNmK5I|zF`A&)lpDZe%A2ny4 z1mJkdfy;44ffpq!-I#Hkn#Ehr;nIM3YX7#a#5D54O6Wg`?`FK*TFq@9Hh$&ITD*%# za!ZjqUl1NPq;g!~g@@rMPy7>I`21Int@)q$f4S~OMO|Q`nXh@6Bmu}HtQxmVKNg#~ zZHw+_IiEJ;j-jC}aQ-Yk`=1ox*)Hzh`-lMiNJt~sqQ)PnV6C^mnf~%v=;BbgM}ZD? z=Al_Y1#Z}Rkm=H6aM6T*3^dD%-sNrWi0?8g*8RW_ zf)r=Q=cz&foHHnkeW*rNpQ!glGVxAyc}Yji7ZdiA!gEqBbsxHa$6TeJWEZnem#%I2 zQ>05(5v7SLpFF9s$;!^bQJrmD_!Kb@>!u7+yBOV5O{?7;&)3!2DJ=644GJ*UEG+CO zsH~|+s9}aRP~GDgO&ng8scWgWO2a(l(*c%-Zo6cLH3BO!RulK~Z#rFOgAP2H+KB|cbovvsn5*n&Kb)4n zp7UHol=hbEgluOhyirNT`#yakomd?gzrT3+qmOZ&i+MoFko2{Z;OTy4n6`|x5`X%E z7}E&nbl~3 z=PBvCW|n#b$XJ{hE%6%CmCOzZCCWQ@mO+I~1x1<#Mm0+-aY#Tt*&*~~=htM~E_F&O z0@qA$BZyw3Uj#nb93Tk^(e~#YKHB0k!$SK@3*yG~OkbjX8>7gdao<`czGD^=Xby;) zADV-Q5^c2q<>c&A9=EiJBr=m>0cHsKiBcsr+ff(51L28(kpND@UYp@m>dcwjOmA^A5>Cu1XQ@$28K?6%Zqn3slR3v# zYrA``z~}O42L!%D{LQAXT2yjKX5m_ga1=4+GSJ=EzC?v0kqAIAc`B~ zeIF|Ri|E@QNIOsT)P7LmlQQLw!WIv=lA!$d>uBrn&rmagw-P$_x!>%+8uYRqv1WOf z6s`!JVrK^)t{OI*O#6jP#HDCV_z(egR;&@H(uN1#=*S=Pv0e5FKP}sy0G4_z(t4nv zGgh;sHYHcCDl*gv|C#j$K=iSqq67W`mzLiK7Xa?Jn%@QSJC0cAe` zEYMvS)EZL#Zt@OnPz5PQz*d5GV@hp4UG7Bmfky&IT4AasAK!HSWAfXHhC#EWD&hC^ zZOAZ}il#incBus zvTKuU*kYvS?Dxg&$d1)LCdEg{K`17D!^%CnWOfdt)>~_`RUpoJ)~0!XSBJOfl*yyQ z;1lGh-`ju#q1|;-6;ztqfYmV{O9}gDDeNyr{pinD+MAqf zGnF`ZS#MlF?eYYvcz-L-}1gr0H~_UOgY; zcMdW$dc8WJ!M@_4*+Yq7IP`8!ABu_2T90CnZrLD=(#y3=R-ysC+_9+cq#osM+1{EY zPZ^`Hbl7x!!Q1z`7s(r$uWW)b-i-$^``cGYOA_P@??q#l0T#e;F4Aq=ew+t{THDwz z_StyV$z3+uW>ikGx?`!etsw$83K4k0pHYfCws{n2qhDk-ld^xJ^}s7H*sf^RhSOF> z6^51n((`y1N3eyBb+-7YXly&CIyuZEvv~E5tm3-}(@)_w0KZIOFh-H`&s$_%!P>pq zQux)-z`qw+CQfQrdMbcMm%!?Ov)kS`ngHIq9O$GP!SDs ztRAbXtvK9uPcFl3m7hY8N?AYux4v^8QGL$WPLo9p-&o*|OVhq7E#fwLP@q}kP-*(5 zpXLVv2oFI{`LIzy9)t5hN!H5UKP(%D3kxZ&+^&jnpJzL1V{_|WWT@qR$ypar+->q@ zPSz-|+^PF5TebX*QgjvhEFTl|>-q!&D%eGaI~7f>p*EqFk;?a664y zuGyF$qiHdI*qzmH8XK79peiAVG`*i68Frq$5+s5V5U$E*kwOy#%VCUiqdDzj+dG^8 z40D8Cw>5^pZ}C;0_yYDDfDHw~bdM%_?@=q^VCd=8s9X(xwZj1>)MyvZ6rC-@Q^dw8c5FV7mRkF+?6^h z8b1Vt%em$83rD)C>yM0R*}<1-ApR4FS2*_Qx(qAHQk5o}fQ&?(>t?}|Jb_U5IK%l@ zZ%%;JR78gNQ@tr^CWj26CDSCoT>ETbHm0iTt_&a%QhO?0h^jqp3Ux_=+lHJRYaC+8 zTdsOQg3H9Jex?nl4e+0~hXa!U%jP7+(Qc*06rHcqodrX31H}$0Q5evbh!kpiH~cxh z(rt^?`4C&j)WrS_i2cCoz#N&1J!sbSxI7k(c*>tk<5`^I;O>zG%D3;6Pxo?7G6a76 z>}~;v&E+Lc=T@VUPQn=tU*uzA5?p!DRtdgYzoz)<)~Px(w2w7qNToTgLb1jc|LRZr zqT%~Y3B+rEXIycq`H~K%ky$k@fX3!4gAQZFe3s1ZAeJZu;=u<^4%BiNA73vV?ejNi zAtzpC!Ij)WPEYYv`Cy(zcoai`ak)(OOBQHMluBcFVXd1h48rYvJhAmPnNX<3yZ*=m z49rH{#Z^)qRErOh1GT$tU)4R#|G`zZYI!lim$$!pqsTo=f%3$u()gf5%4F}aU(b4VL5VXpYqnni>GZMB|7Gwu z2PvSzC#j}30D=7gO&I%RqGg)tOGNv<`S7<5ddX2k5{*wbDizt64 z*gGJ^b%IymdvXc%e1&B8EACDOfpTI>vkGVeGEE7p0~Z(C+6?+Q zi_s+MYp~e!O>t%;!MZ!KaL!gCl3jaU(-EXCi#Hg3t0U>jAk;<0EmVZh~H4Nqy>x8 z^%y`THbf=QO0(kL1ecwo4P3u`_w{S&5Hctu|8$G+iw>xVdMa0%UT@i86LkaUe9D2gwK z37hl|NiF1rzH@Go!sImBm5R-ompvVg?71IU7YJtSe z*~@?cpR44m$Y(8q9_llrgtBvLYEox% z;plwFS>+}q=Y`dO006MqHfLgdsIFjP+a@QS;8#Qx_G~#SCQc{ZCXCmij$YVjs}6no zuveEuy{8mkWfeE(Q}tmM?sQ$#?8_{if!*5Yz@LguYRA)vd5mqnC3BPp%N9y@cPZL& zHgm|*)B6&$_a|G1~F>12*;F{3N-vQ8QBqawy7R^Zv&XrV5il2^cw zX;GvWB^*4fi?P%saJ#c13_U%e+}Ej@G$Iwk)UUk8zDX9>er5bl9BAHehyBjCw{KKm zIU5kq*=M0mB;wu^N6$^^5vY&4_vsqZ{08f%fSVr@%0SRWHYL-=~-MYDU_62JF&On`iD8-7(9c3QqithXI4|lx&C{OE)|(Q1D$v9_D2Qw zc>6QwyH%J<;jqfTIZ)EvK}R!%dU!`%KAJ&CbCqSo2`d!Tdofdcc{`rKDkgI&CFfiif>Px-_!tXbnF21)SN)d%3LJ#rFoN}f>s&9EFepU7dD^}C<@&G{SvEGt=WengB1WIs<$xl zkryiF8rOdAzvY>N%#iD8_E4x-!k-%;i0?UCz(Gm@4nfxIW2b>>ux=s;XysP^_QH3G zlZ|181ons?{Y&9}NFeODAXRfbI;8;l_;vpfoex$TNiLoIgFNfb`9N+3tsDL|LTdRn zh42r-=|;n}E57yIc|73d!bYcTU~f6jjB0Bge@5wmE>7kAdMc*LcPWe`W;MoF7S8qw zmI)@IrE3{#Q-YZ>5E=I`i{v(7%yd|@V9i908z$gm&Y3G(09S^PBs2g;!fV|wBp#%d zq=euD`VT*3W_M8JgcoTe9vdX<`wXkI#UR)hS4;W_+&0F~S(bcJF)rTal#jmFut1;6CKw6uCIGeb+)}z6bbO z`uCM5^+vbzYHg3HunXZr;Cv(NV)YMP%>E;L;m`lnR%O*@Z*z4C>9J{j0s9w{uI?DR zXgVlEY1LhQs|Vn&BD|k9Oyvsi6Laq+hl`c}3{=yog`MK7GQ#cJDKp+Jp)~$qGC+p_ z0))>FADO8-zEm8`iwEs&nl75Tl2E%ce6W%7KOY)@qN2yIyh#?T?ynz9vty@~+D(Yt z;Y`R>fmjHhI*0-q3ziB2q>=8+N9K9vo;CL0dXpOFip53OVWP_&^IrM~I9HABGiAXArYj9N3Ff;`j_0+DsN{L(@1rSkA!KT*x&Fuv$TX<2&G zwHBexEKNOEP)Zcy2)C(B`Ri4u(|_d^t{XDs{sTAFgVVY*x6#(GWA$ce%^E&|hOrH0 zZytL)F~*hFRh00@eV>cFlc|rfyPiA%fZI1o&Xc^d!43uP@N=n7eM2%Vjl-CH?78U>EwDkrfw z>o}4Pxg*ZBRAo;g@H!%ddyD+PY1_OVxm>f?G{__|70!Qk9>jD|*~UxJ|9n%#j_H}8 zo3=QlfJTs@+6FC$ubQlslCA0sk{Q(wr8P>QiN8kQ86-xQ(f@{O(wT5NAH7HY#3HUq z^Z=#gXsk}ln;e^z4$NpIjc`34`&cc8dO9<;V;ZRbRQaYgz!?nSV;j!zM!ZaW!F7@n zqTcxnvsz*9Bhm@kiZ}Qp;2rZsDUer!p%j2-AsVdybK=E5hFkvk|HY&$za>R-c}Zkq zk;P3s+8RBJYmuEM#*r+KhLLK?D9?0;4QLY6dGmysNiz(#x{b_st)d!>rj~{4NIjlr zwuDDJS+FPv!r7s4UNoPASiFe`mRXC`G9JP4hG2_>6Pp5|8OxeCRBOCj6WTb`7Cp4w zl!QAlu8G8~_BjuKY-}c3ul27#+C>BA;{DAaFFm#s4VvAyv0R1ipY4gc&oPC@<6b$+ z=Qcu~Zvf2w`(!Tf4gdpCZT$FKB?P-DP$707tKDHkuikVH^cX9Ip4Tz zB;QC9=$ucTW>dj5TG(DKopTQqakyt^QYF?FUhZwaS1(LzkWZ+Bkc4)<+C;PG=+3(r z0SIrCQXSC)TCIx2W~O3n2%ga+*Q0t|-D<%00j>Rq4&fM<<6aD7R=v?JkIak91=fLd z>Ny-Lhqicwf?nA^R~$r3-+<>e+^r{B%j~63H#!A+8%f*hpf}VdT(FaS)o_`2K&ya@ z+I}^vS(>nNCF)`}Cg5Sr-Kyr|7+QW)Lmzlyxqj?KayrYj&wO}hiq4Z8kPI|@Q}G)> z|430>&hoFkvl-6H(R{V2x-swMgkvyH53lva=%ZY@)LX61dqQt;BQ5yBs}@Ei6t`TV zjR5gqv>Iv-MX;SA-}rdT8H2gxwWp?n6F+Zp38{%_h?e*4WK1*{m4A|#rSdSgU3TsJ zYzn*69A%L6f3i!ci@qYk&BYH8i>%dx>{U@GGD@gT9WH?b#}Pc+f&hj@x_kir>D_@= z36ia$mk;B92CI0~2XgI)Z?4W6Dl}9Ukjd-C@&=iO8Ed6Su`zz0 zL#EXL)5td%GG4(GORDyy5GwjucAag7N?f0*Xh}H3e-(+KT?V#-LAN9vn7ejRG=mK6 zff;?Y6eS}$&V5=eaK3)WX*p^yy2%~+e`K~Kk@6KRF%2&mLD&!0e6#_HPSq)xegDqe zcCvc`)4(e`Y=Iw0N?er?y3JRFO(Fn+i0!nF-@Ux*B7llx^RpA*3>9IP)RqdyCY%TKkWO7OLX~q`AJ9R-N=SmPe zeJdfP)PK{G2`HHFtk}a^0(&TtMRyNmfNWA_7eq#X^ z=4XP^V9QtNOurTelsYB9KOJN+X<}=%by$;N3q5RJ*jN%wdx!!a&`=mrxNP?cI*xB8 zo2U!l@PyH4N>Oc;@W6|p%(XKQwmlnd#>Ey0dGN~>`Xtram>@S8qheQCr{?uSC)&|6 zG&Xr{GVg|zB!vY1NP8PJy3Zefs_&qwgW)@2yh3wRR z$tvm%=yPQYgM!NgGeo~d4chA`;Klk#E+VWx0dfaAKZ5D1PJ{TXIG8d1+A(XMgYo|| z`0TUHbOHP)e_6B8WXoX|6A@<)@pbg&kun6Q7n^4yAg~ccja;m{5s;|6s5DlLq~|;) zy2)OqU+A4nHwL#NG%X+ub_hfO|IOX%;n*JU1?Lr>l8Dv|S%#+PZ~baIMygMm3a$1I zvZwa1UuVI=eR7ltXJ)z(-P{>QKb-xu=yGHiA_=;HU4YMBAY{bZf)g}KiN@%i+93I$ zklK1XT?tI^$;M>13Kc1IemujL?XK6#rKVA4ld_-0H!m+_y2iB)^# zKXnY9b5O_rk13@a7(EFG)F*a106hGqDeI;VJopf%MpH3a^QaA#X}wAF z*>+tWS^fL@BLa+qB~u}v?~fZm@H|#O@=iay{|?x%Dd*mcsp$8JLa>h3IE4S<7;*@h&?BTf^u;`u14&<{I0)NkN#!O__VGBwjxVT~)0Bic>kx36=fJ747@VgQbW=qJOo?s(e z^V}Hi&bj833{|6Eto@D21~w}8#rXF1Uf@&h7P{Owl}?2wtWp8bCMP~r8N03ly&NXc zC-0I6Ok@p%;iI!B4!w5|Dw=)`Wl{GXHF23~-I6Oy={aqY6?1-j^}lEO<8jfVOw2j6 z-@g_J$oyEa(jCd>K6Oqmh??c*-+e|6RkkBvk`(X(oKo6(qFUC1p12>233^rYXj}2} zduvDu&sj~C1$7~@#!sZSik300ceEV?a;Gz>o$ZuxZ$vJ&1sMRNgG)N3M&;I(^*(tmbq*_;s#(lhc^ZyE4_OMT>JlE@N0%S(s4%y*zZO3** zGx)P^<*x*|gB(?@?huFjwdj|b+~Xx>1NFkrfRvQHPb1E?Y3}}E_dlka;${b|nZlr+M`d#JY$YMcK z-88}-m8SWAbGnla{QRl}{RvCJUP!o#xF|1Aj&vh#@L(B8a!XRDao&^GNeS~XowDz> zh8kRjtmJD_1M-m@C0T!yNKXk=6%t_GmESG9+x?<(%uh$ro)J)&O=T~z{ido0{Zo)m zLC01|n3;HIK`wCD7UXd4zCfEMx-?%TX50h)$9V7Fj49gI1GpGWyf=98ESko|X;v%2{rxe3y4EK9UJc_y~gK%bw5ESzNvD zt-nYuI#f+gsb1PPUBMbb>R}`z_U1LvYVhRi4aSLbnBL);w`Pe}UZCsZ#L^g=b6c9i z4rcaFXBS6MgxRm{Yn`l{<@u3RNidlu;a(=igO?YR)NGKLV)gdmyB#RV9YXW{j)~B* zW{A1a{o*I#>hCdZ*VQIl{iJ2`RI)Aw3**&eZ80%4=(2IHZ>VJ6Yh}%h9UuKXEd29dXWrgcQi> zlv8gO3N>$}D`QVq?9CPq z9nwD3RVJz$?@_)Z1d*1^D8Q+L4*DB|ZKHx+93@~^xWa5TpE)Q_gnwRQ{qk<(^^!td3=t@*hHsWB9Z;}vbcIUC-`?WHcfsnWaZm{~z z&EQxY9iXCkuCUdeKg=MVjh-*A##XlxBF*o*Wp2*aT%0TC*g7L|;#rzNB6#olG#Cb1 zGTEm>v0gm}0O}m}dM4@=Ji1$~^-Gi`WEc8t->v24Q2yx6$lRju!U(Y0OKT0e5b)v{ zX|Sfz#wp%nx{RoFrjZplNloI0BBcic37DTxA^kyzAtqH39azwD2ob7sU>WkRVHse6 zs9{qwQ3ob#lhKlnfTyeYU zg6i{bM`?*e7+Xi$@{N7b2!(hfkX5Eqilcn1G2XyvCnX*euLajKjrp|_ME#R)i9;X& zZH(=|olIfrh+oHo;EqPOD6mSK!LLStOaT{&hLZVD^nsEHrt6U=%KMtSKhaYua7g-e zlts_qmdiW23x1TE45EDJ_3$s|%Z}KKK}r5w*B8s`g$%7i&?b!_HG-e$EfsX}1ETc1 z|Ikv{S3+H@;PLsy!+pvmFT$Kjzggs(d^8DOFVQ&6-8$=$X{tJHku_=^)p+9)`j%x) zvqhmknVuyM`kmN^eth#}6O2wPyp`YP3LQcwX#V#KZAZVWM!A_g{c_$9I2C=!ONbCt zfC6$T6YPc=jo0$a^H@W%GCS<3ag&*H4Fv~zI71~+rkr>~uW7!My*hem_>IhvEGmvr z(?Q;R&AGQ&6)O07-fW|vZz!0J*#pS|Az7B!+asa$lKyJFOLsQ;hP)xiEb2S*6Go&j zj`a;G$d%S1J zLCZ+KWX9QSYDgFbRP+Y$tgTU0I(kUJY>gH7yJHBVLVa3zaBxcs9z0gu_dN`V(9saj z8)$`M&(R+j2SXJMqo{t9*{Ij|@5L%QHWmFe+c!+vKd7~F%h)~Z8 z#HTMT-&+yW8c6ZxRGncb`?>lDiN^67xx!U3N6=G9DF!UaK^H($dOB8%B7Zxuy$zxX z!{NE}4BVXOaKWKh5kG?U54z|bb2*c2{pUFjODvW)K}5nB`YM-S{YJzXHe;a9>(9(4 z24wxWj52?L4XtF#ipD{EM)D9=kRP9X7Uck)8OM#wHeEf!c4rU{h&W6=ijw=09(sRe z5~jO!r2kp*r0~7jYUqb5ixPGq9VTqr+_-`ET7;Lejy72cdBuSDCM^dtA|AEwbPr&FF-#1XXu}tpCeb7&WeNaxLoC;EVzcy zGdN!$0o=`BUD2m|7)_4xy27slL9;HV>LVfOci51^jXYU}XHMbQ(`fPoPk7@}$c>h% zH_R2WstsSYiN1P!AQykF?nRqEQTWE5>{jOaQ%&D!o)_^TaiY&YIJOC>|2l%2-Zh6y zT6W-}#qUupm;1=(yo9nH%p5Bx3>3x#?>!+y^q3_09& z|Lgxoj~=x1VG+IlRB4)s$w~cPV^BWLc(&C%_XIeZcQM=DL+8EX)6>az2QX1!o)2Nj zKL#-LDD*=#q%rZG;<44L@ytPx(1#)*{waWNm_F_fh&sbAMV9>kU>dc@D|~ej+Z<0TwEHyksFqeX{m@ z_S5shylNGPhimawl}_hqeMuO!>}FlYLdz`lP{uLlyB9M?0Q|H=+Wf^Z@-#}f4J#;{6YXbkOScp@smzHs=o0z0ui@{>l~ca6JecGekisbw zTlA%KR1gJ#3$39gG{6Br9Q3Syw&k|!H=zmb+i92#@<>e#SyBGg&UW%8f{VCetP%`e zcj0WZ>L8Q?88tl{cbq_Yvwmde-dj2J2%-3#?>)FmzzobXdbd{6{`uNW_;yYN{7v>OJW+f9d!Hg96t2A~%=UJQ6IqrTtmNV*GT%DxU=p!Zz z`1N3~VC@oXJVh7fU^z!za3Hu-Rt~C-E0~j)e8kWUuWPCTNy5THF(#~hSWhgB#*t?e zGaUqatlq=c)PvC36qtlpFv4Z}p@?|j68TCrRVc+FBrhL!qBLmo*%cXC`$<`lF3j9} z1K(73p?A5mxof|2M>6J4CpmOjKjz7`4=+L2Q!yJXzh}1#_?mE&2ep6fj87bu;Tc$+ zzUPzSZVOF7GC5%TM2pk54gQ5w8MGBj?Vr_qOnMfT-|&6BYdtd)$cFEy#3^{JOYh)k zpaG&$XnQi2jBv$;#3MiD1*bX2Ya9{=exVKuVo>$tX;cl*pBLUdZBWN3Sh2V&Tkr1# znap4nhe)W+P%Y;RL+BcbM;Qy(egerJm?9)Sk!&g2n$sE)$MA8XvH#e5Teobs$L)Wk z>lWl9E;zV+PTEhn4G_80xVu)>$fSe8j*W;h1o`r=Ymn~A6SDi;cR1YA^8vSv62qrr z9)+(RGOKsG4nT_LM6&LwHPv`4M{Kw-({LbhY~44Crj9KWH!yC~HHJ6W4CDoA%w5Ye-_f3d8&5b!VsG}YFkou0?^FRF~7;+%aq<~gpNXQMLmx1q07 zyQCWTy?DSsuVYnchd^2I^PcM@9=0cHucJ-xafd4hLe*;Wm2nf-HsWkp+wQ7Ro!@)* z`2FGYj^q$?dkYt^rrNBO9)(25lfWR~9isyHWx!le?mdKv{o;?;HpS?Z2&5od;4hjB zvXiIV(2B8$baY%aGGf4md%zMJ6l>6kH5LjMwC*zXq<=h%Av&rBK_UP^EsSSQW;Uhy z;H!E@lwcCQnB5EPopkf*}-Et;&&#MtKNvFr{SQ8ER%L8(@9a0K#5ctk|dU{>mY zQ;A6XruFjVnl23wK6g*EvS>Ni04os!hxdG*c}sE+f`g%VKH8t6btCT?F_T$3{^?<~ zF(p&wu88ATf-<;1r--ob(*Sv9zWV%YKHF4r!M72BWLFVi)gD);;+;hid{(QOEfX-v zE1%WpQZ6m#TEX0}xcII2^Pd_vH1KW8)tPv{B2Tx6x^GW8ufd`jL6h4J-7T#Fe~73g z@J=2vUyg(0)sVEtcj8Lz>VpQaiz#3tY42s3Li6mI8aUjf1A2m&amCb$Ypv<+GAozW z*MQ%u`l}zfs61R&RoV!#aC&^P!iARaCX-Kf6TPOXn)q{b1vO`kmb@b%yor*Ki3P8u znO!hTY16mt1cw(AD0IQOuN-(X8yycWwpTvPHv_AZy=JDAlJ{*oxW~d8HLPp znjaDH1X2k`iIbR{#JMV7r_0$)`S&$f{BbD+$FHHSZp%sWGq|qNTT+_bYeeW>ZFP2cRy{m2FdgK1&^x9Ul-DVV6n`k8P;{%)ZEZ<_@3R5puSCtN2%QkqaiVXdyv;% zLWV2@MpvCYSf-9W610AI7s5lpN4tV`g?#tm1B2Lnj22UF7=Tga*ZtrDq6t-Dw~Ol} zFtZ+*30Y9ob?)XX6zkr3yZ=%*t2}Kqd;Hv<+qp>Dkss|#F6zRvsS59&d76+Gi9dmG z01tz{kulcIDh>;ttjC>gqHpk`Al{<=sC!z$NdL{fupo_E@gYe%8%9fsxzHt@2`wO8 z3QtYyEPUzhL^n0~B3* z)^Fvi-U>hGzvz=_KuL?GRZl^mX5yD=W^E-s!MujwBJ}eGiH%{-;&Q}RV;kP)?r{ou zya~MM9zg@}7rzNy4^2*bfzxa+tZ~3R>Gew7^gf_*O>#X;a$ta<;5ND8cy2o7#=%O| z1Sv_C@zz^)mX@_WB2%SvUm5=1ezF#}h3u$f&e21RVRl+SfWKv2fhuRU4`Yo_hkNDua7G?<+?7up8j4x$pNUn)$|N87+-D5cZAFKqBP zCaXQqIY$H7<03aC@tDqqB#*zAsxki+Ki&ghdzwCDO2y@J@tPXCOblHUcf`b95W2Ns zXzACQ%zq)`B=cwf?_(p>PZ=GFdXwa8X4|#jglOB+PS((aVy=enU&nH28%woO#ein6 zTC!fesOBmCkCa~Bv$*+#pITbaPG5|S!xeOLP^+7ZT~aBSllAupDf})?5ls*8C}J^x z>pj5GVtz&+lm|*=Kckm6c1)E|0%`;&+WiOH{4g-}jpn&B zB*dkTz?+&pMkI|0u!ZesoI)zpHtC7yK1j;<;3T3Ju!9|uMLrw9Pg+M-P_rCyio1}x zEVg1L-z+#s*&b;bfJ95Q#74Jhuh4B&hySHVv`w5-`Add`u~?C=%6i!w=P3IWT+~rydpZzepu+ z%t)c%B@n1YyVZ!tRaa6&2!wES6z>xGkZJVIRu?QUdDdIz%U66uLeQPfgs zcG8#2Rmc8x_5ZnU`9n|K$G3u~59=y&a6&YVZGku(saXJ1x)ucu+R3Pxg=(%8+7s5F z11>cdFVg4;dvP2-I|#}a!JJ$*7XMr6TU>_$+ktZ#z%^sk11p89v4p9!nxN%o+zM8D zAKb&XT!)uyNqB0z=uAwP1T59YdRr-NVXZ|tBL^Fw=B9VW_Z?UMe6{?eVI4*@A_O@$ z1eKScC7@6>_wcS;PjXnX&KmnHKGU6i6X2pd+(pWPeZC# z?mi7|BMSdv^9ZJ8c{)!DZrN#Z^>`K#>+aH`-I|%Sen`JD>{Es`xU@s@2O2J-De+dB zN^ufwp<>%J*KTvU-V^~S3S*oxk)vJc3Oc---%tgNM=dt>G=%>W#4V^2Cq&?W?*Co@ zNkF#0wEM_r69ZpMLE40-hse8v0v4&sQy>ZB55_%WB+fz$=kzK?fmqrx>3$A*4?msy z?j&tJL1S--Nk}56fGFaiT_RB2?IH{LvAx5hUzY&s-Nvj6 z{nq?@m(+VNtc~eIWe~x&LEY-@3aGITId&9k3Jg`jA+drxYarns{YCNJjF45!roUqx z33{%=X6EgUhCs&;qAi@M5TX!hOvYecg~9y#EggTi-=9>!C`PoXB)>I<&}f9;n3+%}1T4u*g<4s~Ph-d%tPx4Ecu%Df=T);QP8d@IlCr!q8U7>d z&t8JCL%qI^cqcShb;y$GDysDbEKZ+eo}M3KfHJpjEXUg8W8hd!`WARbOtQw)dID3s zR+Cw$DX!#hC$%C>c@gXU_&h0yADeDOzb>50@XHle+S8C1^wB5 zNg0iz!zqZ6u1PJWWSf642)03}{4mT-RgO%=nRd@2cXWlt+c>)~L}oLwKq7yt^D}8? z1*ZZTrA$O}0e~I6nLH;m;b9eBk+swf^H;NhqK*{O0&*McZ1apJk-eekPoEK~K0fK1 zXj^s(sQ}}WD3ALOq*PkC^)jX7Rwz?2XgvN>FWeCTin)=(G{DaL8#PBd(GwVaFz)2C zHuQF1Nl*&3g1|~UpS4mL0}K)!_y}cOKFpY%AR4_2!75hVi=JRVV}xLtk^A8V2RE>@GzpWg zuk^hS|27dY^+&ZRxSy-0Gj;s%FjOYRFT{y$>`Mo3o@q)*CWP7~y0_FeRAn}4t zOD)Su+SSe;iM-eg49b#j`7ycfF7Ak>vIKyT#JxO|e4vcy(!b2r_5I#}lT$E}Fe za;QJA9(Q4VX!6TO*7w7StSm@Oo$x(`66DUpYE}VspR>bovm+~GKEF52)yj& z^nc~UVE5_KQrNKSh7yAz{O%X!^RvIxa=6<+54ClGa7c0h6R-t`br=-Hyt(Os9Y1=h zS=dsF$ZiU1bYH)W(rlgSX6d@#noa6hxQE#5DVv$Ja-fh*@U3Z~kzNc)%sz`AZ=a`D zosYa;d{=c7lcC&U7fZ>Yb>dt^@WT@7UYB8$fHpG(2ZYG_)xH|iVV5VQ-I|!d?EpoA zx|!`7is{u15)-Cb*@@-ZJF4Mmc}E(HMAem@>zr7a`;SU;9$M!m)J)aQ3c6fu8#XM_N@Cw|4i)OD=41jFAJGMSdfKxl)2YR$#(BL%4zxFV2`ZLsGf z_>q=L<76}U)8vrPM!r&CrSVf3x#wh^_fg*`zt84b-S_^Xp4Lh?hWiQP3j{8vcL){S z;4PTq4Rh`@6{Q-5`MqU_-a4V~6v6}mlwCy7`za?c5?{ft4>cUExFyYQZt^}b#|`FjcXCB(R#iayWT!~V=`~PyZ!TNLk4uV{7xd{N#r8)r%X%v6#n$ZrE`S8 z@!IIVuOgvP2+a*eyG4>GsVQL|Kmh`16-nZ-%4j=^L}XX~FJ9+c)q zqjNk~e8SvGb`feL7#&01^+om=**z#WOJjx9)VuFkKmjWNe;FP`duN%!-6g|67_C4N(T9xvpN z^3Y?t18+t5JeM@GjSZ6}6_Pqj?OZPBVZo|3iSFV>{rF?y_`iiK3g{@-a&kJ%x-~W{ z+e997UsR?LARVtWO_|=szCa5SbwZGRHyt{SxNBA>eUMq-KH7VBBJ@CTcIyXmF=Vr^ zq_Q^1Lo#s3;K*+sRydgl@t77@iOo#Qq)LT*q`%H61bK;D0E}1){u{8Hb+KP(Ziy*kL{R)-bw2lBrRf3)*ubAJTG<)-q=PE*urgbJ@ zn*}^b%Y=PY{t?Sb-J@YlC)A-%^q6HG*#@k^)n(kH^8(e)Ed~6qrlHI>^ zkjr6aU{F{iWeXaSQs%_IaYDB|A_ND$^@TQYS(x(Hvf}tMm*w+KeK^fb1vp_6$wgDA zG{&!Y$?74_U3u_^6yi11WVg=FT!fn7omGffqYpaxih7u_#T|atELl-wL+AkhzSTm0 z|5}B$vRN(BP8Y`J+?u_Vl-~Z>CrfAQFMvif=e4!`1Q-Pxs~A+l>@}fG$m^%x&nmC8 z#tzt^Ief>Mbr76=9Tg&dtAoePDtm6jiNhb2zGVMvP>pTT0P>yvQ2-vG4ItW|RO#}d zG--BaovTnG^9R&ZflK__WW9Ef`_ zAwIg65*|eS&|(KGA6q)r%SusJcmJQ_XA3go?*Ngr! z6i?c32WfdI#$ZIR7yjax+PKB+f-Qn^O%NP8}W8OsNVw^qL@&d9ql3i)TKxPZcC-@m%+EdQ2toL zRx&~~s@-qBIX>hD+7%CW+z1uV7aNGk?D{H!AJV}5qHOkF#+e`!VX*5l994c}I!lkJ zR1jT3H%X)kIbCJZ%eNAs#%MM-EvKq%lpk^BCWg!Q>P+u9791TbWL0-A9R`&}BRRLu1dN|P4dSB)sEwuG%;rEh`tDeY^Sg&fRT3Tf__y7H!mOLBooaFvRt%Zl zZ`X3|JywC=d9nbr!Hj2RMHo|F7KCmt0Pr=HR#1Zd80x69=y(9Sc-VMpD(wqEgkidw>z?=47=GH^2))FuZ`QX(+4G}87 zut8a+3vri(=HOOLIBh$7Lvq_D>ar)s5q&9nfjR)sKF(1&MKuKyo!kjl#-jXoivFd? zT?d)X{_V_L2))n)Ok)FWxl~Nokx~CKD622H9GW;`bAKjclwUsn$#G`k;W{jLX_{gI z_{aWC-$r=-0Gqz;+_r3my2ZGYVWZbn^eQ7+8}ysBAWgoAfuPajDBN5r7ttO!hdo%R zV3HVUF%4Yjr+b}|cUK_~i5j||^NO(Jv{(12@_e&0R%H6{+CnV`WvCc<5!NC*yO3eg zjQa)mprvz%>l0S~1H-5aWi|EI*B2UFV!P^$Dt;nM1yn z)OFm-tio=pV=PWBo*fKA-9ywQZe(|tw16qL`!mIgLu@9JEo3Vl1#hiY2h0l)yo;C{ z86X7;4q78p-eiq;T*EFi%%TKm(jz^+AHP!DFz) zNl{z+!Qi%V93F%AG!uAeG%1#$DlqJ=UNG~y&EEkV1nl=Bm@K5|N5~VG@hg}g_$U;7 zeM~C5lQ@3`7qRyAaNc|GlzVGC{#I=LQp7Lt6=;BQU_8)gyQ5NegHIoP`&4n9XfW+& z^`*`Oqyc)XBci5F+VNO`U7SUaqeMiPAOmZaR>at14eFZYE;o8xf`$Wj(w^vdU9`F( z#t88Z*%S7&l&!n*rEyj-2{5{8H&wS6OqU)-k1SFDIb$RU$=2w?;jHR$EgahnDoqU7 z*`W?8KrtG(&^Gz3(Jg`R1-sU}yZJlV^``h2YuFD-KdOG6O9F-MuzLP*Rc|&FVR(d} z91^URGHWYT5q>P6+IjC?61Pnw_-fuEnkB-i;!dWR)qdvON$@s@T6L}l0)0x@4 zEpvws)ZNwU_VzL=2j+oNC;$Ke@Wx4V8|D5#SxSL70hws~k*Q9E%gRE?`ydd9i_Z>M zoM^QcyG_x0zmtE8Q{0ssL!HhzdQtW)ML}=$V-sPB!EIKPrw{ZRWuJt8TN}?-jrH&X zl=@-&5PvG54z_BktA<8EyS)TSNPh##G?6DIep zYr?xv7pqyWt(e^F^g$3+35r6s^8-;N^j})Sd^WaRIl|@f?tIO?DssX><<(HHa`-%)Bq>KD zZw!K%_u%dJ2{nY34snKB%HoX`6D0*6PMwKv`#aF_DF?8V4xp~}=8J8&2J^^zIVx3$ zwvH@qc(b{cHb+}WZ86X5W*al+U|BL_v5tXl-S6C$DUl00msaLq{1E&arBr9WKoUye z@3Tf20viasCQ`l=I^3bod155|Nlf5KBcyl#RIQT2nS9HvsZzaD2|MyKwJH8Xse^~lFT1=%KqWQcW`zdkM^DarjHeVjdh0G4Eb$(h*W}tS z#k46jx*`?3r_ZcVPs|W~u?dFN@Lt)ay0kEJkH8`9;)-@z3VMM!p#+Dr(oWL!PcY3? zf~(9Os1tXFw|TpOKMT^XI>jR|mshbwa%7R)hD%>n%}5XKkk;;rzDmRi&&tgUwvmrp zImU4ujAT(7Xhx)Bs^RrV$mg6a|C8)I#63XbGFu>0%@+s}sfFEnJ)q{A@c_M+baK>> z!gWwWq>sXQ%TB++~+p80Gnzde2C`cDnE0b^32lNPzAA zVIrTddmi3lf>Z`N;Q2uKt$^(;G5G{OHBSR1>0fp|r$^VMoPvoD>Tptm=j=ak*a}j< zg6E3HS~nab^B)U(T71sIqLi!tRfbYvpk*YTWcb}>F>)*adsoi=G^Goh`USn!nH|Qy zAvce-#NX8JDrJAO0m}#nk=+9i6zx$e68N^^l`cS}Msr(+a9K_w%NmrC^QT}Ci785x zkqit)!J&~?%d!B5nZp`W=WXzmlDF=y55l8badtg%5=l-3hAg05p1+2!5f@J_m0uwsM;FYu z94Ggk(%#$gn`~d@WB7!_DgM8Ec0wzBLDYgsu;X3OE}wrLC+UR>GPx6|WrecjMf561 zSjf7(do6Ibd|rC>7dFdwo}_RZJimO{eAcLvcg|UmSnI{s7~Llx`ECgp7UTC(vBr@l zRJDIY+QTkaO0i<-T!mZL<$0N?K@!sn!A)sBrLn^Tm>S8b?le{iKrG$BD3>8vVN*|Z zCPPMdxAD|v-L5TV^~@lxr$j;})hb^*UAX*ejeyG&8xIR9sW*nD`6xE7@B76_beFj2U@y2>IO_4g9npF{cXA13$c+kqIelO%jMq})2y*(KC4nkDpcj9E=U1G& z{B)lUNhd}1aTmkD)lhF2l}@UBLjkm05QVmACyjHJ4Z;AJ3L%(B{4w01OnUAd)CHXx~wVf1tWOL__7ksW1bw49!{FOdM zehRaMgR46PaFe9Wl*gYzRrt-%i=Rk9?~^wqyOK0(Hs($*s?=mQMF0Jw@KU?3ylBJn zZaZ59OQMgyp=?3fs%w+b;EEp4fUX<0Vai|mnyyS-?Shu3#eb3nUe)Y6-r*KY$C6U~ z`3@x*Freiyitb`Q-hEFs`3V&oJ)|~;qSx!hc8xaD4-+)!IIf3ZZ$Gu9{)u6 zUWMvnS#14>XQj`@>-$w#7jVtOi`5b8fT|+Kq>!P{_wnn(Cz&uyXCL|poT^D$GY@J^ z0YHZXHt4u!_5F$5b8)dM3qN0z{O0bfp+h;1J*NrUKND`}b)*#K#x3&7USzg6Mc1Qf`-HJV)6g^BQWRWDU*5s)bt=Qb8O(*rXFm36* zjN==^ZU@V7jt6QoH*V3RH)Y$u>aSGJtM+>@!knz@nZTA(Di+O^25Ya*PsUqAx%Wy> zvh}f#>qRBAYwp^MF&GqexM_!M9a5ZpQOy7UVNaE_s=0yV!mQZ+m61YQ2 z8NASQBv(TY;5Y-?64KkLl@%{*;)AOq0Feg;d=27M)$(7t4x}O6YLwYlw6`a4(rDJ{ zdQ(7<2po%EIwpeIp=)JY*wTfK`9*xv97GQI6Z2?Fy;)@}O?9lJv``$%WgpkGr#5vw znk8#-{zoJzLO1hI8H=UjAc9`zn-)2@o#RqC=-@BjU)O(^o068qNL-;6^ENY2J1|GBoqqVp{W`OMA=2p_f8 z(}rs5^GS^|CV13ak$=}}7K+&~CU~D}3sC)PeHKQm{=(zo14hIRoE}F`IJcl!{XNH| zYz$&4&pxD5-6M-rj%J8Hl6hg3K zADNUR9-J@TZp@NMn)Max%I(yWYox0s`Cu+#UYswIQ@>V zjyZC*6lx+0d*Js^JvKDabS#zZmrV`gMw@oygh7XV@CO0(h>5cuxwxL=)R-ooIIWeac6@cd1(8?GZc93sE=?|W*{I0D{;~5)cRC#d zg~oBwlSY%4(-)90VJ{yKY2B;tuOwt{$AhDAyUI{h!P{jp9)F6!I>Hy34i#3sJHYEdT2Z>k%mpRrNU)@tSqaH7~SmdEQKr}Fe z^5FwXdH+R={Q01RdkZ3g1_OFz9c{Fxlsn%=z z9ndSHbXI?HNW@F7H#LLfIp92*95XyDr6Tm-veP?{NX2E!Mk~c2^a8LpY$4f$o|g7w z74Tnd87Gr~1Yn}op(k!3{N(&)&28lGnQ9=7yYGn2f?UnTI`#rQY)`r9c4$~moY)?B_W080-=AQzDzb1g zN)CJRc!9ZxU35tF!#8ki$>2;x@@EF3QVEXQQ92W0!)2#x9f_yMo^uqv1`3xanJpi7kTo%LVe>FV zq+1xcVU@}EPVCehB-6^l@IjKk1L^j1lxBFTJITymBr-)97ZjfKuRLzK^AZ2?wm6@E zWz!E!mA$K|7(A8FCeL%~bsX!O@xQ5W7@`a)!j*@e%3m|Vi~Z&fQbEgL>o6i>e|s@7 z2^A&&#`%2#@Bz50r8{Rv*qjV$B!Kq^ST$`h{pp+g%2~57%hz#1C|_fgm~>vX0+jIi zOB{=Z-&a!z8@c%4y_vymR{taHCzYf`W2j-zZCX{SdBL^(^{0Kp5zh#t5ZQuy-B*k0 zjFJrusB#czyrCLpwdm$QdKJ*c4L=8mui-;ndtwG&Hp)_K8VjJ^xkH9u#2w@NHUbNpCSbP*a zRX?0fzc2izccL|DtJ;HW5ExjPD$SHU=C6vG?S9M|RVm7o@P94^a?7ko79Ro!P^@JZ zs9?%zM zB97%h8*xapW=l>3$svAJNQd%AP$h?zsYX2*&opIi9;mfBrB)J)V_l5kz=|XwVyU5H?wlIo_C+l9GD1ZcuXt>g0 zAHk97+p`NT`MLiHt0Bd;eA8wcN*x6qtH#%fUDSRbkhKSC0Ou$e40PkEm8JOj=Z{=Q zhIqZjL3TsX{~w3j#JL;&E!LI)t|?D zMuO)h6cR+{RtA%2fj59R44vJUf~gbl8ue!u#zbbB8y6UZB%LAF;G!1166};!u1rV) z@0%P{=ee)!-lzV>w?DGY2pcbysRTO0Ehj^6d8w<1fE@3)S1q z0*M63R=FJ~O_h6i3`Q*h&Xd+78wTTLu>H=lYssWK{~hlU=cz@JBZc9ZwPQ=DCJni7 zQ<0+dh(PPJw1l(*NufWcSKQ>L-=Pp%fO{byDC*N!g)RU8-UQ!_8k~W$7Mw#frH_UaOaDX<329^7MU>{J*L49Q z8bQOEH|s!v_Ev&2vnEpX>ttJGSf!g?uRlRp{QVV2@_bqZ!KnNfRS9eJ)C$Df`eIZs zRXEgQtX ziQd+V+$7}wA77Sg%F}GdA^uBiJ$!S&o(2&=jP9$2$r&}ioZHHo%+zuQltlg8ba2vk=>)z(QB*K= zU0i(vVMQcZ&;(=AG01fUrOAhwgTBZIi8@! zYOOZr+$huUbWZQf_qD%L3}pRq0{Yy8O}bpOI*vf+Y8<)Qe zL{8Leip*N$dOYHMUyX>a8*58Xp)VJ6>f6(mB@H#mlNe+Dt@rc{^kJE2>x^b`*qS4} z62{@KB5D2`b64e-31V(P!|jya#Zr1;Pbzpft!KpsIjw5#iR2t;JG%ykk*j}=P1hR{ zYKADw-=nxgq~!TD2x#;$b!r_$XHhK9_r`@juTrw_60t} zvMd@P{38HHi~Gvq2Kjl--nJSi?Pl?`#|;<>IqOa27?jB%Z||rviP=?q)}i~eb20yL zwexl!TKZ!W5L+je+U(6jTaoXabrhKW*-OPcF#eSDTX8W+T3<|vbh`i3%_@g`(4~l~ zjZocfDyv)KbXqyWR${|cbR+m9pZjU}rwb7LOPHZV2o!NDjm9u`u`4!?z-l#vfK++m zEW~C6k9I?>Py3c83j=Kyag6=kWYZ=jL~@U7ZCB=GqiMEK-8jzYf0^&>T+)wp=EA+0 z#n#q*IubfXvnP}2cIK5Z{u*ypC`VaEQ6tLJHg338gf-Qwaq6!`K?DfQ{G1F_XB}|q z(84d~8gWGi2d*b30L1n+q_iu4D-F#9uFqWY{Okz}Qz+LBWxK8ks?Enj%WB(mLMWm$Q1Y7gQC< z#Jvr^XUQ}hdX%5Klz}VjWGgV=r%>$65IIIM;@hu+d#9*a*h<2oK-i^ zwc{wvu|hE?r)S*@RH#}IQpK~(5bUH_r<@d}v@*;&*7+iOL4Z#Ho8v0OL=ffVb9ycY zZ?aq;f?F?S`gmlrN0)R0V!mXstWNVphj4&?`nn%n6R~K!CDYJmI!Q>zYdi;@R?jFj z;+DzHxIC!%G2hOowo}twAhbQ~c_9v^;&)Q<3Vt>jk-CD&elDPF%L;yUKnxRUR+TXR zc?_aiyX4ZHZ*mFfvzmtX)z7e;cBcK&x#Zr9eAE*oK4{|4e<~NN_Qh60ao^X=seRvG zdV`P-Q+gNyHk5$Ei!zV6@5=9yYTHadmouEra5Lf`42})Lz_O2%S5DXInHINBx_hN( zjB`JFbT~TCPmv63m~Ogz7N|qxS%BkJQn(q_rY?j*++5!M1b-&PM-^wkAgB(02Dy=g zdNX5@6CE>K_mMLgMsgajN>D(4qkzuPQQSCe8`J6tON!fypcRZh_#&q4LJR^{3#;#u z>Cw6pOiK@$V2o?=k3%|v=No|#egIs(y2dX<-0d_aS(x(bY;Gx8dve|sZfbB!aAOLD z3`IzneqgNl4l}Z-(;wO*wIbO;IgBOyRtzQlHQ8pd{kj3dGM~nA)nIWP<{6=k>^T@F zke7M7wB^;XJyaSQyJ=S&-4?5HzzpguT{mEPy3t__q!JbhI?}t5+{Eat#iJtQzuNLJ zu>Hq2=!J%s=+rL5LL0BOx+mhK9`|u}cGMND50~>f+?n=8{O1kTuj;Ml~J?pk*t=nF5Jq#+v>S1_EIH`9lK)JF*v|SD`JdUynOi}q{+ZF0K)Il-lh8No6L5e(8yT(J^ zrWk^~{mNpn4d&tXQzE9VLE~Yp1(RN5xUu~KT;2yP|HtXX#pULXo#e#n7|*U}bV-nx zenrGHzGa>^Zpi(EkLYa}SlG-8P(|g;6xa6UN>Nt7tBhAcL=HQP#PxJIO53XTRmve1 z-n9lfoixGn+>tihfd$}P^eQuXb!?0Z=SwhP^8;h#4&&TdG*EH+B3WVIj%}$T>U@X! zJk{48dtG(03upMFGkJ}Q}8x)jV}9?3@)IyT|k(ih`lhnMLiAYcf<|zJ-i3XjTrl5+GbDUv1r&!u05S!@C2P0 z9=C@LNxh`%Iz0y9I@mY7V*nxv+3NSt6v_Q)=0gT~oieA!1?8$O{1txSPc*I&eIqWv z)yq;0H*^RZ$9hQ3S$581*_?jbywrg4hS3E4wvAUa%-jnn-|1Q+F9?oE3~|;UA8+|! z=e0CycVJ;}%ipqs_D%UrM;(D<z?{f1|_eIgZukLjE>-(77*o=#c3jU6` zSJV7?U&quTmVnnbBh9KHmTmZRCDxr5JhF^x;mI8e=G+mNknB%E#zM+t;m5+Ts}h|iXG&sjTWsBAJ2{sN&jY0DfkQtXr4 z(=Tu?AwKZV8wl8;iG9Q0&D+qw~(@RaP3~id- z#u>&&xby|HLAhys9B4aFN&dZL{Dws6I?T`1l3(CISQ0zoGs;#T=m3`NiZ&jtGlsKR zZy+RkY8a>lq(xstpqbK|=K27_d4AqoE+iuX(BUg`z4|dl))VaLb!y7_z=B@_;G6L+H;o9W;EXjmxB((zi;X6uB zT>WXN8VIbJ1{E@D8AnNv4D*-LOt=STn2fv-B<$5O+Zs=r%)`e@{c}BCazH(2`<{<% z@u83s3?t0lBjUPU$Yz)&$YZV@;npG5RD%Q=cS+r>!zw zs}dkR58>@Rb@J?dmM-0A4S{?-K;2Rsath9PBv>NkY~Ki*L#7gW`f4v-+_stO5x?dNLwSk6C~L7x-T{^ z`aJ>R$@%}_io*)PVPmcx?nXtVP*SI8Q6;Cb@;L3!|8w*WxX6Z_GeweS4$;6OD&_yD zs-Y|v>THLrathrLQ^AtzVY+KGzG?{aFWCh(zLR(HhI=&%xZqWBe=@0>UDI-Xs%K*8 z!j}fEH+91PA-q8y!U$8Ds`)e)VQM1G*J!Uux!f8p76=r4Otwqv54bHsp7o+dN`@!V zG?+VFu7qX9`q?a~_>)fLbnO86$4~mi^3dFTFE;A@+HHPGMrNgWu$g>5vF9b@@Sa>B zK?m-oW-AQ<#SYk|^Voy?O5G;2y1bAN1&h_)ntz}MTy%1MWB4PuDfhHxg#wMU2UAX$ zHTUYI;(Jui^Ac+ePvKMd-%5oTeWW`hj&MKg5Za9J-^~-&y(!b1S|&Z`BQow~Fx@EJ z;8z^?0i7=Z1#&{g^}~z1`fmyr^SJDtaXo31nPk`0E~>uE=6ey56N}U2**IKWH;YXa zKHG6w2GdY>2a8;mkDa1_7L`C0k;i{`t7`uk$Iw4<(2J!d)2Ong!I$O^3bsP_O%;Z2HQW0+C+IY-_RmXS`%k`FiBI1v z!;xJr7O?WqcoMB;Nz)TriMgJn&G%s*28yPvJ~H}d9At1BXV_cha`$j1mG+A<1c_u5 zpB|b>3AtwLWwIE8t(ng5i|`>F)w;4*Pw~$?@N~)h0`nobn`%nTvcjL-(me;)K(_{6 zK9^ZrYc3yik7o#>C83X%kfGT|c8oLdxLrJf`?z(|JbS zuMj6Xh0Obu2g=a`L{t@uvxv3lSCFy%LGtRpkFGZH`ffp*P@+m#02Rg!Dmo1Y7hhh@(EHlz`tz281v& zHyA`5Y*#wB{&F4$(K4VAhOpz^IixlqxHr@WL6U(@@Cb0x_O=H>cUIqN%3=7zgRA?w z&lUE{9pBLgnUvHkpBQ?o3!21NiejyoJVmR5#iE?!@1(ye+QlP=S$oH%SP$qz$B4Qdu)3p@)*Rqnwg(`XH!b$7&Z*js`lHH?&2l`s=Mk{OS@>-|vqAagqG2 zbRu}ULOIz#i>{|jRnpgd4X8VEp4mF6;=aEhwIFYZx^WZ#UQMxHA`EkJ03@bP=X|Nx zi(oz`?aBlq&D&anunrc0P01e#!?eYVRnqR2zUJs11&xIys@`6jBL1P>&u#SlR@9pK zNp{|Ex&rQzn-1CPZe%UHoDRl8Ak?@p)9-~qalt9UKz_Om4g+EIYkM%&f(D;I5>Psr zfz+Ewz$(>0h=-=T*l$g*!*}@F)O?y)FMLrL8u)8w%&p*rewC65?ZNPwWTsH@xS9iq zK*H=Bal56{y1U(SEcUXMFPnf}`;t{!&lTD*js~Jx1dOEm(r(j(YO)D7W<_w;2`iK{bqZiGr&z6#rxO+bGKdBlIx zFR+-+7gGO)&v6U#>hWC_S%nci{N_pRrcRDcLN26@eCSVH*)xI6xf!T)KM{~`Fu&2s zh*j6+WBUjQ<9*4Kxp@`k{I}_B>*ℜe_e=R*315|9O7aws5e~w_63SRTp7|s3KZr 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 From 6f16f4443833917f9c70de924c818431b1ec64da Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 17 Nov 2015 11:19:58 -0800 Subject: [PATCH 308/314] VERSION 1.1.0: Win/Mac UI improvements, improved NAT-t, CIRCUIT_TEST, and more! ZeroTier 1.1.0 introduces a number of fixes and improvements in several areas. We incremented the secondary version to indicate the significance of this release. Version numbering has been a bit ad-hoc in the past. In future versions we will adopt the following scheme: odd-numbered revision numbers like 1.1.1 will indicate development versions, while even numbered ones like 1.1.2 will indicate tagged releases. The public git repo branching has also been revised: master will always be the latest tagged release, dev will be usually-working development, and edge will host maybe-broken "bleeding edge" development. Pull requests on GitHub should generally be made against dev, not master or edge. Other branches that may appear from time to time may be feature or experimental branches. Only master is confirmed good, with dev usually being okay but not guaranteed to be such. (To the extent that any software is ever guaranteed to be anything.) Change summary: User-facing changes and improvements: - Windows now has a new .NET-based native UI, which replaces the old WebControl wrapper around the React UI. This just didn't work well on older Windows systems, and we did not want to bundle 40+ megabytes of web browser with our app just for its very simple UI. - The web UI (still used for Mac and usable in Linux as well) is updated with improved look and simplifications. - Both UIs no longer have the "Peers" tab, since several users reported that non- technical users found this confusing and even alarming (does this mean people can access my system?). This information is visibile with "listpeers" from the command line (zerotier-cli). New features: - Virtual networks that use our RFC4193-based IPv6 numbering scheme now emulate IPv6 NDP for queries that target these addresses within the same network. This allows for faster multicast-free connection init and improved security since the address is now hard-wired to the device ID (which is a crypto token). This does not affect IPv6 NDP for other IPv6 addresses or link-local, which will continue to work normally. This also opens the potential for a reduced footprint multicast-free build for embedded applications. - This version includes beta support for a feature called CIRCUIT_TEST. Network controllers for networks you have joined can now send a special message called CIRCUIT_TEST which allows for ZeroTier-layer link testing and remote diagnosis of link issues. Any operator of a network controller can do this; more documentation will be forthcoming. The only information that may be gathered in this way is IP addressing info and very basic system info (OS, 32/64 bit, ZeroTier version). No personal information, hard drive data, location, or other private info is available. This can only be ordered by a controller of a network you have joined and is secured using cryptographic signatures. - This version includes an alpha version of clustering a.k.a. multi-homing! This powerful feature allows for a single ZeroTier device to be run from multiple endpoints, with connecting peers being handed off to endpoints that are closer via GeoIP lookup and/or are more lightly loaded. Currently this is only suitable for use in our soon-to-be-upgraded root server infrastructure (details will be blogged soon), but in the future it will be capable of hosting multi-homed devices on user networks. This will allow things like (for example) a geo- clustered Cassandra server that appears behind a single IP on a virtual LAN. This feature must be enabled with the ZT_ENABLE_CLUSTER=1 build option. Bug fixes and other improvements (including performance!): - A faster version of the Poly1305 cryptographic MAC function was substituted for sometimes greatly improved performance. - C++ STL std::map was replaced throughout the entire core with a hand-rolled Hashtable implementation for improved performance and in some cases a reduced memory footprint. Some maps are still used in peripheral code that is not performance critical or where ordered keys are needed. - The zerotier-cli and zerotier-idtool symbolic links are now created in /usr/local/bin on OSX to comply with El Capitan file security restrictions. - The OSX tap device driver has been updated. This update may fix issues that some users have reported with bridging on OSX. This new tap device driver drops 32-bit support, but if you have a 32-bit system you can manually install the old driver from ext/bin/tap-mac. - Mac users could experience a problem with the UI if they installed ZeroTier, then uninstalled it, then installed again. This is now fixed. - UPnP port mappings should work better on some routers, and a different local port is now used for UPnP mapped traffic vs. NAT-t'd traffic to get around a bug in several popular mid-tier routers where using UPnP mapping alongside traditional NAT traversal made a port unreachable. - Debian package now builds with the right arch label on armv7l systems (Pi 2) - The old "root topology" has been replaced with a similar but better thought out concept called a World. The World defines the root servers and possibly in the future other things, and can be updated in-band from trusted peers allowing for software-upgrade-free network upgrades to keep up with growing demand. See node/World.hpp for details. - A fix was made to "self-awareness," which keeps track of your external IP info and adapts to changes, to eliminate a problem that could cause "link thrashing" behind some symmetric NATs. - Escalating UDP TTLs was re-introduced to better transit some port-restricted cone NATs such as Linux IP MASQ (used for Docker). - An otherwise harmless crash-on-exit bug in the network controller was fixed. - All new direct links are now confirmed in both directions. This adds a very small amount of initial HELLO/OK traffic but fixes some edge cases where an incomplete or unidirectional path might be used. - [SECURITY] Better rate limiting was put in place for VERB_PUSH_DIRECT_PATHS to prevent potential abuse for amplification attacks. - [SECURITY] Build flags were tweaked on OSX to ensure that all code including dependency libraries are built with full stack canary protection and ASLR support. Visit https://www.zerotier.com/blog or follow @ZeroTier on Twitter for updates and announcements! --- ext/installfiles/mac/postinst.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ext/installfiles/mac/postinst.sh b/ext/installfiles/mac/postinst.sh index 47d9ddd96..da15f9c84 100755 --- a/ext/installfiles/mac/postinst.sh +++ b/ext/installfiles/mac/postinst.sh @@ -2,9 +2,26 @@ export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin +OSX_RELEASE=`sw_vers -productVersion | cut -d . -f 1,2` + launchctl unload /Library/LaunchDaemons/com.zerotier.one.plist >>/dev/null 2>&1 +sleep 1 cd "/Library/Application Support/ZeroTier/One" + +if [ "$OSX_RELEASE" = "10.7" ]; then + # OSX 10.7 cannot use the new tap driver since the new way of kext signing + # is not backward compatible. Pull the old one for 10.7 users and replace. + # We use https to fetch and check hash as an extra added measure. + rm -f tap.kext.10_7.tar.gz + curl -s https://download.zerotier.com/tap.kext.10_7.tar.gz >tap.kext.10_7.tar.gz + if [ -s tap.kext.10_7.tar.gz -a "`shasum -a 256 tap.kext.10_7.tar.gz | cut -d ' ' -f 1`" = "e133d4832cef571621d3618f417381b44f51a76ed625089fb4e545e65d3ef2a9" ]; then + rm -rf tap.kext + tar -xzf tap.kext.10_7.tar.gz + fi + rm -f tap.kext.10_7.tar.gz +fi + rm -rf node.log node.log.old root-topology shutdownIfUnreadable autoupdate.log updates.d chown -R 0 tap.kext chgrp -R 0 tap.kext From 399b2e9e26bc2f5bae2f78cb41d8e977aa327bc9 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 17 Nov 2015 19:16:10 -0800 Subject: [PATCH 309/314] forgot to submit this. Add DeferredPackets.cpp to the android makefile --- java/jni/Android.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/java/jni/Android.mk b/java/jni/Android.mk index 3da3b04b6..5c2f1c790 100644 --- a/java/jni/Android.mk +++ b/java/jni/Android.mk @@ -15,6 +15,7 @@ LOCAL_SRC_FILES := \ $(ZT1)/ext/http-parser/http_parser.c \ $(ZT1)/node/C25519.cpp \ $(ZT1)/node/CertificateOfMembership.cpp \ + $(ZT1)/node/DeferredPackets.cpp \ $(ZT1)/node/Dictionary.cpp \ $(ZT1)/node/Identity.cpp \ $(ZT1)/node/IncomingPacket.cpp \ From 375aae44e4fd89d162b19749700a1e4ba17d5604 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Thu, 19 Nov 2015 16:36:15 -0800 Subject: [PATCH 310/314] . --- cluster-geo/cluster-geo/cluster-geo.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cluster-geo/cluster-geo/cluster-geo.js b/cluster-geo/cluster-geo/cluster-geo.js index 0dea22f27..3cbc60be3 100644 --- a/cluster-geo/cluster-geo/cluster-geo.js +++ b/cluster-geo/cluster-geo/cluster-geo.js @@ -8,9 +8,9 @@ var CACHE_TTL = (60 * 60 * 24 * 120 * 1000); // 120 days // Globally increase event emitter maximum listeners -var EventEmitter = require('events'); -EventEmitter.prototype._maxListeners = 1000; -process.setMaxListeners(1000); +//var EventEmitter = require('events'); +//EventEmitter.prototype._maxListeners = 1000; +//process.setMaxListeners(1000); // Load config var config = require(__dirname + '/config.js'); From 1fde17bacb565bfc1536ef83276658e8bb6f0a0c Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 20 Nov 2015 11:46:10 -0800 Subject: [PATCH 311/314] Update World to reflect Alice and Bob in their final glory. Will hot-push this soon. --- world/mkworld.cpp | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/world/mkworld.cpp b/world/mkworld.cpp index 42a617234..551ba2fd6 100644 --- a/world/mkworld.cpp +++ b/world/mkworld.cpp @@ -121,26 +121,48 @@ int main(int argc,char **argv) const uint64_t id = ZT_WORLD_ID_EARTH; const uint64_t ts = 1447696577275ULL; // November 16th, 2015 ~9:56AM + // Alice + roots.push_back(World::Root()); + roots.back().identity = Identity("9d219039f3:0:01f0922a98e3b34ebcbff333269dc265d7a020aab69d72be4d4acc9c8c9294785771256cd1d942a90d1bd1d2dca3ea84ef7d85afe6611fb43ff0b74126d90a6e"); + roots.back().stableEndpoints.push_back(InetAddress("188.166.94.177/9993")); // Amsterdam + roots.back().stableEndpoints.push_back(InetAddress("2a03:b0c0:2:d0::7d:1/9993")); // Amsterdam + roots.back().stableEndpoints.push_back(InetAddress("154.66.197.33/9993")); // Johannesburg + roots.back().stableEndpoints.push_back(InetAddress("2c0f:f850:154:197::33/9993")); // Johannesburg + roots.back().stableEndpoints.push_back(InetAddress("159.203.97.171/9993")); // New York + roots.back().stableEndpoints.push_back(InetAddress("2604:a880:800:a1::54:6001/9993")); // New York + roots.back().stableEndpoints.push_back(InetAddress("169.57.143.104/9993")); // Sao Paolo + roots.back().stableEndpoints.push_back(InetAddress("2607:f0d0:1d01:57::2/9993")); // Sao Paolo + roots.back().stableEndpoints.push_back(InetAddress("107.170.197.14/9993")); // San Francisco + roots.back().stableEndpoints.push_back(InetAddress("2604:a880:1:20::200:e001/9993")); // San Francisco + roots.back().stableEndpoints.push_back(InetAddress("128.199.197.217/9993")); // Singapore + roots.back().stableEndpoints.push_back(InetAddress("2400:6180:0:d0::b7:4001/9993")); // Singapore + + // Bob + roots.push_back(World::Root()); + roots.back().identity = Identity("8841408a2e:0:bb1d31f2c323e264e9e64172c1a74f77899555ed10751cd56e86405cde118d02dffe555d462ccf6a85b5631c12350c8d5dc409ba10b9025d0f445cf449d92b1c"); + roots.back().stableEndpoints.push_back(InetAddress("45.32.198.130/9993")); // Dallas + roots.back().stableEndpoints.push_back(InetAddress("2001:19f0:6400:81c3:5400:00ff:fe18:1d61/9993")); // Dallas + roots.back().stableEndpoints.push_back(InetAddress("46.101.160.249/9993")); // Frankfurt + roots.back().stableEndpoints.push_back(InetAddress("2a03:b0c0:3:d0::6a:3001/9993")); // Frankfurt + roots.back().stableEndpoints.push_back(InetAddress("107.191.46.210/9993")); // Paris + roots.back().stableEndpoints.push_back(InetAddress("2001:19f0:6800:83a4::64/9993")); // Paris + roots.back().stableEndpoints.push_back(InetAddress("45.32.246.179/9993")); // Sydney + roots.back().stableEndpoints.push_back(InetAddress("2001:19f0:5800:8bf8:5400:ff:fe15:b39a/9993")); // Sydney + roots.back().stableEndpoints.push_back(InetAddress("45.32.248.87/9993")); // Tokyo + roots.back().stableEndpoints.push_back(InetAddress("2001:19f0:7000:9bc9:5400:00ff:fe15:c4f5/9993")); // Tokyo + roots.back().stableEndpoints.push_back(InetAddress("159.203.2.154/9993")); // Toronto + roots.back().stableEndpoints.push_back(InetAddress("2604:a880:cad:d0::26:7001/9993")); // Toronto + // old US-SFO roots.push_back(World::Root()); roots.back().identity = Identity("7e19876aba:0:2a6e2b2318930f60eb097f70d0f4b028b2cd6d3d0c63c014b9039ff35390e41181f216fb2e6fa8d95c1ee9667156411905c3dccfea78d8c6dfafba688170b3fa"); roots.back().stableEndpoints.push_back(InetAddress("198.199.97.220/9993")); - // old EU-PARIS - roots.push_back(World::Root()); - roots.back().identity = Identity("8841408a2e:0:bb1d31f2c323e264e9e64172c1a74f77899555ed10751cd56e86405cde118d02dffe555d462ccf6a85b5631c12350c8d5dc409ba10b9025d0f445cf449d92b1c"); - roots.back().stableEndpoints.push_back(InetAddress("107.191.46.210/9993")); - // old US-NYC roots.push_back(World::Root()); roots.back().identity = Identity("8acf059fe3:0:482f6ee5dfe902319b419de5bdc765209c0ecda38c4d6e4fcf0d33658398b4527dcd22f93112fb9befd02fd78bf7261b333fc105d192a623ca9e50fc60b374a5"); roots.back().stableEndpoints.push_back(InetAddress("162.243.77.111/9993")); - // old AP-SNG - roots.push_back(World::Root()); - roots.back().identity = Identity("9d219039f3:0:01f0922a98e3b34ebcbff333269dc265d7a020aab69d72be4d4acc9c8c9294785771256cd1d942a90d1bd1d2dca3ea84ef7d85afe6611fb43ff0b74126d90a6e"); - roots.back().stableEndpoints.push_back(InetAddress("128.199.197.217/9993")); - // END WORLD DEFINITION // ========================================================================= From ce5b7f0305c40b649699110b0b5d16b23238acfa Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 20 Nov 2015 12:49:23 -0800 Subject: [PATCH 312/314] The World as of 2015-11-20 --- node/Topology.cpp | 9 +++++++-- world/earth-2015-11-20.bin | Bin 0 -> 792 bytes world/mkworld.cpp | 16 +++------------- 3 files changed, 10 insertions(+), 15 deletions(-) create mode 100644 world/earth-2015-11-20.bin diff --git a/node/Topology.cpp b/node/Topology.cpp index c7de22a8b..d94975dd3 100644 --- a/node/Topology.cpp +++ b/node/Topology.cpp @@ -35,8 +35,13 @@ namespace ZeroTier { -#define ZT_DEFAULT_WORLD_LENGTH 494 -static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x51,0x11,0x70,0xb2,0xfb,0xb8,0xb3,0x88,0xa4,0x69,0x22,0x14,0x91,0xaa,0x9a,0xcd,0x66,0xcc,0x76,0x4c,0xde,0xfd,0x56,0x03,0x9f,0x10,0x67,0xae,0x15,0xe6,0x9c,0x6f,0xb4,0x2d,0x7b,0x55,0x33,0x0e,0x3f,0xda,0xac,0x52,0x9c,0x07,0x92,0xfd,0x73,0x40,0xa6,0xaa,0x21,0xab,0xa8,0xa4,0x89,0xfd,0xae,0xa4,0x4a,0x39,0xbf,0x2d,0x00,0x65,0x9a,0xc9,0xc8,0x18,0xeb,0x80,0x31,0xa4,0x65,0x95,0x45,0x06,0x1c,0xfb,0xc2,0x4e,0x5d,0xe7,0x0a,0x40,0x7a,0x97,0xce,0x36,0xa2,0x3d,0x05,0xca,0x87,0xc7,0x59,0x27,0x5c,0x8b,0x0d,0x4c,0xb4,0xbb,0x26,0x2f,0x77,0x17,0x5e,0xb7,0x4d,0xb8,0xd3,0xb4,0xe9,0x23,0x5d,0xcc,0xa2,0x71,0xa8,0xdf,0xf1,0x23,0xa3,0xb2,0x66,0x74,0xea,0xe5,0xdc,0x8d,0xef,0xd3,0x0a,0xa9,0xac,0xcb,0xda,0x93,0xbd,0x6c,0xcd,0x43,0x1d,0xa7,0x98,0x6a,0xde,0x70,0xc0,0xc6,0x1c,0xaf,0xf0,0xfd,0x7f,0x8a,0xb9,0x76,0x13,0xe1,0xde,0x4f,0xf3,0xd6,0x13,0x04,0x7e,0x19,0x87,0x6a,0xba,0x00,0x2a,0x6e,0x2b,0x23,0x18,0x93,0x0f,0x60,0xeb,0x09,0x7f,0x70,0xd0,0xf4,0xb0,0x28,0xb2,0xcd,0x6d,0x3d,0x0c,0x63,0xc0,0x14,0xb9,0x03,0x9f,0xf3,0x53,0x90,0xe4,0x11,0x81,0xf2,0x16,0xfb,0x2e,0x6f,0xa8,0xd9,0x5c,0x1e,0xe9,0x66,0x71,0x56,0x41,0x19,0x05,0xc3,0xdc,0xcf,0xea,0x78,0xd8,0xc6,0xdf,0xaf,0xba,0x68,0x81,0x70,0xb3,0xfa,0x00,0x01,0x04,0xc6,0xc7,0x61,0xdc,0x27,0x09,0x88,0x41,0x40,0x8a,0x2e,0x00,0xbb,0x1d,0x31,0xf2,0xc3,0x23,0xe2,0x64,0xe9,0xe6,0x41,0x72,0xc1,0xa7,0x4f,0x77,0x89,0x95,0x55,0xed,0x10,0x75,0x1c,0xd5,0x6e,0x86,0x40,0x5c,0xde,0x11,0x8d,0x02,0xdf,0xfe,0x55,0x5d,0x46,0x2c,0xcf,0x6a,0x85,0xb5,0x63,0x1c,0x12,0x35,0x0c,0x8d,0x5d,0xc4,0x09,0xba,0x10,0xb9,0x02,0x5d,0x0f,0x44,0x5c,0xf4,0x49,0xd9,0x2b,0x1c,0x00,0x01,0x04,0x6b,0xbf,0x2e,0xd2,0x27,0x09,0x8a,0xcf,0x05,0x9f,0xe3,0x00,0x48,0x2f,0x6e,0xe5,0xdf,0xe9,0x02,0x31,0x9b,0x41,0x9d,0xe5,0xbd,0xc7,0x65,0x20,0x9c,0x0e,0xcd,0xa3,0x8c,0x4d,0x6e,0x4f,0xcf,0x0d,0x33,0x65,0x83,0x98,0xb4,0x52,0x7d,0xcd,0x22,0xf9,0x31,0x12,0xfb,0x9b,0xef,0xd0,0x2f,0xd7,0x8b,0xf7,0x26,0x1b,0x33,0x3f,0xc1,0x05,0xd1,0x92,0xa6,0x23,0xca,0x9e,0x50,0xfc,0x60,0xb3,0x74,0xa5,0x00,0x01,0x04,0xa2,0xf3,0x4d,0x6f,0x27,0x09,0x9d,0x21,0x90,0x39,0xf3,0x00,0x01,0xf0,0x92,0x2a,0x98,0xe3,0xb3,0x4e,0xbc,0xbf,0xf3,0x33,0x26,0x9d,0xc2,0x65,0xd7,0xa0,0x20,0xaa,0xb6,0x9d,0x72,0xbe,0x4d,0x4a,0xcc,0x9c,0x8c,0x92,0x94,0x78,0x57,0x71,0x25,0x6c,0xd1,0xd9,0x42,0xa9,0x0d,0x1b,0xd1,0xd2,0xdc,0xa3,0xea,0x84,0xef,0x7d,0x85,0xaf,0xe6,0x61,0x1f,0xb4,0x3f,0xf0,0xb7,0x41,0x26,0xd9,0x0a,0x6e,0x00,0x01,0x04,0x80,0xc7,0xc5,0xd9,0x27,0x09}; +// 2015-11-16 -- The Fabulous Four (should have named them after Beatles!) +//#define ZT_DEFAULT_WORLD_LENGTH 494 +//static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x51,0x11,0x70,0xb2,0xfb,0xb8,0xb3,0x88,0xa4,0x69,0x22,0x14,0x91,0xaa,0x9a,0xcd,0x66,0xcc,0x76,0x4c,0xde,0xfd,0x56,0x03,0x9f,0x10,0x67,0xae,0x15,0xe6,0x9c,0x6f,0xb4,0x2d,0x7b,0x55,0x33,0x0e,0x3f,0xda,0xac,0x52,0x9c,0x07,0x92,0xfd,0x73,0x40,0xa6,0xaa,0x21,0xab,0xa8,0xa4,0x89,0xfd,0xae,0xa4,0x4a,0x39,0xbf,0x2d,0x00,0x65,0x9a,0xc9,0xc8,0x18,0xeb,0x80,0x31,0xa4,0x65,0x95,0x45,0x06,0x1c,0xfb,0xc2,0x4e,0x5d,0xe7,0x0a,0x40,0x7a,0x97,0xce,0x36,0xa2,0x3d,0x05,0xca,0x87,0xc7,0x59,0x27,0x5c,0x8b,0x0d,0x4c,0xb4,0xbb,0x26,0x2f,0x77,0x17,0x5e,0xb7,0x4d,0xb8,0xd3,0xb4,0xe9,0x23,0x5d,0xcc,0xa2,0x71,0xa8,0xdf,0xf1,0x23,0xa3,0xb2,0x66,0x74,0xea,0xe5,0xdc,0x8d,0xef,0xd3,0x0a,0xa9,0xac,0xcb,0xda,0x93,0xbd,0x6c,0xcd,0x43,0x1d,0xa7,0x98,0x6a,0xde,0x70,0xc0,0xc6,0x1c,0xaf,0xf0,0xfd,0x7f,0x8a,0xb9,0x76,0x13,0xe1,0xde,0x4f,0xf3,0xd6,0x13,0x04,0x7e,0x19,0x87,0x6a,0xba,0x00,0x2a,0x6e,0x2b,0x23,0x18,0x93,0x0f,0x60,0xeb,0x09,0x7f,0x70,0xd0,0xf4,0xb0,0x28,0xb2,0xcd,0x6d,0x3d,0x0c,0x63,0xc0,0x14,0xb9,0x03,0x9f,0xf3,0x53,0x90,0xe4,0x11,0x81,0xf2,0x16,0xfb,0x2e,0x6f,0xa8,0xd9,0x5c,0x1e,0xe9,0x66,0x71,0x56,0x41,0x19,0x05,0xc3,0xdc,0xcf,0xea,0x78,0xd8,0xc6,0xdf,0xaf,0xba,0x68,0x81,0x70,0xb3,0xfa,0x00,0x01,0x04,0xc6,0xc7,0x61,0xdc,0x27,0x09,0x88,0x41,0x40,0x8a,0x2e,0x00,0xbb,0x1d,0x31,0xf2,0xc3,0x23,0xe2,0x64,0xe9,0xe6,0x41,0x72,0xc1,0xa7,0x4f,0x77,0x89,0x95,0x55,0xed,0x10,0x75,0x1c,0xd5,0x6e,0x86,0x40,0x5c,0xde,0x11,0x8d,0x02,0xdf,0xfe,0x55,0x5d,0x46,0x2c,0xcf,0x6a,0x85,0xb5,0x63,0x1c,0x12,0x35,0x0c,0x8d,0x5d,0xc4,0x09,0xba,0x10,0xb9,0x02,0x5d,0x0f,0x44,0x5c,0xf4,0x49,0xd9,0x2b,0x1c,0x00,0x01,0x04,0x6b,0xbf,0x2e,0xd2,0x27,0x09,0x8a,0xcf,0x05,0x9f,0xe3,0x00,0x48,0x2f,0x6e,0xe5,0xdf,0xe9,0x02,0x31,0x9b,0x41,0x9d,0xe5,0xbd,0xc7,0x65,0x20,0x9c,0x0e,0xcd,0xa3,0x8c,0x4d,0x6e,0x4f,0xcf,0x0d,0x33,0x65,0x83,0x98,0xb4,0x52,0x7d,0xcd,0x22,0xf9,0x31,0x12,0xfb,0x9b,0xef,0xd0,0x2f,0xd7,0x8b,0xf7,0x26,0x1b,0x33,0x3f,0xc1,0x05,0xd1,0x92,0xa6,0x23,0xca,0x9e,0x50,0xfc,0x60,0xb3,0x74,0xa5,0x00,0x01,0x04,0xa2,0xf3,0x4d,0x6f,0x27,0x09,0x9d,0x21,0x90,0x39,0xf3,0x00,0x01,0xf0,0x92,0x2a,0x98,0xe3,0xb3,0x4e,0xbc,0xbf,0xf3,0x33,0x26,0x9d,0xc2,0x65,0xd7,0xa0,0x20,0xaa,0xb6,0x9d,0x72,0xbe,0x4d,0x4a,0xcc,0x9c,0x8c,0x92,0x94,0x78,0x57,0x71,0x25,0x6c,0xd1,0xd9,0x42,0xa9,0x0d,0x1b,0xd1,0xd2,0xdc,0xa3,0xea,0x84,0xef,0x7d,0x85,0xaf,0xe6,0x61,0x1f,0xb4,0x3f,0xf0,0xb7,0x41,0x26,0xd9,0x0a,0x6e,0x00,0x01,0x04,0x80,0xc7,0xc5,0xd9,0x27,0x09}; + +// 2015-11-20 -- Alice and Bob are live, and we're now IPv6 dual-stack! +#define ZT_DEFAULT_WORLD_LENGTH 792 +static const unsigned char ZT_DEFAULT_WORLD[ZT_DEFAULT_WORLD_LENGTH] = {0x01,0x00,0x00,0x00,0x00,0x08,0xea,0xc9,0x0a,0x00,0x00,0x01,0x51,0x26,0x6f,0x7c,0x8a,0xb8,0xb3,0x88,0xa4,0x69,0x22,0x14,0x91,0xaa,0x9a,0xcd,0x66,0xcc,0x76,0x4c,0xde,0xfd,0x56,0x03,0x9f,0x10,0x67,0xae,0x15,0xe6,0x9c,0x6f,0xb4,0x2d,0x7b,0x55,0x33,0x0e,0x3f,0xda,0xac,0x52,0x9c,0x07,0x92,0xfd,0x73,0x40,0xa6,0xaa,0x21,0xab,0xa8,0xa4,0x89,0xfd,0xae,0xa4,0x4a,0x39,0xbf,0x2d,0x00,0x65,0x9a,0xc9,0xc8,0x18,0xeb,0xe8,0x0a,0xf5,0xbc,0xf8,0x3d,0x97,0xcd,0xc3,0xf8,0xe2,0x41,0x16,0x42,0x0f,0xc7,0x76,0x8e,0x07,0xf3,0x7e,0x9e,0x7d,0x1b,0xb3,0x23,0x21,0x79,0xce,0xb9,0xd0,0xcb,0xb5,0x94,0x7b,0x89,0x21,0x57,0x72,0xf6,0x70,0xa1,0xdd,0x67,0x38,0xcf,0x45,0x45,0xc2,0x8d,0x46,0xec,0x00,0x2c,0xe0,0x2a,0x63,0x3f,0x63,0x8d,0x33,0x08,0x51,0x07,0x77,0x81,0x5b,0x32,0x49,0xae,0x87,0x89,0xcf,0x31,0xaa,0x41,0xf1,0x52,0x97,0xdc,0xa2,0x55,0xe1,0x4a,0x6e,0x3c,0x04,0xf0,0x4f,0x8a,0x0e,0xe9,0xca,0xec,0x24,0x30,0x04,0x9d,0x21,0x90,0x39,0xf3,0x00,0x01,0xf0,0x92,0x2a,0x98,0xe3,0xb3,0x4e,0xbc,0xbf,0xf3,0x33,0x26,0x9d,0xc2,0x65,0xd7,0xa0,0x20,0xaa,0xb6,0x9d,0x72,0xbe,0x4d,0x4a,0xcc,0x9c,0x8c,0x92,0x94,0x78,0x57,0x71,0x25,0x6c,0xd1,0xd9,0x42,0xa9,0x0d,0x1b,0xd1,0xd2,0xdc,0xa3,0xea,0x84,0xef,0x7d,0x85,0xaf,0xe6,0x61,0x1f,0xb4,0x3f,0xf0,0xb7,0x41,0x26,0xd9,0x0a,0x6e,0x00,0x0c,0x04,0xbc,0xa6,0x5e,0xb1,0x27,0x09,0x06,0x2a,0x03,0xb0,0xc0,0x00,0x02,0x00,0xd0,0x00,0x00,0x00,0x00,0x00,0x7d,0x00,0x01,0x27,0x09,0x04,0x9a,0x42,0xc5,0x21,0x27,0x09,0x06,0x2c,0x0f,0xf8,0x50,0x01,0x54,0x01,0x97,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x27,0x09,0x04,0x9f,0xcb,0x61,0xab,0x27,0x09,0x06,0x26,0x04,0xa8,0x80,0x08,0x00,0x00,0xa1,0x00,0x00,0x00,0x00,0x00,0x54,0x60,0x01,0x27,0x09,0x04,0xa9,0x39,0x8f,0x68,0x27,0x09,0x06,0x26,0x07,0xf0,0xd0,0x1d,0x01,0x00,0x57,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x27,0x09,0x04,0x6b,0xaa,0xc5,0x0e,0x27,0x09,0x06,0x26,0x04,0xa8,0x80,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x02,0x00,0xe0,0x01,0x27,0x09,0x04,0x80,0xc7,0xc5,0xd9,0x27,0x09,0x06,0x24,0x00,0x61,0x80,0x00,0x00,0x00,0xd0,0x00,0x00,0x00,0x00,0x00,0xb7,0x40,0x01,0x27,0x09,0x88,0x41,0x40,0x8a,0x2e,0x00,0xbb,0x1d,0x31,0xf2,0xc3,0x23,0xe2,0x64,0xe9,0xe6,0x41,0x72,0xc1,0xa7,0x4f,0x77,0x89,0x95,0x55,0xed,0x10,0x75,0x1c,0xd5,0x6e,0x86,0x40,0x5c,0xde,0x11,0x8d,0x02,0xdf,0xfe,0x55,0x5d,0x46,0x2c,0xcf,0x6a,0x85,0xb5,0x63,0x1c,0x12,0x35,0x0c,0x8d,0x5d,0xc4,0x09,0xba,0x10,0xb9,0x02,0x5d,0x0f,0x44,0x5c,0xf4,0x49,0xd9,0x2b,0x1c,0x00,0x0c,0x04,0x2d,0x20,0xc6,0x82,0x27,0x09,0x06,0x20,0x01,0x19,0xf0,0x64,0x00,0x81,0xc3,0x54,0x00,0x00,0xff,0xfe,0x18,0x1d,0x61,0x27,0x09,0x04,0x2e,0x65,0xa0,0xf9,0x27,0x09,0x06,0x2a,0x03,0xb0,0xc0,0x00,0x03,0x00,0xd0,0x00,0x00,0x00,0x00,0x00,0x6a,0x30,0x01,0x27,0x09,0x04,0x6b,0xbf,0x2e,0xd2,0x27,0x09,0x06,0x20,0x01,0x19,0xf0,0x68,0x00,0x83,0xa4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x27,0x09,0x04,0x2d,0x20,0xf6,0xb3,0x27,0x09,0x06,0x20,0x01,0x19,0xf0,0x58,0x00,0x8b,0xf8,0x54,0x00,0x00,0xff,0xfe,0x15,0xb3,0x9a,0x27,0x09,0x04,0x2d,0x20,0xf8,0x57,0x27,0x09,0x06,0x20,0x01,0x19,0xf0,0x70,0x00,0x9b,0xc9,0x54,0x00,0x00,0xff,0xfe,0x15,0xc4,0xf5,0x27,0x09,0x04,0x9f,0xcb,0x02,0x9a,0x27,0x09,0x06,0x26,0x04,0xa8,0x80,0x0c,0xad,0x00,0xd0,0x00,0x00,0x00,0x00,0x00,0x26,0x70,0x01,0x27,0x09,0x7e,0x19,0x87,0x6a,0xba,0x00,0x2a,0x6e,0x2b,0x23,0x18,0x93,0x0f,0x60,0xeb,0x09,0x7f,0x70,0xd0,0xf4,0xb0,0x28,0xb2,0xcd,0x6d,0x3d,0x0c,0x63,0xc0,0x14,0xb9,0x03,0x9f,0xf3,0x53,0x90,0xe4,0x11,0x81,0xf2,0x16,0xfb,0x2e,0x6f,0xa8,0xd9,0x5c,0x1e,0xe9,0x66,0x71,0x56,0x41,0x19,0x05,0xc3,0xdc,0xcf,0xea,0x78,0xd8,0xc6,0xdf,0xaf,0xba,0x68,0x81,0x70,0xb3,0xfa,0x00,0x01,0x04,0xc6,0xc7,0x61,0xdc,0x27,0x09,0x8a,0xcf,0x05,0x9f,0xe3,0x00,0x48,0x2f,0x6e,0xe5,0xdf,0xe9,0x02,0x31,0x9b,0x41,0x9d,0xe5,0xbd,0xc7,0x65,0x20,0x9c,0x0e,0xcd,0xa3,0x8c,0x4d,0x6e,0x4f,0xcf,0x0d,0x33,0x65,0x83,0x98,0xb4,0x52,0x7d,0xcd,0x22,0xf9,0x31,0x12,0xfb,0x9b,0xef,0xd0,0x2f,0xd7,0x8b,0xf7,0x26,0x1b,0x33,0x3f,0xc1,0x05,0xd1,0x92,0xa6,0x23,0xca,0x9e,0x50,0xfc,0x60,0xb3,0x74,0xa5,0x00,0x01,0x04,0xa2,0xf3,0x4d,0x6f,0x27,0x09}; Topology::Topology(const RuntimeEnvironment *renv) : RR(renv), diff --git a/world/earth-2015-11-20.bin b/world/earth-2015-11-20.bin new file mode 100644 index 0000000000000000000000000000000000000000..198682e5845becaf4f9e45bd6006c8a386d54829 GIT binary patch literal 792 zcmZQ%00NFzC%G6H7z5SvYr1x9?pTtkBry49h^ zeD=521kGWe^taey*($}=E0%QrUAM%`a=$J^>a3F|BwoMZ`nu`#&bK*Z< z*2n(2ZeFeQW@W|7b2~4b-a4haQ!%{gTfxG+=@#c*T@UrTyt23 z^G_$P2Fj?htZ3k1U|0y22}uCyS!vmy0g_?=a6y)lAsniQ2`H1j>L?#n4+A5E0!W65 z;Q>fb!||gxfifx#i48zOhzqtm0A)HH9lG=wcFP)mI;{LC<>fQSqJzu*%R8rrz7;5y zxtiDJ5OYtkm+Ah$&{#K}^I5H1lVyZVd3s}yaPAV=$rQ`)67$9LrnU^wkGcxSnt(Pa zFiL(%VQ4%Y!ocwVpM-28&~Cld1wVl@VBa%C?and)xhi|V-X*A>42I? roots; - // - // The initial version of the World uses the old root server infrastructure. - // The new "Alice and Bob" infrastructure will replace this gradually, with - // Paris probably being the first node to be taken over and clusterized. - // - // ZeroTier does actual World generation on an air-gapped machine by copying - // this code over, building it there and running, then saving the results - // onto a USB key. - // - const uint64_t id = ZT_WORLD_ID_EARTH; - const uint64_t ts = 1447696577275ULL; // November 16th, 2015 ~9:56AM + const uint64_t ts = 1448048819338ULL; // November 20th, 2015 ~11:47AM // Alice roots.push_back(World::Root()); @@ -153,12 +143,12 @@ int main(int argc,char **argv) roots.back().stableEndpoints.push_back(InetAddress("159.203.2.154/9993")); // Toronto roots.back().stableEndpoints.push_back(InetAddress("2604:a880:cad:d0::26:7001/9993")); // Toronto - // old US-SFO + // old US-SFO -- we will keep these around for a little while roots.push_back(World::Root()); roots.back().identity = Identity("7e19876aba:0:2a6e2b2318930f60eb097f70d0f4b028b2cd6d3d0c63c014b9039ff35390e41181f216fb2e6fa8d95c1ee9667156411905c3dccfea78d8c6dfafba688170b3fa"); roots.back().stableEndpoints.push_back(InetAddress("198.199.97.220/9993")); - // old US-NYC + // old US-NYC -- we will keep these around for a little while roots.push_back(World::Root()); roots.back().identity = Identity("8acf059fe3:0:482f6ee5dfe902319b419de5bdc765209c0ecda38c4d6e4fcf0d33658398b4527dcd22f93112fb9befd02fd78bf7261b333fc105d192a623ca9e50fc60b374a5"); roots.back().stableEndpoints.push_back(InetAddress("162.243.77.111/9993")); From ac09c3569a63d5cc9c5cc2c0b0cbd8cd7e68df20 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Sat, 21 Nov 2015 19:14:06 -0800 Subject: [PATCH 313/314] =?UTF-8?q?ARP=20packet=20lengths=20are=2028=20byt?= =?UTF-8?q?es.=20=20This=20condition=20required=20the=20packet=20to=20be?= =?UTF-8?q?=2029=20or=20more=20bytes.=E2=80=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- osdep/Arp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osdep/Arp.cpp b/osdep/Arp.cpp index f71dfb54f..2ca00f0db 100644 --- a/osdep/Arp.cpp +++ b/osdep/Arp.cpp @@ -65,7 +65,7 @@ uint32_t Arp::processIncomingArp(const void *arp,unsigned int len,void *response responseLen = 0; responseDest.zero(); - if (len > 28) { + if (len >= 28) { if (!memcmp(arp,ARP_REQUEST_HEADER,8)) { // Respond to ARP requests for locally-known IPs _ArpEntry *targetEntry = _cache.get(reinterpret_cast(arp)[6]); From 764dd1c3d94527c0870a913ac314b3b17eaea282 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Sat, 21 Nov 2015 19:14:59 -0800 Subject: [PATCH 314/314] ARP packets do need the source IP address in them, as well as the MAC address. Packets wouldn't even show up in WireShark without the source IP in it. --- osdep/Arp.cpp | 11 ++++++----- osdep/Arp.hpp | 5 +++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/osdep/Arp.cpp b/osdep/Arp.cpp index 2ca00f0db..d1023b4d0 100644 --- a/osdep/Arp.cpp +++ b/osdep/Arp.cpp @@ -104,11 +104,11 @@ uint32_t Arp::processIncomingArp(const void *arp,unsigned int len,void *response return ip; } -MAC Arp::query(const MAC &localMac,uint32_t ip,void *query,unsigned int &queryLen,MAC &queryDest) +MAC Arp::query(const MAC &localMac,uint32_t localIp,uint32_t targetIp,void *query,unsigned int &queryLen,MAC &queryDest) { const uint64_t now = OSUtils::now(); - _ArpEntry &e = _cache[ip]; + _ArpEntry &e = _cache[targetIp]; if ( ((e.mac)&&((now - e.lastResponseReceived) >= (ZT_ARP_EXPIRE / 3))) || ((!e.mac)&&((now - e.lastQuerySent) >= ZT_ARP_QUERY_INTERVAL)) ) { @@ -116,9 +116,10 @@ MAC Arp::query(const MAC &localMac,uint32_t ip,void *query,unsigned int &queryLe uint8_t *q = reinterpret_cast(query); memcpy(q,ARP_REQUEST_HEADER,8); q += 8; // ARP request header information, always the same - localMac.copyTo(q,6); q += 6; // sending host address - memset(q,0,10); q += 10; // sending IP and target media address are ignored in requests - memcpy(q,&ip,4); // target IP address for resolution (IP already in big-endian byte order) + localMac.copyTo(q,6); q += 6; // sending host MAC address + memcpy(q,&localIp,4); q += 4; // sending host IP (IP already in big-endian byte order) + memset(q,0,6); q += 6; // sending zeros for target MAC address as thats what we want to find + memcpy(q,&targetIp,4); // target IP address for resolution (IP already in big-endian byte order) queryLen = 28; if (e.mac) queryDest = e.mac; // confirmation query, send directly to address holder diff --git a/osdep/Arp.hpp b/osdep/Arp.hpp index b747cf85d..129935cff 100644 --- a/osdep/Arp.hpp +++ b/osdep/Arp.hpp @@ -129,13 +129,14 @@ public: * MAC returned is non-null. * * @param localMac Local MAC address of host interface - * @param ip IP to look up + * @param localIp Local IP address of host interface + * @param targetIp IP to look up * @param query Buffer for generated query -- MUST be a minimum of ZT_ARP_BUF_LENGTH in size * @param queryLen Length of generated query, or set to 0 if no query generated * @param queryDest Destination of query, or set to null if no query generated * @return MAC or 0 if no cached entry for this IP */ - MAC query(const MAC &localMac,uint32_t ip,void *query,unsigned int &queryLen,MAC &queryDest); + MAC query(const MAC &localMac,uint32_t localIp,uint32_t targetIp,void *query,unsigned int &queryLen,MAC &queryDest); private: struct _ArpEntry