diff --git a/components/firmware/CMakeLists.txt b/components/firmware/CMakeLists.txt index 2cb01d5..51a5418 100644 --- a/components/firmware/CMakeLists.txt +++ b/components/firmware/CMakeLists.txt @@ -4,7 +4,9 @@ idf_component_register( src/Wifi.c src/MqTriggerHttpServer.c src/HttpHelpers.c -# src/Buttons.c + src/MqttClient.c + src/Buttons.c + src/SntpClient.c INCLUDE_DIRS ./include PRIV_INCLUDE_DIRS ./src @@ -12,4 +14,5 @@ idf_component_register( REQUIRES nvs_flash esp_http_server + mqtt ) diff --git a/components/firmware/include/nx/firmware/MqTriggerHttpServer.h b/components/firmware/include/nx/firmware/MqTriggerHttpServer.h index 965d7fa..27bb040 100644 --- a/components/firmware/include/nx/firmware/MqTriggerHttpServer.h +++ b/components/firmware/include/nx/firmware/MqTriggerHttpServer.h @@ -10,14 +10,19 @@ typedef void(*RequestCallback)(const uint8_t* content, size_t ctLen, typedef struct MqTriggerHttpCallbacks { RequestCallback getRoot; + RequestCallback getJs; + RequestCallback getCss; RequestCallback getSysSet; RequestCallback getSysSetForm; RequestCallback postSysSet; - RequestCallback reboot; + RequestCallback getAppSet; + RequestCallback getAppSetForm; + RequestCallback postAppSet; + RequestCallback postCmd; } MqTriggerHttpCallbacks; bool nxStartMqTriggerHttpServer(void); void nxStopMqTriggerHttpServer(); -void nxSetMqTriggerHttpCallbacks(MqTriggerHttpCallbacks* cbs); +void nxSetMqTriggerHttpCallbacks(const MqTriggerHttpCallbacks* cbs); #endif /* COMPONENTS_FIRMWARE_INCLUDE_FIRMWARE_MQTRIGGERHTTPSERVER_H_ */ diff --git a/components/firmware/include/nx/firmware/MqttClient.h b/components/firmware/include/nx/firmware/MqttClient.h new file mode 100644 index 0000000..9fca9b4 --- /dev/null +++ b/components/firmware/include/nx/firmware/MqttClient.h @@ -0,0 +1,35 @@ +#ifndef COMPONENTS_FIRMWARE_INCLUDE_NX_FIRMWARE_MQTTCLIENT_H_ +#define COMPONENTS_FIRMWARE_INCLUDE_NX_FIRMWARE_MQTTCLIENT_H_ + +#include + +#define MQTT_BROKER_URI_MAX_LEN 128 +#define MQTT_TOPIC_MAX_LEN 128 +#define MQTT_USER_MAX_LEN 16 + +typedef void (*MqttConnectedCallback)(); +typedef void (*MqttDisconnectedCallback)(); +typedef void (*MqttErrorCallback)(); +typedef void (*MqttMessageCallback)(const char* msg); + +typedef struct MqttSettings +{ + char brokerAddr[MQTT_BROKER_URI_MAX_LEN]; + char apiTopic[MQTT_TOPIC_MAX_LEN]; + char hbTopic[MQTT_TOPIC_MAX_LEN]; + char user[MQTT_USER_MAX_LEN]; + char password[MQTT_USER_MAX_LEN]; + uint16_t hbIntervalSec; + const char* caCrt; + + MqttMessageCallback messageCb; + MqttConnectedCallback connectedCb; + MqttDisconnectedCallback disconnectedCb; + MqttErrorCallback errorCb; +} MqttSettings; + +void nxStartMqttClient(const MqttSettings* settings); + +void nxMqttHeartbeatTask(void*); + +#endif /* COMPONENTS_FIRMWARE_INCLUDE_NX_FIRMWARE_MQTTCLIENT_H_ */ diff --git a/components/firmware/include/nx/firmware/SntpClient.h b/components/firmware/include/nx/firmware/SntpClient.h new file mode 100644 index 0000000..3003f6c --- /dev/null +++ b/components/firmware/include/nx/firmware/SntpClient.h @@ -0,0 +1,11 @@ +#ifndef COMPONENTS_FIRMWARE_INCLUDE_NX_FIRMWARE_SNTPCLIENT_H_ +#define COMPONENTS_FIRMWARE_INCLUDE_NX_FIRMWARE_SNTPCLIENT_H_ + +#include + +#define DT_FORMAT_LEN 20 + +bool nxInitSntpClient(int retries, const char* serverAddr, const char* timezoneString); +void nxGetTimeStr(char buf[DT_FORMAT_LEN]); + +#endif /* COMPONENTS_FIRMWARE_INCLUDE_NX_FIRMWARE_SNTPCLIENT_H_ */ diff --git a/components/firmware/include/nx/firmware/Wifi.h b/components/firmware/include/nx/firmware/Wifi.h index 6f6e851..d80c043 100644 --- a/components/firmware/include/nx/firmware/Wifi.h +++ b/components/firmware/include/nx/firmware/Wifi.h @@ -19,6 +19,7 @@ typedef struct WifiSettings { uint8_t* ip4addr; uint8_t* ip4gw; uint8_t* ip4mask; + uint8_t* dns; WifiMode mode; } WifiSettings; diff --git a/components/firmware/src/MqTriggerHttpServer.c b/components/firmware/src/MqTriggerHttpServer.c index 0304a51..8856e10 100644 --- a/components/firmware/src/MqTriggerHttpServer.c +++ b/components/firmware/src/MqTriggerHttpServer.c @@ -5,16 +5,23 @@ #define TAG "NX_HTTP" +#define REBOOT_DELAY_MS 3000 + static httpd_handle_t server = NULL; -static MqTriggerHttpCallbacks* callbacks = NULL; +static const MqTriggerHttpCallbacks* callbacks = NULL; // -- URI handlers -- ADD_HTTP_HANDLER("/", getRoot, HTTP_GET) +ADD_HTTP_HANDLER("/index.js", getJs, HTTP_GET) +ADD_HTTP_HANDLER("/index.css", getCss, HTTP_GET) ADD_HTTP_HANDLER("/sys", getSysSet, HTTP_GET) ADD_HTTP_HANDLER("/sys/form", getSysSetForm, HTTP_GET) ADD_HTTP_HANDLER("/sys", postSysSet, HTTP_POST) -ADD_HTTP_HANDLER("/sys/reboot", reboot, HTTP_POST) +ADD_HTTP_HANDLER("/app", getAppSet, HTTP_GET) +ADD_HTTP_HANDLER("/app/form", getAppSetForm, HTTP_GET) +ADD_HTTP_HANDLER("/app", postAppSet, HTTP_POST) +ADD_HTTP_HANDLER("/app/cmd", postCmd, HTTP_POST) static esp_err_t uriOptionsHandler(httpd_req_t* req) { @@ -30,18 +37,40 @@ static httpd_uri_t uriOptions = { .handler = uriOptionsHandler }; +static esp_err_t uriRebootHandler(httpd_req_t* req) +{ + nxAddCorsHeaders(req); + const char resp[] = ""; + httpd_resp_send(req, resp, HTTPD_RESP_USE_STRLEN); + vTaskDelay(REBOOT_DELAY_MS / portTICK_PERIOD_MS); + + esp_restart(); + return ESP_OK; +} + +static httpd_uri_t uriReboot = { + .uri = "/sys/reboot", + .method = HTTP_POST, + .handler = uriRebootHandler +}; + void registerMqTriggerHttpHandlers(void) { httpd_register_uri_handler(server, &uriOptions); httpd_register_uri_handler(server, &uri_getRoot); + httpd_register_uri_handler(server, &uri_getJs); + httpd_register_uri_handler(server, &uri_getCss); httpd_register_uri_handler(server, &uri_getSysSet); httpd_register_uri_handler(server, &uri_getSysSetForm); httpd_register_uri_handler(server, &uri_postSysSet); - httpd_register_uri_handler(server, &uri_reboot); + httpd_register_uri_handler(server, &uri_getAppSet); + httpd_register_uri_handler(server, &uri_getAppSetForm); + httpd_register_uri_handler(server, &uri_postAppSet); + httpd_register_uri_handler(server, &uri_postCmd); + httpd_register_uri_handler(server, &uriReboot); } - // --------- Public API --------- // bool nxStartMqTriggerHttpServer(void) @@ -72,7 +101,7 @@ void nxStopMqTriggerHttpServer() } } -void nxSetMqTriggerHttpCallbacks(MqTriggerHttpCallbacks* cbs) +void nxSetMqTriggerHttpCallbacks(const MqTriggerHttpCallbacks* cbs) { callbacks = cbs; } diff --git a/components/firmware/src/MqttClient.c b/components/firmware/src/MqttClient.c new file mode 100644 index 0000000..b879341 --- /dev/null +++ b/components/firmware/src/MqttClient.c @@ -0,0 +1,174 @@ +#include "nx/firmware/MqttClient.h" + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/semphr.h" +#include "freertos/queue.h" + +#include "lwip/sockets.h" +#include "lwip/dns.h" +#include "lwip/netdb.h" + +#include "esp_log.h" +#include "mqtt_client.h" + +#include + +#define UNUSED(x) (void)(x) + +static const char* TAG = "MQTT"; +static const int CMD_QOS = 2; +//static const int HB_QOS = 1; + +//static const long int MINIMAL_HB_INTERVAL_MS = 1000 * 60; + +static const char* CLIENT_ID = "p10-dev"; + +static const MqttSettings* settings = NULL; + +esp_mqtt_client_handle_t clientHandle = NULL; + + +static esp_err_t mqtt_event_handler_cb(esp_mqtt_event_handle_t event) +{ + esp_mqtt_client_handle_t client = event->client; + int msg_id; + // your_context_t *context = event->context; + switch (event->event_id) { + case MQTT_EVENT_CONNECTED: + ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED"); + clientHandle = client; + + if (settings->connectedCb) { + settings->connectedCb(); + } + + msg_id = esp_mqtt_client_subscribe(client, settings->apiTopic, CMD_QOS); + if (msg_id == -1) { + ESP_LOGE(TAG, "Subscribtion failed"); + if (settings->errorCb) { + settings->errorCb(); + } + } + + break; + + case MQTT_EVENT_DISCONNECTED: + ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED"); + clientHandle = NULL; + if (settings->disconnectedCb) { + settings->disconnectedCb(); + } + break; + + case MQTT_EVENT_SUBSCRIBED: + ESP_LOGI(TAG, "MQTT_EVENT_SUBSCRIBED, msg_id=%d", event->msg_id); + break; + case MQTT_EVENT_UNSUBSCRIBED: + ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event->msg_id); + break; + case MQTT_EVENT_PUBLISHED: + ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id); + break; + case MQTT_EVENT_DATA: + ESP_LOGI(TAG, "MQTT_EVENT_DATA"); + + if (settings->messageCb) { + event->data[event->data_len] = '\0'; + settings->messageCb(event->data); + } + + printf("TOPIC=%.*s\r\n", event->topic_len, event->topic); + printf("DATA=%.*s\r\n", event->data_len, event->data); + break; + case MQTT_EVENT_ERROR: + ESP_LOGI(TAG, "MQTT_EVENT_ERROR"); + if (settings->errorCb) { + settings->errorCb(); + } + break; + default: + ESP_LOGI(TAG, "Other event id:%d", event->event_id); + break; + } + return ESP_OK; +} + +static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data) { + ESP_LOGD(TAG, "Event dispatched from event loop base=%s, event_id=%d", base, event_id); + mqtt_event_handler_cb(event_data); +} + + +// --------- Public API --------- // + + +void nxStartMqttClient(const MqttSettings* mqttSettings) +{ + ESP_LOGI(TAG, "Initializing MQTT"); + + if (strlen(mqttSettings->brokerAddr) == 0) { + ESP_LOGW(TAG, "Empty broker address, skipping MQTT initialization"); + return; + } + + settings = mqttSettings; + + esp_mqtt_client_config_t mqtt_cfg = {}; + + mqtt_cfg.uri = settings->brokerAddr; + + mqtt_cfg.client_id = CLIENT_ID; + mqtt_cfg.cert_pem = settings->caCrt; + mqtt_cfg.username = settings->user; + mqtt_cfg.password = settings->password; + + if (mqtt_cfg.host) { + ESP_LOGI(TAG, "host: %s", mqtt_cfg.host); + } + if (mqtt_cfg.uri) { + ESP_LOGI(TAG, "uri: %s", mqtt_cfg.uri); + } + ESP_LOGI(TAG, "client: %s", mqtt_cfg.client_id); + ESP_LOGI(TAG, "user: %s", mqtt_cfg.username); + ESP_LOGI(TAG, "pass: %s", mqtt_cfg.password); + ESP_LOGI(TAG, "cert: %s", mqtt_cfg.cert_pem); + + esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg); + esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, client); + esp_mqtt_client_start(client); +} + +void nxMqttHeartbeatTask(void* param) +{ + UNUSED(param); + // ESP_LOGI(TAG, "Starting MQTT heartbeat task"); + // + // ESP_LOGI(TAG, "hbIntervalMin: %d", settings->hbIntervalMin); + // + // long int hbIntervalMs = 1000 * 60 * settings->hbIntervalMin; + // + // ESP_LOGI(TAG, "hbIntervalMs: %li", hbIntervalMs); + // + // + // if (hbIntervalMs < MINIMAL_HB_INTERVAL_MS) { + // hbIntervalMs = MINIMAL_HB_INTERVAL_MS; + // } + // + // while (1) { + // if (clientHandle) { + // ESP_LOGI(TAG, "Sending MQTT heartbeat"); + // + // char timeStr[DT_FORMAT_LEN]; + // getTimeStr(timeStr); + // char hbMessage[DT_FORMAT_LEN + strlen(DEVICE_ID) + 2]; + // strcpy(hbMessage, DEVICE_ID); + // strcat(hbMessage, " "); + // strcat(hbMessage, timeStr); + // + // esp_mqtt_client_publish(clientHandle, HEARTBEAT_TOPIC, + // hbMessage, strlen(hbMessage), HB_QOS, 1); + // } + // vTaskDelay(hbIntervalMs / portTICK_PERIOD_MS); + // } +} diff --git a/components/firmware/src/SntpClient.c b/components/firmware/src/SntpClient.c new file mode 100644 index 0000000..91a7890 --- /dev/null +++ b/components/firmware/src/SntpClient.c @@ -0,0 +1,42 @@ +#include "nx/firmware/SntpClient.h" +#include +#include +#include "esp_sntp.h" +#include "esp_log.h" + +#define RETRY_DELAY_MS 2000 + +static const char* TAG = "SNTP_CLIENT"; + +static const char* tzString = "CET-1CEST,M3.5.0,M10.5.0/3"; + +bool nxInitSntpClient(int retries, const char* serverAddr, const char* timezoneString) +{ + tzString = timezoneString; + sntp_setoperatingmode(SNTP_OPMODE_POLL); + sntp_setservername(0, serverAddr); + sntp_init(); + int retry = 0; + + while (sntp_get_sync_status() == SNTP_SYNC_STATUS_RESET && ++retry < retries) { + ESP_LOGI(TAG, "Waiting for system time to be set... (%d/%d)", retry, retries); + vTaskDelay(RETRY_DELAY_MS / portTICK_PERIOD_MS); + } + + char buf[DT_FORMAT_LEN]; + nxGetTimeStr(buf); + ESP_LOGI(TAG, "Initial system time: %s", buf); + return retry < retries; +} + +void nxGetTimeStr(char buf[DT_FORMAT_LEN]) +{ + time_t now; + struct tm timeinfo; + time(&now); + + setenv("TZ", tzString, 1); + tzset(); + localtime_r(&now, &timeinfo); + strftime(buf, DT_FORMAT_LEN, "%Y-%m-%d %H:%M:%S", &timeinfo); +} diff --git a/components/firmware/src/Wifi.c b/components/firmware/src/Wifi.c index 8f1c21b..5918c89 100644 --- a/components/firmware/src/Wifi.c +++ b/components/firmware/src/Wifi.c @@ -327,6 +327,18 @@ static bool initWifiStation(void) ESP_LOGI(TAG, "Updating the host name"); ESP_ERROR_CHECK(esp_netif_set_hostname(sta, deviceName)); + ESP_LOGI(TAG, "Updating DNS server IPv4"); + + esp_netif_dns_info_t dns; + dns.ip.u_addr.ip4.addr = PP_HTONL(LWIP_MAKEU32( + settings->dns[0], + settings->dns[1], + settings->dns[2], + settings->dns[3])); + dns.ip.type = IPADDR_TYPE_V4; + ESP_ERROR_CHECK(esp_netif_set_dns_info(sta, ESP_NETIF_DNS_MAIN, &dns)); + + return waitForStaConnection(); } diff --git a/components/software/CMakeLists.txt b/components/software/CMakeLists.txt index 6b91599..56b3966 100644 --- a/components/software/CMakeLists.txt +++ b/components/software/CMakeLists.txt @@ -1,7 +1,10 @@ idf_component_register( SRCS - src/nxSystemSettings.c - src/nxSystemSettingsApi.c + src/SystemSettings.c + src/SystemSettingsApi.c + src/KeyValueParser.c + src/AppSettings.c + src/AppSettingsApi.c INCLUDE_DIRS ./include PRIV_INCLUDE_DIRS ./src diff --git a/components/software/include/nx/software/AppSettings.h b/components/software/include/nx/software/AppSettings.h new file mode 100644 index 0000000..e31e946 --- /dev/null +++ b/components/software/include/nx/software/AppSettings.h @@ -0,0 +1,40 @@ +#ifndef NX_SOFTWARE_APPSETTINGS_H_ +#define NX_SOFTWARE_APPSETTINGS_H_ + +#include +#include +#include + +#define WIFI_STRINGS_MAX_LEN 32 +#define URI_MAX_SIZE 64 +#define USER_DATA_MAX_SIZE 16 + +typedef bool (*StorageReadFn)(const char* key, void* data, size_t size); + +typedef void (*StorageWriteFn)(const char* key, const void* data, size_t size); + +typedef void (*SettingsUpdatedCb)(void); + +typedef struct AppSettings { + char mqttHost[URI_MAX_SIZE]; + char mqttApiUri[URI_MAX_SIZE]; + char mqttHbUri[URI_MAX_SIZE]; + char mqttUser[USER_DATA_MAX_SIZE]; + char mqttPassword[USER_DATA_MAX_SIZE]; + uint16_t mqttHbIntervalSec; + uint8_t mqttUseTls; + +} AppSettings; + + +void nxInitAppSettings(StorageWriteFn writeFn, StorageReadFn readFn, SettingsUpdatedCb updateCb); + +void nxUpdateAppSettings(AppSettings* newSettings); + +void nxRestoreAppDefaultSettings(void); + +void nxWriteAppSettings(void); + +AppSettings* nxGetAppSettings(void); + +#endif /* NX_SOFTWARE_APPSETTINGS_H_ */ diff --git a/components/software/include/nx/software/AppSettingsApi.h b/components/software/include/nx/software/AppSettingsApi.h new file mode 100644 index 0000000..b832f3b --- /dev/null +++ b/components/software/include/nx/software/AppSettingsApi.h @@ -0,0 +1,13 @@ +#ifndef NX_SOFTWARE_APPSETTINGSAPI_H_ +#define NX_SOFTWARE_APPSETTINGSAPI_H_ + +#include +#include + +void nxApiUpdateAppSettings(const uint8_t* msg, size_t msgLen, + const char** response, size_t* respLen); + +void nxApiGetAppSettings(const uint8_t* msg, size_t msgLen, + const char** response, size_t* respLen); + +#endif /* NX_SOFTWARE_APPSETTINGSAPI_H_ */ diff --git a/components/software/include/nx/software/nxSystemSettings.h b/components/software/include/nx/software/SystemSettings.h similarity index 80% rename from components/software/include/nx/software/nxSystemSettings.h rename to components/software/include/nx/software/SystemSettings.h index 3caad53..93fef29 100644 --- a/components/software/include/nx/software/nxSystemSettings.h +++ b/components/software/include/nx/software/SystemSettings.h @@ -6,13 +6,13 @@ #include #define WIFI_STRINGS_MAX_LEN 32 +#define URI_MAX_LEN 64 +#define TZ_ENV_LEN 32 typedef bool (*StorageReadFn)(const char* key, void* data, size_t size); typedef void (*StorageWriteFn)(const char* key, const void* data, size_t size); -typedef void(*RebootFn)(void); - typedef struct SystemSettings { char wifiSsid[WIFI_STRINGS_MAX_LEN]; char wifiPassword[WIFI_STRINGS_MAX_LEN]; @@ -21,11 +21,13 @@ typedef struct SystemSettings { uint8_t ip4addr[4]; uint8_t ip4gw[4]; uint8_t ip4mask[4]; + uint8_t dnsAddr[4]; + char sntpAddr[URI_MAX_LEN]; + char tzEnv[TZ_ENV_LEN]; } SystemSettings; -void nxInitSystemSettings(StorageWriteFn writeFn, - StorageReadFn readFn, RebootFn rebootFn); +void nxInitSystemSettings(StorageWriteFn writeFn, StorageReadFn readFn); void nxUpdateSystemSettings(SystemSettings* newSettings); @@ -33,8 +35,6 @@ void nxRestoreSystemDefaultSettings(void); void nxWriteSystemSettings(void); -void nxRebootSystem(void); - SystemSettings* nxGetSystemSettings(void); #endif /* NX_SOFTWARE_NXSYSTEMSETTINGS_H_ */ diff --git a/components/software/include/nx/software/nxSystemSettingsApi.h b/components/software/include/nx/software/SystemSettingsApi.h similarity index 60% rename from components/software/include/nx/software/nxSystemSettingsApi.h rename to components/software/include/nx/software/SystemSettingsApi.h index 7182490..2901b91 100644 --- a/components/software/include/nx/software/nxSystemSettingsApi.h +++ b/components/software/include/nx/software/SystemSettingsApi.h @@ -4,19 +4,10 @@ #include #include - void nxApiUpdateSystemSettings(const uint8_t* msg, size_t msgLen, const char** response, size_t* respLen); void nxApiGetSystemSettings(const uint8_t* msg, size_t msgLen, const char** response, size_t* respLen); -//TODO: handle as settings value? -void nxApiRestoreSystemSettings(const uint8_t* msg, size_t msgLen, - const char** response, size_t* respLen); - -void nxApiRebootSystem(const uint8_t* msg, size_t msgLen, - const char** response, size_t* respLen); - - #endif /* NX_SOFTWARE_NXSYSTEMSETTINGSAPI_H_ */ diff --git a/components/software/src/AppSettings.c b/components/software/src/AppSettings.c new file mode 100644 index 0000000..c3281ed --- /dev/null +++ b/components/software/src/AppSettings.c @@ -0,0 +1,119 @@ +#include "nx/software/AppSettings.h" +#include +#include + +#define KEY_INIT_FLAG "appinit" +#define KEY_MQTT_HOST "mqhost" +#define KEY_MQTT_API_URI "mqapi" +#define KEY_MQTT_HB_URI "mqhb" +#define KEY_MQTT_HB_SEC "mqhbs" +#define KEY_MQTT_TLS "mqtls" +#define KEY_MQTT_USER "mquser" +#define KEY_MQTT_PASS "mqpass" + +#define STORAGE_READ(_KEY, _NAME)\ + storageRead(_KEY, &settings._NAME, sizeof(settings._NAME)); + +#define STORAGE_WRITE(_KEY, _NAME)\ + storageWrite(_KEY, &settings._NAME, sizeof(settings._NAME)); + +static const uint8_t INIT_FLAG_VALUE = 1; + +static const char* DEFAULT_MQTT_HOST = ""; +static const char* DEFAULT_MQTT_API_URI = "dev/api"; +static const char* DEFAULT_MQTT_HB_URI = "dev/hb"; +static const uint16_t DEFAULT_MQTT_HB_SEC = 0; +static const uint8_t DEFAULT_MQTT_TLS = 0; +static const char* DEFAULT_MQTT_USER = ""; +static const char* DEFAULT_MQTT_PASS = ""; + + +static StorageWriteFn storageWrite = NULL; +static StorageReadFn storageRead = NULL; +static SettingsUpdatedCb settingsUpdatedCb = NULL; + +static AppSettings settings; + +static bool firstRun(void) +{ + uint8_t initFlag = 0; + if (!storageRead(KEY_INIT_FLAG, &initFlag, sizeof(initFlag))) { + return true; + } + return initFlag != INIT_FLAG_VALUE; +} + +static void loadSettings(void) +{ + printf("Loading application settings\n"); + STORAGE_READ(KEY_MQTT_HOST , mqttHost ); + STORAGE_READ(KEY_MQTT_API_URI, mqttApiUri ); + STORAGE_READ(KEY_MQTT_HB_URI , mqttHbUri ); + STORAGE_READ(KEY_MQTT_HB_SEC , mqttHbIntervalSec); + STORAGE_READ(KEY_MQTT_TLS , mqttUseTls ); + STORAGE_READ(KEY_MQTT_USER , mqttUser ); + STORAGE_READ(KEY_MQTT_PASS , mqttPassword ); +} + + +// --------- Public API --------- // + + +void nxInitAppSettings(StorageWriteFn writeFn, + StorageReadFn readFn, SettingsUpdatedCb updateCb) +{ + storageWrite = writeFn; + storageRead = readFn; + settingsUpdatedCb = updateCb; + + if (firstRun()) { + nxRestoreAppDefaultSettings(); + } + else { + loadSettings(); + } +} + +void nxUpdateAppSettings(AppSettings* newSettings) +{ + memcpy(&settings, newSettings, sizeof(AppSettings)); + nxWriteAppSettings(); +} + + +void nxRestoreAppDefaultSettings(void) +{ + printf("Restoring DEFAULT application settings\n"); + settings.mqttHbIntervalSec = DEFAULT_MQTT_HB_SEC; + settings.mqttUseTls = DEFAULT_MQTT_TLS; + + strcpy(settings.mqttHbUri , DEFAULT_MQTT_HB_URI ); + strcpy(settings.mqttApiUri , DEFAULT_MQTT_API_URI); + strcpy(settings.mqttHost , DEFAULT_MQTT_HOST ); + strcpy(settings.mqttUser , DEFAULT_MQTT_USER ); + strcpy(settings.mqttPassword, DEFAULT_MQTT_PASS ); + + nxWriteAppSettings(); +} + + +void nxWriteAppSettings(void) +{ + printf("WRITING APPLICATION SETTINGS\n"); + storageWrite(KEY_INIT_FLAG , &INIT_FLAG_VALUE , 1); + + STORAGE_WRITE(KEY_MQTT_HOST , mqttHost ); + STORAGE_WRITE(KEY_MQTT_API_URI, mqttApiUri ); + STORAGE_WRITE(KEY_MQTT_HB_URI , mqttHbUri ); + STORAGE_WRITE(KEY_MQTT_HB_SEC , mqttHbIntervalSec); + STORAGE_WRITE(KEY_MQTT_TLS , mqttUseTls ); + STORAGE_WRITE(KEY_MQTT_USER , mqttUser ); + STORAGE_WRITE(KEY_MQTT_PASS , mqttPassword ); + + settingsUpdatedCb(); +} + +AppSettings* nxGetAppSettings(void) +{ + return &settings; +} diff --git a/components/software/src/AppSettingsApi.c b/components/software/src/AppSettingsApi.c new file mode 100644 index 0000000..dc350ce --- /dev/null +++ b/components/software/src/AppSettingsApi.c @@ -0,0 +1,95 @@ +#include "nx/software/AppSettingsApi.h" +#include "nx/software/AppSettings.h" +#include "KeyValueParser.h" + +#include +#include +#include +#include + +#define API_KEY_RESTORE "restore_default" +#define API_KEY_MQTT_HOST "mqhost" +#define API_KEY_MQTT_API_URI "mqapi" +#define API_KEY_MQTT_HB_URI "mqhb" +#define API_KEY_MQTT_HB_SEC "mqhbs" +#define API_KEY_MQTT_TLS "mqtls" +#define API_KEY_MQTT_USER "mquser" +#define API_KEY_MQTT_PASS "mqpass" + +#define UNUSED(x) (void)(x) + +#define RESP_BUF_SIZE 1024 + +char responseBuffer[RESP_BUF_SIZE]; + +static void handleKvPair(const char* key, const char* value, const void* userData, bool* done) +{ + printf("LED display settings update; Key: %s, Value: %s\n", key, value); + + AppSettings* settings = nxGetAppSettings(); + if (strcmp(key, API_KEY_RESTORE) == 0) { + nxRestoreAppDefaultSettings(); + } + else if (strcmp(key, API_KEY_MQTT_HOST) == 0) { + strcpy(settings->mqttHost, value); + } + else if (strcmp(key, API_KEY_MQTT_API_URI) == 0) { + strcpy(settings->mqttApiUri, value); + } + else if (strcmp(key, API_KEY_MQTT_HB_URI) == 0) { + strcpy(settings->mqttHbUri, value); + } + else if (strcmp(key, API_KEY_MQTT_USER) == 0) { + strcpy(settings->mqttUser, value); + } + else if (strcmp(key, API_KEY_MQTT_PASS) == 0) { + strcpy(settings->mqttPassword, value); + } + else if (strcmp(key, API_KEY_MQTT_HB_SEC) == 0) { + settings->mqttHbIntervalSec = atoi(value); + } + else if (strcmp(key, API_KEY_MQTT_TLS) == 0) { + settings->mqttUseTls = atoi(value); + } + else { + fprintf(stderr, "Unknown key: %s\n", key); + } +} + +// --------- Public API --------- // + +void nxApiGetAppSettings(const uint8_t* msg, size_t msgLen, + const char** response, size_t* respLen) +{ + UNUSED(msg); UNUSED(msgLen); + memset(responseBuffer, 0, RESP_BUF_SIZE); + AppSettings* settings = nxGetAppSettings(); + + sprintf(responseBuffer, + "{" + "\"%s\":\"%s\", " // mqtt host + "\"%s\":\"%s\", " + "\"%s\":\"%s\", " + "\"%s\":%i, " // hb interval + "\"%s\":%i, " + "\"%s\":\"%s\" " // mqtt user + "}", + API_KEY_MQTT_HOST , settings->mqttHost , + API_KEY_MQTT_API_URI, settings->mqttApiUri , + API_KEY_MQTT_HB_URI , settings->mqttHbUri , + API_KEY_MQTT_HB_SEC , settings->mqttHbIntervalSec, + API_KEY_MQTT_TLS , settings->mqttUseTls , + API_KEY_MQTT_USER , settings->mqttUser + ); + *response = responseBuffer; + *respLen = strlen(responseBuffer); +} + +void nxApiUpdateAppSettings(const uint8_t* msg, size_t msgLen, + const char** response, size_t* respLen) +{ + memset(responseBuffer, 0, RESP_BUF_SIZE); + nxParseKeyValueString((const char*)msg, handleKvPair, NULL); + nxWriteAppSettings(); +} + diff --git a/components/software/src/KeyValueParser.c b/components/software/src/KeyValueParser.c new file mode 100644 index 0000000..6edfb3e --- /dev/null +++ b/components/software/src/KeyValueParser.c @@ -0,0 +1,24 @@ +#include "KeyValueParser.h" + +#include +#include + +#define MAX_KEY_SIZE 32 +#define MAX_VALUE_SIZE 32 +#define MAX_PAIRS 16 + +void nxParseKeyValueString(const char* string, KeyValueHandler handler, const void* userData) +{ + bool done = false; + char key[MAX_KEY_SIZE]; + char value[MAX_VALUE_SIZE]; + FILE *stream; + stream = fmemopen((void*)string, strlen(string), "r"); + int maxPairs = MAX_PAIRS; + while (fscanf(stream, "%127[^=]=%127[^&]%*c", key, value) == 2 && maxPairs > 0 && !done) { + handler(key, value, userData, &done); + maxPairs -= 1; + } + + fclose(stream); +} diff --git a/components/software/src/KeyValueParser.h b/components/software/src/KeyValueParser.h new file mode 100644 index 0000000..e9cb44c --- /dev/null +++ b/components/software/src/KeyValueParser.h @@ -0,0 +1,11 @@ +#ifndef COMPONENTS_SOFTWARE_KEYVALUEPARSER_H_ +#define COMPONENTS_SOFTWARE_KEYVALUEPARSER_H_ + +#include + +typedef void (*KeyValueHandler)(const char* key, const char* value, const void* userData, bool* done); + +void nxParseKeyValueString(const char* string, KeyValueHandler handler, const void* userData); + + +#endif /* COMPONENTS_SOFTWARE_KEYVALUEPARSER_H_ */ diff --git a/components/software/src/nxSystemSettings.c b/components/software/src/SystemSettings.c similarity index 53% rename from components/software/src/nxSystemSettings.c rename to components/software/src/SystemSettings.c index 55080df..ff075b6 100644 --- a/components/software/src/nxSystemSettings.c +++ b/components/software/src/SystemSettings.c @@ -1,8 +1,9 @@ -#include +#include "../include/nx/software/SystemSettings.h" + #include #include -#define KEY_INIT_FLAG "set" +#define KEY_INIT_FLAG "sysinit" #define KEY_WIFI_SSID "ssid" #define KEY_WIFI_PASS "wpass" #define KEY_WIFI_POWER_SAVE "wpsave" @@ -10,9 +11,18 @@ #define KEY_WIFI_ADDR "waddr" #define KEY_WIFI_GW "wgw" #define KEY_WIFI_MASK "wmask" +#define KEY_DNS_ADDR "dns" +#define KEY_SNTP_ADDR "sntp" +#define KEY_TZ_ENV "tz" #define IPV4_ADDR_SIZE 4 +#define STORAGE_READ(_KEY, _NAME)\ + storageRead(_KEY, &settings._NAME, sizeof(settings._NAME)); + +#define STORAGE_WRITE(_KEY, _NAME)\ + storageWrite(_KEY, &settings._NAME, sizeof(settings._NAME)); + static const uint8_t INIT_FLAG_VALUE = 1; static const char* DEFAULT_WIFI_SSID = "service_wifi"; static const char* DEFAULT_WIFI_PASS = "service_wifi"; @@ -21,10 +31,12 @@ static const bool DEFAULT_WIFI_USE_STATIC = false; static const char DEFAULT_WIFI_ADDR[IPV4_ADDR_SIZE] = {192,168,8,101}; static const char DEFAULT_WIFI_GW[IPV4_ADDR_SIZE] = {192,168,8,1}; static const char DEFAULT_WIFI_MASK[IPV4_ADDR_SIZE] = {255,255,255,0}; +static const char DEFAULT_DNS_ADDR[IPV4_ADDR_SIZE] = {8,8,8,8}; +static const char* DEFAULT_SNTP_ADDR = "pool.ntp.org"; +static const char* DEFAULT_TZ_ENV = "CET-1CEST,M3.5.0,M10.5.0/3"; static StorageWriteFn storageWrite = NULL; static StorageReadFn storageRead = NULL; -RebootFn execReboot = NULL; static SystemSettings settings; @@ -40,25 +52,27 @@ static bool firstRun(void) static void loadSystemSettings(void) { printf("Loading system settings\n"); - storageRead(KEY_WIFI_SSID, settings.wifiSsid, WIFI_STRINGS_MAX_LEN); - storageRead(KEY_WIFI_PASS, settings.wifiPassword, WIFI_STRINGS_MAX_LEN); - storageRead(KEY_WIFI_POWER_SAVE, &settings.wifiPowerSave, sizeof(settings.wifiPowerSave)); - storageRead(KEY_WIFI_USE_STATIC, &settings.useStaticAddr, sizeof(settings.useStaticAddr)); - storageRead(KEY_WIFI_ADDR, settings.ip4addr, IPV4_ADDR_SIZE); - storageRead(KEY_WIFI_GW, settings.ip4gw, IPV4_ADDR_SIZE); - storageRead(KEY_WIFI_MASK, settings.ip4mask, IPV4_ADDR_SIZE); + storageRead(KEY_WIFI_SSID , settings.wifiSsid , WIFI_STRINGS_MAX_LEN); + storageRead(KEY_WIFI_PASS , settings.wifiPassword, WIFI_STRINGS_MAX_LEN); + storageRead(KEY_WIFI_ADDR , settings.ip4addr , IPV4_ADDR_SIZE); + storageRead(KEY_WIFI_GW , settings.ip4gw , IPV4_ADDR_SIZE); + storageRead(KEY_WIFI_MASK , settings.ip4mask , IPV4_ADDR_SIZE); + storageRead(KEY_DNS_ADDR , settings.dnsAddr , IPV4_ADDR_SIZE); + storageRead(KEY_SNTP_ADDR , settings.sntpAddr , URI_MAX_LEN); + storageRead(KEY_TZ_ENV , settings.tzEnv , TZ_ENV_LEN); + + STORAGE_READ(KEY_WIFI_POWER_SAVE, wifiPowerSave); + STORAGE_READ(KEY_WIFI_USE_STATIC, useStaticAddr); } // --------- Public API --------- // void nxInitSystemSettings(StorageWriteFn writeFn, - StorageReadFn readFn, - RebootFn rebootFn) + StorageReadFn readFn) { storageWrite = writeFn; storageRead = readFn; - execReboot = rebootFn; if (firstRun()) { printf("FIRST RUN\n"); @@ -79,6 +93,10 @@ void nxRestoreSystemDefaultSettings(void) memcpy(settings.ip4addr, DEFAULT_WIFI_ADDR, IPV4_ADDR_SIZE); memcpy(settings.ip4gw, DEFAULT_WIFI_GW, IPV4_ADDR_SIZE); memcpy(settings.ip4mask, DEFAULT_WIFI_MASK, IPV4_ADDR_SIZE); + memcpy(settings.dnsAddr, DEFAULT_DNS_ADDR, IPV4_ADDR_SIZE); + strcpy(settings.sntpAddr, DEFAULT_SNTP_ADDR); + strcpy(settings.tzEnv, DEFAULT_TZ_ENV); + nxWriteSystemSettings(); } @@ -92,13 +110,18 @@ void nxWriteSystemSettings(void) { printf("WRITING SYSTEM SETTINGS\n"); storageWrite(KEY_INIT_FLAG, &INIT_FLAG_VALUE, 1); - storageWrite(KEY_WIFI_SSID, settings.wifiSsid, WIFI_STRINGS_MAX_LEN); + + storageWrite(KEY_WIFI_SSID, settings.wifiSsid , WIFI_STRINGS_MAX_LEN); storageWrite(KEY_WIFI_PASS, settings.wifiPassword, WIFI_STRINGS_MAX_LEN); - storageWrite(KEY_WIFI_POWER_SAVE, &settings.wifiPowerSave, sizeof(settings.wifiPowerSave)); - storageWrite(KEY_WIFI_USE_STATIC, &settings.useStaticAddr, sizeof(settings.useStaticAddr)); - storageWrite(KEY_WIFI_ADDR, settings.ip4addr, IPV4_ADDR_SIZE); - storageWrite(KEY_WIFI_GW, settings.ip4gw, IPV4_ADDR_SIZE); - storageWrite(KEY_WIFI_MASK, settings.ip4mask, IPV4_ADDR_SIZE); + storageWrite(KEY_WIFI_ADDR, settings.ip4addr , IPV4_ADDR_SIZE ); + storageWrite(KEY_WIFI_GW , settings.ip4gw , IPV4_ADDR_SIZE ); + storageWrite(KEY_WIFI_MASK, settings.ip4mask , IPV4_ADDR_SIZE ); + storageWrite(KEY_DNS_ADDR , settings.dnsAddr , IPV4_ADDR_SIZE ); + storageWrite(KEY_SNTP_ADDR, settings.sntpAddr , URI_MAX_LEN ); + storageWrite(KEY_TZ_ENV , settings.tzEnv , TZ_ENV_LEN ); + + STORAGE_WRITE(KEY_WIFI_POWER_SAVE, wifiPowerSave); + STORAGE_WRITE(KEY_WIFI_USE_STATIC, useStaticAddr); } SystemSettings* nxGetSystemSettings(void) @@ -106,9 +129,3 @@ SystemSettings* nxGetSystemSettings(void) return &settings; } -void nxRebootSystem(void) -{ - execReboot(); -} - - diff --git a/components/software/src/nxSystemSettingsApi.c b/components/software/src/SystemSettingsApi.c similarity index 56% rename from components/software/src/nxSystemSettingsApi.c rename to components/software/src/SystemSettingsApi.c index 9f690f8..50a5195 100644 --- a/components/software/src/nxSystemSettingsApi.c +++ b/components/software/src/SystemSettingsApi.c @@ -1,24 +1,30 @@ +#include "../include/nx/software/SystemSettingsApi.h" + #include #include #include -#include -#include +#include "KeyValueParser.h" #include +#include "../include/nx/software/SystemSettings.h" #define IPV4_ADDR_SIZE 4 /* curl example: curl -v -X POST http://192.168.4.1/sys -d \ - ssid=myssid,wpass=mypassword,wpwsave=1,wstatic=1,ip=3232237657,gw=3232237569,mask=4294967040 + ssid=myssid&wpass=mypassword&wpwsave=1&wstatic=1&ip=3232237657&gw=3232237569&mask=4294967040 */ -#define API_KEY_SSID "ssid" -#define API_KEY_WPASS "wpass" -#define API_KEY_WPWSAVE "wpwsave" -#define API_KEY_USE_STATIC "wstatic" -#define API_KEY_IPV4ADDR "ip" -#define API_KEY_IPV4GW "gw" -#define API_KEY_IPV4MASK "mask" +#define API_KEY_SSID "ssid" +#define API_KEY_WPASS "wpass" +#define API_KEY_WPWSAVE "wpwsave" +#define API_KEY_USE_STATIC "wstatic" +#define API_KEY_IPV4ADDR "ip" +#define API_KEY_IPV4GW "gw" +#define API_KEY_IPV4MASK "mask" +#define API_KEY_DNS_ADDR "dns" +#define API_KEY_SNTP_ADDR "sntp" +#define API_KEY_TZ_ENV "tz" +#define API_KEY_RESTORE "restore_default" #define UNUSED(x) (void)(x) @@ -34,12 +40,15 @@ void int2ip(uint8_t array[4], uint32_t addr) array[3] = (addr & 0x000000FF); } -void handleKvPair(const char* key, const char* value) +void handleKvPair(const char* key, const char* value, const void* userData, bool* done) { printf("System settings update; Key: %s, Value: %s\n", key, value); SystemSettings* settings = nxGetSystemSettings(); - if (strcmp(key, API_KEY_SSID) == 0) { + if (strcmp(key, API_KEY_RESTORE) == 0) { + nxRestoreSystemDefaultSettings(); + } + else if (strcmp(key, API_KEY_SSID) == 0) { strcpy(settings->wifiSsid, value); } else if (strcmp(key, API_KEY_WPASS) == 0) { @@ -54,12 +63,6 @@ void handleKvPair(const char* key, const char* value) else if (strcmp(key, API_KEY_IPV4ADDR) == 0) { uint32_t addr = strtoul(value, NULL, 10); int2ip(settings->ip4addr, addr); - // debug - printf("new ip: %i.%i.%i.%i\n", - settings->ip4addr[0], - settings->ip4addr[1], - settings->ip4addr[2], - settings->ip4addr[3]); } else if (strcmp(key, API_KEY_IPV4GW) == 0) { uint32_t addr = strtoul(value, NULL, 10); @@ -69,6 +72,16 @@ void handleKvPair(const char* key, const char* value) uint32_t addr = strtoul(value, NULL, 10); int2ip(settings->ip4mask, addr); } + else if (strcmp(key, API_KEY_DNS_ADDR) == 0) { + uint32_t addr = strtoul(value, NULL, 10); + int2ip(settings->dnsAddr, addr); + } + else if (strcmp(key, API_KEY_SNTP_ADDR) == 0) { + strcpy(settings->sntpAddr, value); + } + else if (strcmp(key, API_KEY_TZ_ENV) == 0) { + strcpy(settings->tzEnv, value); + } else { fprintf(stderr, "Unknown key: %s\n", key); } @@ -84,14 +97,26 @@ void nxApiGetSystemSettings(const uint8_t* msg, size_t msgLen, SystemSettings* settings = nxGetSystemSettings(); sprintf(responseBuffer, - "{\"%s\"=\"%s\", \"%s\"=%s, \"%s\"=%s, " - "\"%s\"=\"%i.%i.%i.%i\", \"%s\"=\"%i.%i.%i.%i\", \"%s\"=\"%i.%i.%i.%i\"}", + "{" + "\"%s\":\"%s\", " // ssid + "\"%s\":%s, " // power save + "\"%s\":%s, " // use static ip + "\"%s\":\"%i.%i.%i.%i\", " // ip + "\"%s\":\"%i.%i.%i.%i\", " // gw + "\"%s\":\"%i.%i.%i.%i\"," // mask + "\"%s\":\"%i.%i.%i.%i\"," // dns + "\"%s\":\"%s\"," // sntp + "\"%s\":\"%s\"" // tz + "}", API_KEY_SSID, settings->wifiSsid, API_KEY_WPWSAVE, settings->wifiPowerSave ? "true" : "false", API_KEY_USE_STATIC, settings->useStaticAddr ? "true" : "false", API_KEY_IPV4ADDR, settings->ip4addr[0], settings->ip4addr[1], settings->ip4addr[2], settings->ip4addr[3], API_KEY_IPV4GW, settings->ip4gw[0], settings->ip4gw[1], settings->ip4gw[2], settings->ip4gw[3], - API_KEY_IPV4MASK, settings->ip4mask[0], settings->ip4mask[1], settings->ip4mask[2], settings->ip4mask[3] + API_KEY_IPV4MASK, settings->ip4mask[0], settings->ip4mask[1], settings->ip4mask[2], settings->ip4mask[3], + API_KEY_DNS_ADDR, settings->dnsAddr[0], settings->dnsAddr[1], settings->dnsAddr[2], settings->dnsAddr[3], + API_KEY_SNTP_ADDR, settings->sntpAddr, + API_KEY_TZ_ENV, settings->tzEnv ); *response = responseBuffer; *respLen = strlen(responseBuffer); @@ -100,28 +125,7 @@ void nxApiGetSystemSettings(const uint8_t* msg, size_t msgLen, void nxApiUpdateSystemSettings(const uint8_t* msg, size_t msgLen, const char** response, size_t* respLen) { - char key[32]; - char value[32]; - FILE *stream; - stream = fmemopen((void*)msg, strlen((const char*)msg), "r"); - int maxPairs = 10; - while (fscanf(stream, "%127[^=]=%127[^,]%*c", key, value) == 2 && maxPairs > 0) { - handleKvPair(key, value); - maxPairs -= 1; - } + nxParseKeyValueString((const char*)msg, handleKvPair, NULL); nxWriteSystemSettings(); } -void nxApiRestoreSystemSettings(const uint8_t* msg, size_t msgLen, - const char** response, size_t* respLen) -{ - UNUSED(msg); UNUSED(msgLen); UNUSED(response); UNUSED(respLen); - nxRestoreSystemDefaultSettings(); -} - -void nxApiRebootSystem(const uint8_t* msg, size_t msgLen, - const char** response, size_t* respLen) -{ - UNUSED(msg); UNUSED(msgLen); UNUSED(response); UNUSED(respLen); - nxRebootSystem(); -} diff --git a/kicad/mqtrigger.kicad_pcb b/kicad/mqtrigger.kicad_pcb index c521232..0f85b0d 100644 --- a/kicad/mqtrigger.kicad_pcb +++ b/kicad/mqtrigger.kicad_pcb @@ -22,11 +22,11 @@ (31 B.Cu signal) (32 B.Adhes user hide) (33 F.Adhes user hide) - (34 B.Paste user hide) + (34 B.Paste user) (35 F.Paste user hide) - (36 B.SilkS user hide) - (37 F.SilkS user) - (38 B.Mask user hide) + (36 B.SilkS user) + (37 F.SilkS user hide) + (38 B.Mask user) (39 F.Mask user hide) (40 Dwgs.User user hide) (41 Cmts.User user hide) @@ -34,10 +34,10 @@ (43 Eco2.User user hide) (44 Edge.Cuts user) (45 Margin user hide) - (46 B.CrtYd user hide) - (47 F.CrtYd user) - (48 B.Fab user hide) - (49 F.Fab user) + (46 B.CrtYd user) + (47 F.CrtYd user hide) + (48 B.Fab user) + (49 F.Fab user hide) ) (setup @@ -71,7 +71,7 @@ (aux_axis_origin 0 0) (visible_elements FFFFFF7F) (pcbplotparams - (layerselection 0x01030_ffffffff) + (layerselection 0x010f0_ffffffff) (usegerberextensions false) (usegerberattributes true) (usegerberadvancedattributes true) @@ -96,7 +96,7 @@ (mirror false) (drillshape 0) (scaleselection 1) - (outputdirectory "gerber/")) + (outputdirectory "mqtrigger1.1-gerber-fbmask/")) ) (net 0 "") @@ -222,6 +222,25 @@ (add_net "Net-(U3-Pad8)") ) + (module MountingHole:MountingHole_3.2mm_M3 (layer F.Cu) (tedit 56D1B4CB) (tstamp 625B1050) + (at 142.25 68.725) + (descr "Mounting Hole 3.2mm, no annular, M3") + (tags "mounting hole 3.2mm no annular m3") + (attr virtual) + (fp_text reference REF** (at -4.975 -1.575) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value MountingHole_3.2mm_M3 (at 0 4.2) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_circle (center 0 0) (end 3.45 0) (layer F.CrtYd) (width 0.05)) + (fp_circle (center 0 0) (end 3.2 0) (layer Cmts.User) (width 0.15)) + (fp_text user %R (at 0.3 0) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 np_thru_hole circle (at 0 0) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) + ) + (module TerminalBlock:TerminalBlock_Altech_AK300-2_P5.00mm (layer F.Cu) (tedit 59FF0306) (tstamp 625D67B9) (at 127.425 120.075 90) (descr "Altech AK300 terminal block, pitch 5.0mm, 45 degree angled, see http://www.mouser.com/ds/2/16/PCBMETRC-24178.pdf") @@ -233,6 +252,94 @@ (fp_text value TRIG1_IO (at 2.78 7.75 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) + (fp_line (start 8.36 6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.36 6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.83 -6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.83 -6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start 3.36 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -0.25) (end 3.36 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -0.64) (end 6.67 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 -0.64) (end 1.66 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -0.64) (end -1.64 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -0.25) (end 1.66 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.49 -4.32) (end 1.56 -4.95) (layer F.Fab) (width 0.1)) + (fp_line (start -1.62 -4.45) (end 1.44 -5.08) (layer F.Fab) (width 0.1)) + (fp_line (start 3.52 -4.32) (end 6.56 -4.95) (layer F.Fab) (width 0.1)) + (fp_line (start 3.39 -4.45) (end 6.44 -5.08) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -5.97) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -3.43) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -3.43) (end -2.02 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -3.43) (end 2.04 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -3.43) (end 2.98 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -5.97) (end 7.05 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -5.97) (end 7.05 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -3.43) (end 2.98 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -3.17) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -3.17) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -3.17) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -0.64) (end 7.61 4.06) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -1.65) (end 7.61 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -0.64) (end -2.58 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 6.22) (end -2.58 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 0.51) (end 6.28 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 3.36 0.51) (end 3.74 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 0.51) (end 1.28 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 0.51) (end -1.26 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 3.68) (end -1.64 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 3.68) (end -1.64 3.68) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 3.68) (end 1.66 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 3.36 3.68) (end 3.36 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 3.68) (end 3.36 3.68) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 3.68) (end 6.67 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 4.32) (end -2.02 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 4.32) (end 2.04 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 4.32) (end -2.02 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 4.32) (end 7.05 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 4.32) (end 2.98 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 4.32) (end 7.05 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 6.22) (end 2.04 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 6.22) (end -2.02 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -0.25) (end -2.02 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 6.22) (end 2.98 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 6.22) (end 2.04 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 6.22) (end 7.61 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 6.22) (end 7.05 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -0.25) (end 7.05 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 6.22) (end 2.98 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 3.81) (end 8.11 5.46) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 4.06) (end 7.61 5.21) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 3.81) (end 7.61 4.06) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 5.21) (end 7.61 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 5.46) (end 7.61 5.21) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 -1.4) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 -6.22) (end 8.11 -1.4) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end 8.11 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 2.54) (end 3.74 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 -0.25) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.28 2.54) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 2.54) (end 6.28 2.54) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 2.54) (end -1.26 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 -0.25) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 1.28 2.54) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 2.54) (end 1.28 2.54) (layer F.Fab) (width 0.1)) + (fp_line (start 8.2 -6.3) (end -2.65 -6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 -1.2) (end 8.2 -6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 -1.5) (end 8.2 -1.2) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 3.9) (end 7.7 -1.5) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 3.65) (end 7.7 3.9) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 3.7) (end 8.2 3.65) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 5.6) (end 8.2 3.7) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 5.35) (end 8.2 5.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 6.3) (end 7.7 5.35) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.65 6.3) (end 7.7 6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.65 -6.3) (end -2.65 6.3) (layer F.SilkS) (width 0.12)) (fp_arc (start -1.13 -4.65) (end -1.42 -4.13) (angle 104.2) (layer F.Fab) (width 0.1)) (fp_arc (start -0.01 -3.71) (end -1.62 -5) (angle 100) (layer F.Fab) (width 0.1)) (fp_arc (start 0.06 -6.07) (end 1.53 -4.12) (angle 75.5) (layer F.Fab) (width 0.1)) @@ -244,102 +351,14 @@ (fp_text user %R (at 2.5 -2 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start -2.65 -6.3) (end -2.65 6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start -2.65 6.3) (end 7.7 6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 6.3) (end 7.7 5.35) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 5.35) (end 8.2 5.6) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 5.6) (end 8.2 3.7) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 3.7) (end 8.2 3.65) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 3.65) (end 7.7 3.9) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 3.9) (end 7.7 -1.5) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 -1.5) (end 8.2 -1.2) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 -1.2) (end 8.2 -6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 -6.3) (end -2.65 -6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.26 2.54) (end 1.28 2.54) (layer F.Fab) (width 0.1)) - (fp_line (start 1.28 2.54) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -1.26 -0.25) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -1.26 2.54) (end -1.26 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 2.54) (end 6.28 2.54) (layer F.Fab) (width 0.1)) - (fp_line (start 6.28 2.54) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 -0.25) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 2.54) (end 3.74 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end 8.11 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 -6.22) (end 8.11 -1.4) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 -1.4) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 5.46) (end 7.61 5.21) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 5.21) (end 7.61 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 3.81) (end 7.61 4.06) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 4.06) (end 7.61 5.21) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 3.81) (end 8.11 5.46) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 6.22) (end 2.98 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -0.25) (end 7.05 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 6.22) (end 7.05 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 6.22) (end 7.61 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 6.22) (end 2.04 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 6.22) (end 2.98 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -0.25) (end -2.02 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 6.22) (end -2.02 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 6.22) (end 2.04 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 4.32) (end 7.05 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 4.32) (end 2.98 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 4.32) (end 7.05 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 4.32) (end -2.02 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 4.32) (end 2.04 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 4.32) (end -2.02 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 3.68) (end 6.67 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 3.68) (end 3.36 3.68) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 3.68) (end 3.36 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 3.68) (end 1.66 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 3.68) (end -1.64 3.68) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 3.68) (end -1.64 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 0.51) (end -1.26 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 0.51) (end 1.28 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 0.51) (end 3.74 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 0.51) (end 6.28 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 6.22) (end -2.58 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -0.64) (end -2.58 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -1.65) (end 7.61 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -0.64) (end 7.61 4.06) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -3.17) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -3.17) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -3.17) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -3.43) (end 2.98 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -5.97) (end 7.05 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -5.97) (end 7.05 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -3.43) (end 2.98 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -3.43) (end 2.04 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -3.43) (end -2.02 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -3.43) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -5.97) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 3.39 -4.45) (end 6.44 -5.08) (layer F.Fab) (width 0.1)) - (fp_line (start 3.52 -4.32) (end 6.56 -4.95) (layer F.Fab) (width 0.1)) - (fp_line (start -1.62 -4.45) (end 1.44 -5.08) (layer F.Fab) (width 0.1)) - (fp_line (start -1.49 -4.32) (end 1.56 -4.95) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -0.25) (end 1.66 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -0.64) (end -1.64 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 -0.64) (end 1.66 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -0.64) (end 6.67 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -0.25) (end 3.36 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.83 -6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.83 -6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.36 6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.36 6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) (pad 2 thru_hole oval (at 5 0 90) (size 1.98 3.96) (drill 1.32) (layers *.Cu *.Mask) (net 1 GND)) (pad 1 thru_hole rect (at 0 0 90) (size 1.98 3.96) (drill 1.32) (layers *.Cu *.Mask) (net 55 /VCC_CUSTOM)) - (model ${KISYS3DMOD}/TerminalBlock.3dshapes/TerminalBlock_Altech_AK300-2_P5.00mm.wrl - (at (xyz 0 0 0)) + (model ${KISYS3DMOD}/TerminalBlock_Phoenix.3dshapes/TerminalBlock_Phoenix_PT-1%2C5-2-5.0-H_1x02_P5.00mm_Horizontal.step + (offset (xyz 5 -5.5 4)) (scale (xyz 1 1 1)) - (rotate (xyz 0 0 0)) + (rotate (xyz -90 0 180)) ) ) @@ -354,24 +373,24 @@ (fp_text value Conn_01x03 (at 0 7.41 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.33 1.27) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end -1.33 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) (fp_text user %R (at 0 2.54) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) - (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1)) - (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1)) - (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) - (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.33 1.27) (end -1.33 6.41) (layer F.SilkS) (width 0.12)) - (fp_line (start 1.33 1.27) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) (pad 3 thru_hole oval (at 0 5.08 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (net 2 +3V3)) (pad 2 thru_hole oval (at 0 2.54 90) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) @@ -397,19 +416,19 @@ (fp_text value 3.3k (at 0 -1.43 90) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) + (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) (fp_text user %R (at 0 0 90) (layer B.Fab) (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) ) - (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer B.SilkS) (width 0.12)) - (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer B.SilkS) (width 0.12)) - (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1)) (pad 2 smd roundrect (at 0.9125 0 90) (size 0.975 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) (net 25 ESP_LEDB)) (pad 1 smd roundrect (at -0.9125 0 90) (size 0.975 0.95) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) @@ -433,16 +452,16 @@ (fp_text value 3.3k (at 0 -1.43 90) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer B.SilkS) (width 0.12)) - (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer B.SilkS) (width 0.12)) - (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1)) (fp_text user %R (at 0 0 90) (layer B.Fab) (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) ) @@ -469,16 +488,16 @@ (fp_text value 3.3k (at 0 -1.43 90) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer B.SilkS) (width 0.12)) - (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer B.SilkS) (width 0.12)) - (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1)) (fp_text user %R (at 0 0 90) (layer B.Fab) (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) ) @@ -493,25 +512,6 @@ ) ) - (module MountingHole:MountingHole_3.2mm_M3 (layer F.Cu) (tedit 56D1B4CB) (tstamp 625B1050) - (at 142.25 68.725) - (descr "Mounting Hole 3.2mm, no annular, M3") - (tags "mounting hole 3.2mm no annular m3") - (attr virtual) - (fp_text reference REF** (at -4.975 -1.575) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value MountingHole_3.2mm_M3 (at 0 4.2) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center 0 0) (end 3.2 0) (layer Cmts.User) (width 0.15)) - (fp_circle (center 0 0) (end 3.45 0) (layer F.CrtYd) (width 0.05)) - (fp_text user %R (at 0.3 0) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (pad 1 np_thru_hole circle (at 0 0) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) - ) - (module Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder (layer F.Cu) (tedit 5F68FEEF) (tstamp 625DE5C2) (at 146.225 81.025 90) (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") @@ -524,16 +524,16 @@ (fp_text value 0.1uF (at 0 1.43 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -0.146267 0.51) (end 0.146267 0.51) (layer F.SilkS) (width 0.12)) - (fp_line (start -0.146267 -0.51) (end 0.146267 -0.51) (layer F.SilkS) (width 0.12)) - (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer F.Fab) (width 0.1)) - (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer F.Fab) (width 0.1)) - (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer F.Fab) (width 0.1)) (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer F.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer F.Fab) (width 0.1)) + (fp_line (start -0.146267 -0.51) (end 0.146267 -0.51) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.146267 0.51) (end 0.146267 0.51) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) (fp_text user %R (at 0 0 90) (layer F.Fab) (effects (font (size 0.4 0.4) (thickness 0.06))) ) @@ -560,16 +560,16 @@ (fp_text value 0.1uF (at 0 1.43 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -0.146267 0.51) (end 0.146267 0.51) (layer F.SilkS) (width 0.12)) - (fp_line (start -0.146267 -0.51) (end 0.146267 -0.51) (layer F.SilkS) (width 0.12)) - (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer F.Fab) (width 0.1)) - (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer F.Fab) (width 0.1)) - (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer F.Fab) (width 0.1)) (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer F.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer F.Fab) (width 0.1)) + (fp_line (start -0.146267 -0.51) (end 0.146267 -0.51) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.146267 0.51) (end 0.146267 0.51) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) (fp_text user %R (at 0 0 90) (layer F.Fab) (effects (font (size 0.4 0.4) (thickness 0.06))) ) @@ -596,16 +596,16 @@ (fp_text value 0.1uF (at 0 1.43) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -0.146267 0.51) (end 0.146267 0.51) (layer F.SilkS) (width 0.12)) - (fp_line (start -0.146267 -0.51) (end 0.146267 -0.51) (layer F.SilkS) (width 0.12)) - (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer F.Fab) (width 0.1)) - (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer F.Fab) (width 0.1)) - (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer F.Fab) (width 0.1)) (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer F.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer F.Fab) (width 0.1)) + (fp_line (start -0.146267 -0.51) (end 0.146267 -0.51) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.146267 0.51) (end 0.146267 0.51) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) (fp_text user %R (at 0 0) (layer F.Fab) (effects (font (size 0.4 0.4) (thickness 0.06))) ) @@ -632,16 +632,16 @@ (fp_text value 0.1uF (at 0 1.43 180) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -0.146267 0.51) (end 0.146267 0.51) (layer F.SilkS) (width 0.12)) - (fp_line (start -0.146267 -0.51) (end 0.146267 -0.51) (layer F.SilkS) (width 0.12)) - (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer F.Fab) (width 0.1)) - (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer F.Fab) (width 0.1)) - (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer F.Fab) (width 0.1)) (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer F.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer F.Fab) (width 0.1)) + (fp_line (start -0.146267 -0.51) (end 0.146267 -0.51) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.146267 0.51) (end 0.146267 0.51) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) (fp_text user %R (at 0 0 180) (layer F.Fab) (effects (font (size 0.4 0.4) (thickness 0.06))) ) @@ -668,16 +668,16 @@ (fp_text value 100 (at 0 1.43) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer F.SilkS) (width 0.12)) - (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer F.SilkS) (width 0.12)) - (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer F.Fab) (width 0.1)) - (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer F.Fab) (width 0.1)) - (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer F.Fab) (width 0.1)) (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) (fp_text user %R (at 0 0) (layer F.Fab) (effects (font (size 0.4 0.4) (thickness 0.06))) ) @@ -704,16 +704,16 @@ (fp_text value 100 (at 0 1.43) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer F.SilkS) (width 0.12)) - (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer F.SilkS) (width 0.12)) - (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer F.Fab) (width 0.1)) - (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer F.Fab) (width 0.1)) - (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer F.Fab) (width 0.1)) (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) (fp_text user %R (at 0 0) (layer F.Fab) (effects (font (size 0.4 0.4) (thickness 0.06))) ) @@ -740,16 +740,16 @@ (fp_text value 100 (at 0 1.43 180) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer F.SilkS) (width 0.12)) - (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer F.SilkS) (width 0.12)) - (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer F.Fab) (width 0.1)) - (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer F.Fab) (width 0.1)) - (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer F.Fab) (width 0.1)) (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) (fp_text user %R (at 0 0 180) (layer F.Fab) (effects (font (size 0.4 0.4) (thickness 0.06))) ) @@ -776,16 +776,16 @@ (fp_text value 100 (at 0 1.43) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) - (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer F.SilkS) (width 0.12)) - (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer F.SilkS) (width 0.12)) - (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer F.Fab) (width 0.1)) - (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer F.Fab) (width 0.1)) - (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer F.Fab) (width 0.1)) (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer F.Fab) (width 0.1)) + (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.65 0.73) (end -1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.65 -0.73) (end 1.65 -0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end 1.65 0.73) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end -1.65 0.73) (layer F.CrtYd) (width 0.05)) (fp_text user %R (at 0 0) (layer F.Fab) (effects (font (size 0.4 0.4) (thickness 0.06))) ) @@ -812,73 +812,73 @@ (fp_text value ESP32-WROOM-32 (at 0 -11.5) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (fp_line (start -9.12 9.445) (end -9.5 9.445) (layer B.SilkS) (width 0.12)) - (fp_line (start -9.12 15.865) (end -9.12 9.445) (layer B.SilkS) (width 0.12)) - (fp_line (start 9.12 15.865) (end 9.12 9.445) (layer B.SilkS) (width 0.12)) - (fp_line (start -9.12 15.865) (end 9.12 15.865) (layer B.SilkS) (width 0.12)) - (fp_line (start 9.12 -9.88) (end 8.12 -9.88) (layer B.SilkS) (width 0.12)) - (fp_line (start 9.12 -9.1) (end 9.12 -9.88) (layer B.SilkS) (width 0.12)) - (fp_line (start -9.12 -9.88) (end -8.12 -9.88) (layer B.SilkS) (width 0.12)) - (fp_line (start -9.12 -9.1) (end -9.12 -9.88) (layer B.SilkS) (width 0.12)) - (fp_line (start 8.4 20.6) (end 8.2 20.4) (layer Cmts.User) (width 0.1)) - (fp_line (start 8.4 16) (end 8.4 20.6) (layer Cmts.User) (width 0.1)) - (fp_line (start 8.4 20.6) (end 8.6 20.4) (layer Cmts.User) (width 0.1)) - (fp_line (start 8.4 16) (end 8.6 16.2) (layer Cmts.User) (width 0.1)) - (fp_line (start 8.4 16) (end 8.2 16.2) (layer Cmts.User) (width 0.1)) - (fp_line (start -9.2 13.875) (end -9.4 14.075) (layer Cmts.User) (width 0.1)) - (fp_line (start -13.8 13.875) (end -9.2 13.875) (layer Cmts.User) (width 0.1)) - (fp_line (start -9.2 13.875) (end -9.4 13.675) (layer Cmts.User) (width 0.1)) - (fp_line (start -13.8 13.875) (end -13.6 13.675) (layer Cmts.User) (width 0.1)) - (fp_line (start -13.8 13.875) (end -13.6 14.075) (layer Cmts.User) (width 0.1)) - (fp_line (start 9.2 13.875) (end 9.4 13.675) (layer Cmts.User) (width 0.1)) - (fp_line (start 9.2 13.875) (end 9.4 14.075) (layer Cmts.User) (width 0.1)) - (fp_line (start 13.8 13.875) (end 13.6 13.675) (layer Cmts.User) (width 0.1)) - (fp_line (start 13.8 13.875) (end 13.6 14.075) (layer Cmts.User) (width 0.1)) - (fp_line (start 9.2 13.875) (end 13.8 13.875) (layer Cmts.User) (width 0.1)) - (fp_line (start 14 11.585) (end 12 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start 14 13.2) (end 10 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start 14 14.815) (end 8 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start 14 16.43) (end 6 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start 14 18.045) (end 4 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start 14 19.66) (end 2 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start 13.475 20.75) (end 0 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start 11.475 20.75) (end -2 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start 9.475 20.75) (end -4 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start 7.475 20.75) (end -6 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start -8 9.97) (end 5.475 20.75) (layer Dwgs.User) (width 0.1)) - (fp_line (start 3.475 20.75) (end -10 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start 1.475 20.75) (end -12 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start -0.525 20.75) (end -14 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start -2.525 20.75) (end -14 11.585) (layer Dwgs.User) (width 0.1)) - (fp_line (start -4.525 20.75) (end -14 13.2) (layer Dwgs.User) (width 0.1)) - (fp_line (start -6.525 20.75) (end -14 14.815) (layer Dwgs.User) (width 0.1)) - (fp_line (start -8.525 20.75) (end -14 16.43) (layer Dwgs.User) (width 0.1)) - (fp_line (start -10.525 20.75) (end -14 18.045) (layer Dwgs.User) (width 0.1)) - (fp_line (start -12.525 20.75) (end -14 19.66) (layer Dwgs.User) (width 0.1)) - (fp_line (start 9.75 9.72) (end 14.25 9.72) (layer B.CrtYd) (width 0.05)) - (fp_line (start -14.25 9.72) (end -9.75 9.72) (layer B.CrtYd) (width 0.05)) - (fp_line (start 14.25 21) (end 14.25 9.72) (layer B.CrtYd) (width 0.05)) - (fp_line (start -14.25 21) (end -14.25 9.72) (layer B.CrtYd) (width 0.05)) - (fp_line (start 14 20.75) (end -14 20.75) (layer Dwgs.User) (width 0.1)) - (fp_line (start 14 9.97) (end 14 20.75) (layer Dwgs.User) (width 0.1)) - (fp_line (start 14 9.97) (end -14 9.97) (layer Dwgs.User) (width 0.1)) - (fp_line (start -9 9.02) (end -8.5 9.52) (layer B.Fab) (width 0.1)) - (fp_line (start -8.5 9.52) (end -9 10.02) (layer B.Fab) (width 0.1)) - (fp_line (start -9 9.02) (end -9 -9.76) (layer B.Fab) (width 0.1)) - (fp_line (start -14.25 21) (end 14.25 21) (layer B.CrtYd) (width 0.05)) - (fp_line (start 9.75 9.72) (end 9.75 -10.5) (layer B.CrtYd) (width 0.05)) - (fp_line (start -9.75 -10.5) (end 9.75 -10.5) (layer B.CrtYd) (width 0.05)) - (fp_line (start -9.75 -10.5) (end -9.75 9.72) (layer B.CrtYd) (width 0.05)) - (fp_line (start -9 15.745) (end 9 15.745) (layer B.Fab) (width 0.1)) - (fp_line (start -9 15.745) (end -9 10.02) (layer B.Fab) (width 0.1)) - (fp_line (start -9 -9.76) (end 9 -9.76) (layer B.Fab) (width 0.1)) - (fp_line (start 9 -9.76) (end 9 15.745) (layer B.Fab) (width 0.1)) (fp_line (start -14 9.97) (end -14 20.75) (layer Dwgs.User) (width 0.1)) - (fp_text user %R (at 0 0) (layer B.Fab) - (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) - ) - (fp_text user "KEEP-OUT ZONE" (at 0 19) (layer Cmts.User) - (effects (font (size 1 1) (thickness 0.15))) + (fp_line (start 9 -9.76) (end 9 15.745) (layer B.Fab) (width 0.1)) + (fp_line (start -9 -9.76) (end 9 -9.76) (layer B.Fab) (width 0.1)) + (fp_line (start -9 15.745) (end -9 10.02) (layer B.Fab) (width 0.1)) + (fp_line (start -9 15.745) (end 9 15.745) (layer B.Fab) (width 0.1)) + (fp_line (start -9.75 -10.5) (end -9.75 9.72) (layer B.CrtYd) (width 0.05)) + (fp_line (start -9.75 -10.5) (end 9.75 -10.5) (layer B.CrtYd) (width 0.05)) + (fp_line (start 9.75 9.72) (end 9.75 -10.5) (layer B.CrtYd) (width 0.05)) + (fp_line (start -14.25 21) (end 14.25 21) (layer B.CrtYd) (width 0.05)) + (fp_line (start -9 9.02) (end -9 -9.76) (layer B.Fab) (width 0.1)) + (fp_line (start -8.5 9.52) (end -9 10.02) (layer B.Fab) (width 0.1)) + (fp_line (start -9 9.02) (end -8.5 9.52) (layer B.Fab) (width 0.1)) + (fp_line (start 14 9.97) (end -14 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 14 9.97) (end 14 20.75) (layer Dwgs.User) (width 0.1)) + (fp_line (start 14 20.75) (end -14 20.75) (layer Dwgs.User) (width 0.1)) + (fp_line (start -14.25 21) (end -14.25 9.72) (layer B.CrtYd) (width 0.05)) + (fp_line (start 14.25 21) (end 14.25 9.72) (layer B.CrtYd) (width 0.05)) + (fp_line (start -14.25 9.72) (end -9.75 9.72) (layer B.CrtYd) (width 0.05)) + (fp_line (start 9.75 9.72) (end 14.25 9.72) (layer B.CrtYd) (width 0.05)) + (fp_line (start -12.525 20.75) (end -14 19.66) (layer Dwgs.User) (width 0.1)) + (fp_line (start -10.525 20.75) (end -14 18.045) (layer Dwgs.User) (width 0.1)) + (fp_line (start -8.525 20.75) (end -14 16.43) (layer Dwgs.User) (width 0.1)) + (fp_line (start -6.525 20.75) (end -14 14.815) (layer Dwgs.User) (width 0.1)) + (fp_line (start -4.525 20.75) (end -14 13.2) (layer Dwgs.User) (width 0.1)) + (fp_line (start -2.525 20.75) (end -14 11.585) (layer Dwgs.User) (width 0.1)) + (fp_line (start -0.525 20.75) (end -14 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 1.475 20.75) (end -12 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 3.475 20.75) (end -10 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start -8 9.97) (end 5.475 20.75) (layer Dwgs.User) (width 0.1)) + (fp_line (start 7.475 20.75) (end -6 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 9.475 20.75) (end -4 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 11.475 20.75) (end -2 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 13.475 20.75) (end 0 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 14 19.66) (end 2 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 14 18.045) (end 4 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 14 16.43) (end 6 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 14 14.815) (end 8 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 14 13.2) (end 10 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 14 11.585) (end 12 9.97) (layer Dwgs.User) (width 0.1)) + (fp_line (start 9.2 13.875) (end 13.8 13.875) (layer Cmts.User) (width 0.1)) + (fp_line (start 13.8 13.875) (end 13.6 14.075) (layer Cmts.User) (width 0.1)) + (fp_line (start 13.8 13.875) (end 13.6 13.675) (layer Cmts.User) (width 0.1)) + (fp_line (start 9.2 13.875) (end 9.4 14.075) (layer Cmts.User) (width 0.1)) + (fp_line (start 9.2 13.875) (end 9.4 13.675) (layer Cmts.User) (width 0.1)) + (fp_line (start -13.8 13.875) (end -13.6 14.075) (layer Cmts.User) (width 0.1)) + (fp_line (start -13.8 13.875) (end -13.6 13.675) (layer Cmts.User) (width 0.1)) + (fp_line (start -9.2 13.875) (end -9.4 13.675) (layer Cmts.User) (width 0.1)) + (fp_line (start -13.8 13.875) (end -9.2 13.875) (layer Cmts.User) (width 0.1)) + (fp_line (start -9.2 13.875) (end -9.4 14.075) (layer Cmts.User) (width 0.1)) + (fp_line (start 8.4 16) (end 8.2 16.2) (layer Cmts.User) (width 0.1)) + (fp_line (start 8.4 16) (end 8.6 16.2) (layer Cmts.User) (width 0.1)) + (fp_line (start 8.4 20.6) (end 8.6 20.4) (layer Cmts.User) (width 0.1)) + (fp_line (start 8.4 16) (end 8.4 20.6) (layer Cmts.User) (width 0.1)) + (fp_line (start 8.4 20.6) (end 8.2 20.4) (layer Cmts.User) (width 0.1)) + (fp_line (start -9.12 -9.1) (end -9.12 -9.88) (layer B.SilkS) (width 0.12)) + (fp_line (start -9.12 -9.88) (end -8.12 -9.88) (layer B.SilkS) (width 0.12)) + (fp_line (start 9.12 -9.1) (end 9.12 -9.88) (layer B.SilkS) (width 0.12)) + (fp_line (start 9.12 -9.88) (end 8.12 -9.88) (layer B.SilkS) (width 0.12)) + (fp_line (start -9.12 15.865) (end 9.12 15.865) (layer B.SilkS) (width 0.12)) + (fp_line (start 9.12 15.865) (end 9.12 9.445) (layer B.SilkS) (width 0.12)) + (fp_line (start -9.12 15.865) (end -9.12 9.445) (layer B.SilkS) (width 0.12)) + (fp_line (start -9.12 9.445) (end -9.5 9.445) (layer B.SilkS) (width 0.12)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text user "KEEP-OUT ZONE" (at 0 19) (layer Cmts.User) + (effects (font (size 1 1) (thickness 0.15))) ) (fp_text user Antenna (at 0 13) (layer Cmts.User) (effects (font (size 1 1) (thickness 0.15))) @@ -989,24 +989,24 @@ (fp_text value STPS0530Z (at 0 -2.1 270) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (fp_line (start -2.25 1) (end 1.65 1) (layer B.SilkS) (width 0.12)) - (fp_line (start -2.25 -1) (end 1.65 -1) (layer B.SilkS) (width 0.12)) - (fp_line (start -2.35 1.15) (end -2.35 -1.15) (layer B.CrtYd) (width 0.05)) - (fp_line (start 2.35 -1.15) (end -2.35 -1.15) (layer B.CrtYd) (width 0.05)) - (fp_line (start 2.35 1.15) (end 2.35 -1.15) (layer B.CrtYd) (width 0.05)) - (fp_line (start -2.35 1.15) (end 2.35 1.15) (layer B.CrtYd) (width 0.05)) - (fp_line (start -1.4 0.9) (end 1.4 0.9) (layer B.Fab) (width 0.1)) - (fp_line (start 1.4 0.9) (end 1.4 -0.9) (layer B.Fab) (width 0.1)) - (fp_line (start 1.4 -0.9) (end -1.4 -0.9) (layer B.Fab) (width 0.1)) - (fp_line (start -1.4 -0.9) (end -1.4 0.9) (layer B.Fab) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.Fab) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.Fab) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.Fab) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 0.4) (layer B.Fab) (width 0.1)) - (fp_line (start 0.25 0.4) (end 0.25 -0.4) (layer B.Fab) (width 0.1)) - (fp_line (start 0.25 -0.4) (end -0.35 0) (layer B.Fab) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.Fab) (width 0.1)) (fp_line (start -2.25 1) (end -2.25 -1) (layer B.SilkS) (width 0.12)) + (fp_line (start 0.25 0) (end 0.75 0) (layer B.Fab) (width 0.1)) + (fp_line (start 0.25 -0.4) (end -0.35 0) (layer B.Fab) (width 0.1)) + (fp_line (start 0.25 0.4) (end 0.25 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.Fab) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.Fab) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.Fab) (width 0.1)) + (fp_line (start -1.4 -0.9) (end -1.4 0.9) (layer B.Fab) (width 0.1)) + (fp_line (start 1.4 -0.9) (end -1.4 -0.9) (layer B.Fab) (width 0.1)) + (fp_line (start 1.4 0.9) (end 1.4 -0.9) (layer B.Fab) (width 0.1)) + (fp_line (start -1.4 0.9) (end 1.4 0.9) (layer B.Fab) (width 0.1)) + (fp_line (start -2.35 1.15) (end 2.35 1.15) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.35 1.15) (end 2.35 -1.15) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.35 -1.15) (end -2.35 -1.15) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.35 1.15) (end -2.35 -1.15) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.25 -1) (end 1.65 -1) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.25 1) (end 1.65 1) (layer B.SilkS) (width 0.12)) (fp_text user %R (at 0 2 270) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) @@ -1033,19 +1033,19 @@ (fp_text value AP1509-33SG-13 (at 0 -3.4) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (fp_line (start 3.7 2.7) (end -3.7 2.7) (layer B.CrtYd) (width 0.05)) - (fp_line (start 3.7 -2.7) (end 3.7 2.7) (layer B.CrtYd) (width 0.05)) - (fp_line (start -3.7 -2.7) (end 3.7 -2.7) (layer B.CrtYd) (width 0.05)) - (fp_line (start -3.7 2.7) (end -3.7 -2.7) (layer B.CrtYd) (width 0.05)) - (fp_line (start -1.95 1.475) (end -0.975 2.45) (layer B.Fab) (width 0.1)) - (fp_line (start -1.95 -2.45) (end -1.95 1.475) (layer B.Fab) (width 0.1)) - (fp_line (start 1.95 -2.45) (end -1.95 -2.45) (layer B.Fab) (width 0.1)) - (fp_line (start 1.95 2.45) (end 1.95 -2.45) (layer B.Fab) (width 0.1)) - (fp_line (start -0.975 2.45) (end 1.95 2.45) (layer B.Fab) (width 0.1)) - (fp_line (start 0 2.56) (end -3.45 2.56) (layer B.SilkS) (width 0.12)) - (fp_line (start 0 2.56) (end 1.95 2.56) (layer B.SilkS) (width 0.12)) - (fp_line (start 0 -2.56) (end -1.95 -2.56) (layer B.SilkS) (width 0.12)) (fp_line (start 0 -2.56) (end 1.95 -2.56) (layer B.SilkS) (width 0.12)) + (fp_line (start 0 -2.56) (end -1.95 -2.56) (layer B.SilkS) (width 0.12)) + (fp_line (start 0 2.56) (end 1.95 2.56) (layer B.SilkS) (width 0.12)) + (fp_line (start 0 2.56) (end -3.45 2.56) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.975 2.45) (end 1.95 2.45) (layer B.Fab) (width 0.1)) + (fp_line (start 1.95 2.45) (end 1.95 -2.45) (layer B.Fab) (width 0.1)) + (fp_line (start 1.95 -2.45) (end -1.95 -2.45) (layer B.Fab) (width 0.1)) + (fp_line (start -1.95 -2.45) (end -1.95 1.475) (layer B.Fab) (width 0.1)) + (fp_line (start -1.95 1.475) (end -0.975 2.45) (layer B.Fab) (width 0.1)) + (fp_line (start -3.7 2.7) (end -3.7 -2.7) (layer B.CrtYd) (width 0.05)) + (fp_line (start -3.7 -2.7) (end 3.7 -2.7) (layer B.CrtYd) (width 0.05)) + (fp_line (start 3.7 -2.7) (end 3.7 2.7) (layer B.CrtYd) (width 0.05)) + (fp_line (start 3.7 2.7) (end -3.7 2.7) (layer B.CrtYd) (width 0.05)) (fp_text user %R (at 0 0) (layer B.Fab) (effects (font (size 0.98 0.98) (thickness 0.15)) (justify mirror)) ) @@ -1065,7 +1065,7 @@ (net 1 GND)) (pad 8 smd roundrect (at 2.625 1.905) (size 1.65 0.6) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.25) (net 1 GND)) - (model ${KISYS3DMOD}/Package_SO.3dshapes/SOP-8_3.9x4.9mm_P1.27mm.wrl + (model ${KISYS3DMOD}/Package_SO.3dshapes/HSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.1mm.step (at (xyz 0 0 0)) (scale (xyz 1 1 1)) (rotate (xyz 0 0 0)) @@ -1084,16 +1084,16 @@ (fp_text value 10uF (at 0 -1.43 90) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -0.146267 -0.51) (end 0.146267 -0.51) (layer B.SilkS) (width 0.12)) - (fp_line (start -0.146267 0.51) (end 0.146267 0.51) (layer B.SilkS) (width 0.12)) - (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) - (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) - (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.146267 0.51) (end 0.146267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.146267 -0.51) (end 0.146267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) (fp_text user %R (at 0 0 90) (layer B.Fab) (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) ) @@ -1120,16 +1120,16 @@ (fp_text value 2A/32V (at 0 -1.43) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) - (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) - (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) - (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) - (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) (fp_line (start -0.8 -0.4) (end -0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4) (end -0.8 -0.4) (layer B.Fab) (width 0.1)) + (fp_line (start -0.171267 0.51) (end 0.171267 0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.171267 -0.51) (end 0.171267 -0.51) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) (fp_text user %R (at 0 0) (layer B.Fab) (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) ) @@ -1156,18 +1156,18 @@ (fp_text value S1A (at 0 -2.28 270) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (fp_line (start 3.35 -1.58) (end -3.35 -1.58) (layer B.CrtYd) (width 0.05)) - (fp_line (start 3.35 1.58) (end 3.35 -1.58) (layer B.CrtYd) (width 0.05)) - (fp_line (start -3.35 1.58) (end 3.35 1.58) (layer B.CrtYd) (width 0.05)) - (fp_line (start -3.35 -1.58) (end -3.35 1.58) (layer B.CrtYd) (width 0.05)) - (fp_line (start -3.36 -1.585) (end 2.5 -1.585) (layer B.SilkS) (width 0.12)) - (fp_line (start -3.36 1.585) (end -3.36 -1.585) (layer B.SilkS) (width 0.12)) - (fp_line (start 2.5 1.585) (end -3.36 1.585) (layer B.SilkS) (width 0.12)) - (fp_line (start 2.5 -1.25) (end 2.5 1.25) (layer B.Fab) (width 0.1)) - (fp_line (start -2.5 -1.25) (end 2.5 -1.25) (layer B.Fab) (width 0.1)) - (fp_line (start -2.5 0.625) (end -2.5 -1.25) (layer B.Fab) (width 0.1)) - (fp_line (start -1.875 1.25) (end -2.5 0.625) (layer B.Fab) (width 0.1)) (fp_line (start 2.5 1.25) (end -1.875 1.25) (layer B.Fab) (width 0.1)) + (fp_line (start -1.875 1.25) (end -2.5 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -2.5 0.625) (end -2.5 -1.25) (layer B.Fab) (width 0.1)) + (fp_line (start -2.5 -1.25) (end 2.5 -1.25) (layer B.Fab) (width 0.1)) + (fp_line (start 2.5 -1.25) (end 2.5 1.25) (layer B.Fab) (width 0.1)) + (fp_line (start 2.5 1.585) (end -3.36 1.585) (layer B.SilkS) (width 0.12)) + (fp_line (start -3.36 1.585) (end -3.36 -1.585) (layer B.SilkS) (width 0.12)) + (fp_line (start -3.36 -1.585) (end 2.5 -1.585) (layer B.SilkS) (width 0.12)) + (fp_line (start -3.35 -1.58) (end -3.35 1.58) (layer B.CrtYd) (width 0.05)) + (fp_line (start -3.35 1.58) (end 3.35 1.58) (layer B.CrtYd) (width 0.05)) + (fp_line (start 3.35 1.58) (end 3.35 -1.58) (layer B.CrtYd) (width 0.05)) + (fp_line (start 3.35 -1.58) (end -3.35 -1.58) (layer B.CrtYd) (width 0.05)) (fp_text user %R (at 0 0 270) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) @@ -1194,22 +1194,22 @@ (fp_text value 4.7uF (at 0 -1.85) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (fp_line (start 2.48 -1.15) (end -2.48 -1.15) (layer B.CrtYd) (width 0.05)) - (fp_line (start 2.48 1.15) (end 2.48 -1.15) (layer B.CrtYd) (width 0.05)) - (fp_line (start -2.48 1.15) (end 2.48 1.15) (layer B.CrtYd) (width 0.05)) - (fp_line (start -2.48 -1.15) (end -2.48 1.15) (layer B.CrtYd) (width 0.05)) - (fp_line (start -0.711252 -0.91) (end 0.711252 -0.91) (layer B.SilkS) (width 0.12)) - (fp_line (start -0.711252 0.91) (end 0.711252 0.91) (layer B.SilkS) (width 0.12)) - (fp_line (start 1.6 -0.8) (end -1.6 -0.8) (layer B.Fab) (width 0.1)) - (fp_line (start 1.6 0.8) (end 1.6 -0.8) (layer B.Fab) (width 0.1)) - (fp_line (start -1.6 0.8) (end 1.6 0.8) (layer B.Fab) (width 0.1)) (fp_line (start -1.6 -0.8) (end -1.6 0.8) (layer B.Fab) (width 0.1)) + (fp_line (start -1.6 0.8) (end 1.6 0.8) (layer B.Fab) (width 0.1)) + (fp_line (start 1.6 0.8) (end 1.6 -0.8) (layer B.Fab) (width 0.1)) + (fp_line (start 1.6 -0.8) (end -1.6 -0.8) (layer B.Fab) (width 0.1)) + (fp_line (start -0.711252 0.91) (end 0.711252 0.91) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.711252 -0.91) (end 0.711252 -0.91) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.48 -1.15) (end -2.48 1.15) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.48 1.15) (end 2.48 1.15) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.48 1.15) (end 2.48 -1.15) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.48 -1.15) (end -2.48 -1.15) (layer B.CrtYd) (width 0.05)) (fp_text user %R (at 0 0) (layer B.Fab) (effects (font (size 0.8 0.8) (thickness 0.12)) (justify mirror)) ) - (pad 1 smd roundrect (at -1.5625 0) (size 1.325 1.8) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.1886784905660377) + (pad 1 smd roundrect (at -1.5625 0) (size 1.325 1.8) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.1886777358490566) (net 42 F12V)) - (pad 2 smd roundrect (at 1.5625 0) (size 1.325 1.8) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.1886784905660377) + (pad 2 smd roundrect (at 1.5625 0) (size 1.325 1.8) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.1886777358490566) (net 1 GND)) (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_1206_3216Metric.wrl (at (xyz 0 0 0)) @@ -1230,20 +1230,20 @@ (fp_text value LTV-847S (at 0 11.22) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 6.05 -10.45) (end -6.05 -10.45) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.05 10.45) (end 6.05 -10.45) (layer F.CrtYd) (width 0.05)) - (fp_line (start -6.05 10.45) (end 6.05 10.45) (layer F.CrtYd) (width 0.05)) - (fp_line (start -6.05 -10.45) (end -6.05 10.45) (layer F.CrtYd) (width 0.05)) - (fp_line (start 3.235 -10.22) (end 1 -10.22) (layer F.SilkS) (width 0.12)) - (fp_line (start 3.235 10.22) (end 3.235 -10.22) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.235 10.22) (end 3.235 10.22) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.235 -10.22) (end -3.235 10.22) (layer F.SilkS) (width 0.12)) - (fp_line (start -1 -10.22) (end -3.235 -10.22) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.175 -9.16) (end -2.175 -10.16) (layer F.Fab) (width 0.1)) - (fp_line (start -3.175 10.16) (end -3.175 -9.16) (layer F.Fab) (width 0.1)) - (fp_line (start 3.175 10.16) (end -3.175 10.16) (layer F.Fab) (width 0.1)) - (fp_line (start 3.175 -10.16) (end 3.175 10.16) (layer F.Fab) (width 0.1)) (fp_line (start -2.175 -10.16) (end 3.175 -10.16) (layer F.Fab) (width 0.1)) + (fp_line (start 3.175 -10.16) (end 3.175 10.16) (layer F.Fab) (width 0.1)) + (fp_line (start 3.175 10.16) (end -3.175 10.16) (layer F.Fab) (width 0.1)) + (fp_line (start -3.175 10.16) (end -3.175 -9.16) (layer F.Fab) (width 0.1)) + (fp_line (start -3.175 -9.16) (end -2.175 -10.16) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -10.22) (end -3.235 -10.22) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.235 -10.22) (end -3.235 10.22) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.235 10.22) (end 3.235 10.22) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.235 10.22) (end 3.235 -10.22) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.235 -10.22) (end 1 -10.22) (layer F.SilkS) (width 0.12)) + (fp_line (start -6.05 -10.45) (end -6.05 10.45) (layer F.CrtYd) (width 0.05)) + (fp_line (start -6.05 10.45) (end 6.05 10.45) (layer F.CrtYd) (width 0.05)) + (fp_line (start 6.05 10.45) (end 6.05 -10.45) (layer F.CrtYd) (width 0.05)) + (fp_line (start 6.05 -10.45) (end -6.05 -10.45) (layer F.CrtYd) (width 0.05)) (fp_text user %R (at 0 0) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) @@ -1299,16 +1299,16 @@ (fp_text value 10k (at 0 -1.43 270) (layer B.Fab) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) - (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer B.SilkS) (width 0.12)) - (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer B.SilkS) (width 0.12)) - (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1)) - (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1)) (fp_line (start -0.8 -0.4125) (end -0.8 0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start -0.8 0.4125) (end 0.8 0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 0.4125) (end 0.8 -0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start 0.8 -0.4125) (end -0.8 -0.4125) (layer B.Fab) (width 0.1)) + (fp_line (start -0.254724 0.5225) (end 0.254724 0.5225) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.254724 -0.5225) (end 0.254724 -0.5225) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.65 -0.73) (end -1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.65 0.73) (end 1.65 0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 0.73) (end 1.65 -0.73) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.65 -0.73) (end -1.65 -0.73) (layer B.CrtYd) (width 0.05)) (fp_text user %R (at 0 0 270) (layer B.Fab) (effects (font (size 0.4 0.4) (thickness 0.06)) (justify mirror)) ) @@ -1334,113 +1334,113 @@ (fp_text value TRIG4_IO (at 2.78 7.75 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_arc (start -1.13 -4.65) (end -1.42 -4.13) (angle 104.2) (layer F.Fab) (width 0.1)) - (fp_arc (start -0.01 -3.71) (end -1.62 -5) (angle 100) (layer F.Fab) (width 0.1)) - (fp_arc (start 0.06 -6.07) (end 1.53 -4.12) (angle 75.5) (layer F.Fab) (width 0.1)) - (fp_arc (start 1.03 -4.59) (end 1.53 -5.05) (angle 90.5) (layer F.Fab) (width 0.1)) - (fp_arc (start 3.87 -4.65) (end 3.58 -4.13) (angle 104.2) (layer F.Fab) (width 0.1)) - (fp_arc (start 4.99 -3.71) (end 3.39 -5) (angle 100) (layer F.Fab) (width 0.1)) - (fp_arc (start 5.07 -6.07) (end 6.53 -4.12) (angle 75.5) (layer F.Fab) (width 0.1)) - (fp_arc (start 6.03 -4.59) (end 6.54 -5.05) (angle 90.5) (layer F.Fab) (width 0.1)) - (fp_text user %R (at 2.5 -2 90) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -2.65 -6.3) (end -2.65 6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start -2.65 6.3) (end 7.7 6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 6.3) (end 7.7 5.35) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 5.35) (end 8.2 5.6) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 5.6) (end 8.2 3.7) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 3.7) (end 8.2 3.65) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 3.65) (end 7.7 3.9) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 3.9) (end 7.7 -1.5) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 -1.5) (end 8.2 -1.2) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 -1.2) (end 8.2 -6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 -6.3) (end -2.65 -6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.26 2.54) (end 1.28 2.54) (layer F.Fab) (width 0.1)) - (fp_line (start 1.28 2.54) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -1.26 -0.25) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -1.26 2.54) (end -1.26 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 2.54) (end 6.28 2.54) (layer F.Fab) (width 0.1)) - (fp_line (start 6.28 2.54) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 -0.25) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 2.54) (end 3.74 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end 8.11 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 -6.22) (end 8.11 -1.4) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 -1.4) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 5.46) (end 7.61 5.21) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 5.21) (end 7.61 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 3.81) (end 7.61 4.06) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 4.06) (end 7.61 5.21) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 3.81) (end 8.11 5.46) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 6.22) (end 2.98 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -0.25) (end 7.05 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 6.22) (end 7.05 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 6.22) (end 7.61 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 6.22) (end 2.04 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 6.22) (end 2.98 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -0.25) (end -2.02 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 6.22) (end -2.02 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 6.22) (end 2.04 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 4.32) (end 7.05 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 4.32) (end 2.98 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 4.32) (end 7.05 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 4.32) (end -2.02 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 4.32) (end 2.04 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 4.32) (end -2.02 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 3.68) (end 6.67 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 3.68) (end 3.36 3.68) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 3.68) (end 3.36 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 3.68) (end 1.66 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 3.68) (end -1.64 3.68) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 3.68) (end -1.64 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 0.51) (end -1.26 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 0.51) (end 1.28 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 0.51) (end 3.74 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 0.51) (end 6.28 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 6.22) (end -2.58 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -0.64) (end -2.58 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -1.65) (end 7.61 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -0.64) (end 7.61 4.06) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -3.17) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -3.17) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -3.17) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -3.43) (end 2.98 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -5.97) (end 7.05 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -5.97) (end 7.05 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -3.43) (end 2.98 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -3.43) (end 2.04 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -3.43) (end -2.02 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -3.43) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -5.97) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 3.39 -4.45) (end 6.44 -5.08) (layer F.Fab) (width 0.1)) - (fp_line (start 3.52 -4.32) (end 6.56 -4.95) (layer F.Fab) (width 0.1)) - (fp_line (start -1.62 -4.45) (end 1.44 -5.08) (layer F.Fab) (width 0.1)) - (fp_line (start -1.49 -4.32) (end 1.56 -4.95) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -0.25) (end 1.66 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -0.64) (end -1.64 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 -0.64) (end 1.66 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -0.64) (end 6.67 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -0.25) (end 3.36 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.83 -6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.83 -6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.36 6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) (fp_line (start 8.36 6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.36 6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.83 -6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.83 -6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start 3.36 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -0.25) (end 3.36 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -0.64) (end 6.67 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 -0.64) (end 1.66 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -0.64) (end -1.64 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -0.25) (end 1.66 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.49 -4.32) (end 1.56 -4.95) (layer F.Fab) (width 0.1)) + (fp_line (start -1.62 -4.45) (end 1.44 -5.08) (layer F.Fab) (width 0.1)) + (fp_line (start 3.52 -4.32) (end 6.56 -4.95) (layer F.Fab) (width 0.1)) + (fp_line (start 3.39 -4.45) (end 6.44 -5.08) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -5.97) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -3.43) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -3.43) (end -2.02 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -3.43) (end 2.04 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -3.43) (end 2.98 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -5.97) (end 7.05 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -5.97) (end 7.05 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -3.43) (end 2.98 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -3.17) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -3.17) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -3.17) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -0.64) (end 7.61 4.06) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -1.65) (end 7.61 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -0.64) (end -2.58 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 6.22) (end -2.58 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 0.51) (end 6.28 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 3.36 0.51) (end 3.74 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 0.51) (end 1.28 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 0.51) (end -1.26 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 3.68) (end -1.64 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 3.68) (end -1.64 3.68) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 3.68) (end 1.66 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 3.36 3.68) (end 3.36 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 3.68) (end 3.36 3.68) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 3.68) (end 6.67 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 4.32) (end -2.02 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 4.32) (end 2.04 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 4.32) (end -2.02 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 4.32) (end 7.05 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 4.32) (end 2.98 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 4.32) (end 7.05 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 6.22) (end 2.04 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 6.22) (end -2.02 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -0.25) (end -2.02 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 6.22) (end 2.98 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 6.22) (end 2.04 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 6.22) (end 7.61 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 6.22) (end 7.05 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -0.25) (end 7.05 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 6.22) (end 2.98 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 3.81) (end 8.11 5.46) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 4.06) (end 7.61 5.21) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 3.81) (end 7.61 4.06) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 5.21) (end 7.61 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 5.46) (end 7.61 5.21) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 -1.4) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 -6.22) (end 8.11 -1.4) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end 8.11 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 2.54) (end 3.74 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 -0.25) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.28 2.54) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 2.54) (end 6.28 2.54) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 2.54) (end -1.26 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 -0.25) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 1.28 2.54) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 2.54) (end 1.28 2.54) (layer F.Fab) (width 0.1)) + (fp_line (start 8.2 -6.3) (end -2.65 -6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 -1.2) (end 8.2 -6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 -1.5) (end 8.2 -1.2) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 3.9) (end 7.7 -1.5) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 3.65) (end 7.7 3.9) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 3.7) (end 8.2 3.65) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 5.6) (end 8.2 3.7) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 5.35) (end 8.2 5.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 6.3) (end 7.7 5.35) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.65 6.3) (end 7.7 6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.65 -6.3) (end -2.65 6.3) (layer F.SilkS) (width 0.12)) + (fp_arc (start -1.13 -4.65) (end -1.42 -4.13) (angle 104.2) (layer F.Fab) (width 0.1)) + (fp_arc (start -0.01 -3.71) (end -1.62 -5) (angle 100) (layer F.Fab) (width 0.1)) + (fp_arc (start 0.06 -6.07) (end 1.53 -4.12) (angle 75.5) (layer F.Fab) (width 0.1)) + (fp_arc (start 1.03 -4.59) (end 1.53 -5.05) (angle 90.5) (layer F.Fab) (width 0.1)) + (fp_arc (start 3.87 -4.65) (end 3.58 -4.13) (angle 104.2) (layer F.Fab) (width 0.1)) + (fp_arc (start 4.99 -3.71) (end 3.39 -5) (angle 100) (layer F.Fab) (width 0.1)) + (fp_arc (start 5.07 -6.07) (end 6.53 -4.12) (angle 75.5) (layer F.Fab) (width 0.1)) + (fp_arc (start 6.03 -4.59) (end 6.54 -5.05) (angle 90.5) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 2.5 -2 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) (pad 2 thru_hole oval (at 5 0 90) (size 1.98 3.96) (drill 1.32) (layers *.Cu *.Mask) (net 53 /T4E)) (pad 1 thru_hole rect (at 0 0 90) (size 1.98 3.96) (drill 1.32) (layers *.Cu *.Mask) (net 54 /T4C)) - (model ${KISYS3DMOD}/TerminalBlock.3dshapes/TerminalBlock_Altech_AK300-2_P5.00mm.wrl - (at (xyz 0 0 0)) + (model ${KISYS3DMOD}/TerminalBlock_Phoenix.3dshapes/TerminalBlock_Phoenix_PT-1%2C5-2-5.0-H_1x02_P5.00mm_Horizontal.step + (offset (xyz 5 -5.5 4)) (scale (xyz 1 1 1)) - (rotate (xyz 0 0 0)) + (rotate (xyz -90 0 180)) ) ) @@ -1455,113 +1455,113 @@ (fp_text value TRIG3_IO (at 2.78 7.75 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_arc (start -1.13 -4.65) (end -1.42 -4.13) (angle 104.2) (layer F.Fab) (width 0.1)) - (fp_arc (start -0.01 -3.71) (end -1.62 -5) (angle 100) (layer F.Fab) (width 0.1)) - (fp_arc (start 0.06 -6.07) (end 1.53 -4.12) (angle 75.5) (layer F.Fab) (width 0.1)) - (fp_arc (start 1.03 -4.59) (end 1.53 -5.05) (angle 90.5) (layer F.Fab) (width 0.1)) - (fp_arc (start 3.87 -4.65) (end 3.58 -4.13) (angle 104.2) (layer F.Fab) (width 0.1)) - (fp_arc (start 4.99 -3.71) (end 3.39 -5) (angle 100) (layer F.Fab) (width 0.1)) - (fp_arc (start 5.07 -6.07) (end 6.53 -4.12) (angle 75.5) (layer F.Fab) (width 0.1)) - (fp_arc (start 6.03 -4.59) (end 6.54 -5.05) (angle 90.5) (layer F.Fab) (width 0.1)) - (fp_text user %R (at 2.5 -2 90) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -2.65 -6.3) (end -2.65 6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start -2.65 6.3) (end 7.7 6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 6.3) (end 7.7 5.35) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 5.35) (end 8.2 5.6) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 5.6) (end 8.2 3.7) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 3.7) (end 8.2 3.65) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 3.65) (end 7.7 3.9) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 3.9) (end 7.7 -1.5) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 -1.5) (end 8.2 -1.2) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 -1.2) (end 8.2 -6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 -6.3) (end -2.65 -6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.26 2.54) (end 1.28 2.54) (layer F.Fab) (width 0.1)) - (fp_line (start 1.28 2.54) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -1.26 -0.25) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -1.26 2.54) (end -1.26 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 2.54) (end 6.28 2.54) (layer F.Fab) (width 0.1)) - (fp_line (start 6.28 2.54) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 -0.25) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 2.54) (end 3.74 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end 8.11 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 -6.22) (end 8.11 -1.4) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 -1.4) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 5.46) (end 7.61 5.21) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 5.21) (end 7.61 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 3.81) (end 7.61 4.06) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 4.06) (end 7.61 5.21) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 3.81) (end 8.11 5.46) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 6.22) (end 2.98 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -0.25) (end 7.05 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 6.22) (end 7.05 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 6.22) (end 7.61 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 6.22) (end 2.04 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 6.22) (end 2.98 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -0.25) (end -2.02 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 6.22) (end -2.02 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 6.22) (end 2.04 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 4.32) (end 7.05 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 4.32) (end 2.98 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 4.32) (end 7.05 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 4.32) (end -2.02 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 4.32) (end 2.04 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 4.32) (end -2.02 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 3.68) (end 6.67 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 3.68) (end 3.36 3.68) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 3.68) (end 3.36 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 3.68) (end 1.66 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 3.68) (end -1.64 3.68) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 3.68) (end -1.64 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 0.51) (end -1.26 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 0.51) (end 1.28 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 0.51) (end 3.74 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 0.51) (end 6.28 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 6.22) (end -2.58 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -0.64) (end -2.58 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -1.65) (end 7.61 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -0.64) (end 7.61 4.06) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -3.17) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -3.17) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -3.17) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -3.43) (end 2.98 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -5.97) (end 7.05 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -5.97) (end 7.05 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -3.43) (end 2.98 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -3.43) (end 2.04 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -3.43) (end -2.02 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -3.43) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -5.97) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 3.39 -4.45) (end 6.44 -5.08) (layer F.Fab) (width 0.1)) - (fp_line (start 3.52 -4.32) (end 6.56 -4.95) (layer F.Fab) (width 0.1)) - (fp_line (start -1.62 -4.45) (end 1.44 -5.08) (layer F.Fab) (width 0.1)) - (fp_line (start -1.49 -4.32) (end 1.56 -4.95) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -0.25) (end 1.66 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -0.64) (end -1.64 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 -0.64) (end 1.66 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -0.64) (end 6.67 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -0.25) (end 3.36 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.83 -6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.83 -6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.36 6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) (fp_line (start 8.36 6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.36 6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.83 -6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.83 -6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start 3.36 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -0.25) (end 3.36 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -0.64) (end 6.67 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 -0.64) (end 1.66 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -0.64) (end -1.64 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -0.25) (end 1.66 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.49 -4.32) (end 1.56 -4.95) (layer F.Fab) (width 0.1)) + (fp_line (start -1.62 -4.45) (end 1.44 -5.08) (layer F.Fab) (width 0.1)) + (fp_line (start 3.52 -4.32) (end 6.56 -4.95) (layer F.Fab) (width 0.1)) + (fp_line (start 3.39 -4.45) (end 6.44 -5.08) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -5.97) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -3.43) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -3.43) (end -2.02 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -3.43) (end 2.04 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -3.43) (end 2.98 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -5.97) (end 7.05 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -5.97) (end 7.05 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -3.43) (end 2.98 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -3.17) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -3.17) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -3.17) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -0.64) (end 7.61 4.06) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -1.65) (end 7.61 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -0.64) (end -2.58 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 6.22) (end -2.58 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 0.51) (end 6.28 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 3.36 0.51) (end 3.74 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 0.51) (end 1.28 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 0.51) (end -1.26 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 3.68) (end -1.64 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 3.68) (end -1.64 3.68) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 3.68) (end 1.66 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 3.36 3.68) (end 3.36 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 3.68) (end 3.36 3.68) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 3.68) (end 6.67 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 4.32) (end -2.02 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 4.32) (end 2.04 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 4.32) (end -2.02 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 4.32) (end 7.05 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 4.32) (end 2.98 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 4.32) (end 7.05 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 6.22) (end 2.04 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 6.22) (end -2.02 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -0.25) (end -2.02 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 6.22) (end 2.98 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 6.22) (end 2.04 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 6.22) (end 7.61 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 6.22) (end 7.05 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -0.25) (end 7.05 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 6.22) (end 2.98 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 3.81) (end 8.11 5.46) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 4.06) (end 7.61 5.21) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 3.81) (end 7.61 4.06) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 5.21) (end 7.61 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 5.46) (end 7.61 5.21) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 -1.4) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 -6.22) (end 8.11 -1.4) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end 8.11 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 2.54) (end 3.74 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 -0.25) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.28 2.54) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 2.54) (end 6.28 2.54) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 2.54) (end -1.26 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 -0.25) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 1.28 2.54) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 2.54) (end 1.28 2.54) (layer F.Fab) (width 0.1)) + (fp_line (start 8.2 -6.3) (end -2.65 -6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 -1.2) (end 8.2 -6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 -1.5) (end 8.2 -1.2) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 3.9) (end 7.7 -1.5) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 3.65) (end 7.7 3.9) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 3.7) (end 8.2 3.65) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 5.6) (end 8.2 3.7) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 5.35) (end 8.2 5.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 6.3) (end 7.7 5.35) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.65 6.3) (end 7.7 6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.65 -6.3) (end -2.65 6.3) (layer F.SilkS) (width 0.12)) + (fp_arc (start -1.13 -4.65) (end -1.42 -4.13) (angle 104.2) (layer F.Fab) (width 0.1)) + (fp_arc (start -0.01 -3.71) (end -1.62 -5) (angle 100) (layer F.Fab) (width 0.1)) + (fp_arc (start 0.06 -6.07) (end 1.53 -4.12) (angle 75.5) (layer F.Fab) (width 0.1)) + (fp_arc (start 1.03 -4.59) (end 1.53 -5.05) (angle 90.5) (layer F.Fab) (width 0.1)) + (fp_arc (start 3.87 -4.65) (end 3.58 -4.13) (angle 104.2) (layer F.Fab) (width 0.1)) + (fp_arc (start 4.99 -3.71) (end 3.39 -5) (angle 100) (layer F.Fab) (width 0.1)) + (fp_arc (start 5.07 -6.07) (end 6.53 -4.12) (angle 75.5) (layer F.Fab) (width 0.1)) + (fp_arc (start 6.03 -4.59) (end 6.54 -5.05) (angle 90.5) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 2.5 -2 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) (pad 2 thru_hole oval (at 5 0 90) (size 1.98 3.96) (drill 1.32) (layers *.Cu *.Mask) (net 51 /T3E)) (pad 1 thru_hole rect (at 0 0 90) (size 1.98 3.96) (drill 1.32) (layers *.Cu *.Mask) (net 52 /T3C)) - (model ${KISYS3DMOD}/TerminalBlock.3dshapes/TerminalBlock_Altech_AK300-2_P5.00mm.wrl - (at (xyz 0 0 0)) + (model ${KISYS3DMOD}/TerminalBlock_Phoenix.3dshapes/TerminalBlock_Phoenix_PT-1%2C5-2-5.0-H_1x02_P5.00mm_Horizontal.step + (offset (xyz 5 -5.5 4)) (scale (xyz 1 1 1)) - (rotate (xyz 0 0 0)) + (rotate (xyz -90 0 180)) ) ) @@ -1576,6 +1576,94 @@ (fp_text value TRIG2_IO (at 2.78 7.75 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) + (fp_line (start 8.36 6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.36 6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.83 -6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.83 -6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start 3.36 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -0.25) (end 3.36 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -0.64) (end 6.67 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 -0.64) (end 1.66 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -0.64) (end -1.64 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -0.25) (end 1.66 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.49 -4.32) (end 1.56 -4.95) (layer F.Fab) (width 0.1)) + (fp_line (start -1.62 -4.45) (end 1.44 -5.08) (layer F.Fab) (width 0.1)) + (fp_line (start 3.52 -4.32) (end 6.56 -4.95) (layer F.Fab) (width 0.1)) + (fp_line (start 3.39 -4.45) (end 6.44 -5.08) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -5.97) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -3.43) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -3.43) (end -2.02 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -3.43) (end 2.04 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -3.43) (end 2.98 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -5.97) (end 7.05 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -5.97) (end 7.05 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -3.43) (end 2.98 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -3.17) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -3.17) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -3.17) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -0.64) (end 7.61 4.06) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -1.65) (end 7.61 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -0.64) (end -2.58 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 6.22) (end -2.58 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 0.51) (end 6.28 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 3.36 0.51) (end 3.74 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 0.51) (end 1.28 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 0.51) (end -1.26 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 3.68) (end -1.64 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 3.68) (end -1.64 3.68) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 3.68) (end 1.66 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 3.36 3.68) (end 3.36 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 3.68) (end 3.36 3.68) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 3.68) (end 6.67 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 4.32) (end -2.02 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 4.32) (end 2.04 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 4.32) (end -2.02 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 4.32) (end 7.05 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 4.32) (end 2.98 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 4.32) (end 7.05 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 6.22) (end 2.04 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 6.22) (end -2.02 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -0.25) (end -2.02 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 6.22) (end 2.98 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 6.22) (end 2.04 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 6.22) (end 7.61 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 6.22) (end 7.05 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -0.25) (end 7.05 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 6.22) (end 2.98 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 3.81) (end 8.11 5.46) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 4.06) (end 7.61 5.21) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 3.81) (end 7.61 4.06) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 5.21) (end 7.61 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 5.46) (end 7.61 5.21) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 -1.4) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 -6.22) (end 8.11 -1.4) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end 8.11 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 2.54) (end 3.74 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 -0.25) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.28 2.54) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 2.54) (end 6.28 2.54) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 2.54) (end -1.26 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 -0.25) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 1.28 2.54) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 2.54) (end 1.28 2.54) (layer F.Fab) (width 0.1)) + (fp_line (start 8.2 -6.3) (end -2.65 -6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 -1.2) (end 8.2 -6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 -1.5) (end 8.2 -1.2) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 3.9) (end 7.7 -1.5) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 3.65) (end 7.7 3.9) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 3.7) (end 8.2 3.65) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 5.6) (end 8.2 3.7) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 5.35) (end 8.2 5.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 6.3) (end 7.7 5.35) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.65 6.3) (end 7.7 6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.65 -6.3) (end -2.65 6.3) (layer F.SilkS) (width 0.12)) (fp_arc (start -1.13 -4.65) (end -1.42 -4.13) (angle 104.2) (layer F.Fab) (width 0.1)) (fp_arc (start -0.01 -3.71) (end -1.62 -5) (angle 100) (layer F.Fab) (width 0.1)) (fp_arc (start 0.06 -6.07) (end 1.53 -4.12) (angle 75.5) (layer F.Fab) (width 0.1)) @@ -1587,102 +1675,14 @@ (fp_text user %R (at 2.5 -2 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start -2.65 -6.3) (end -2.65 6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start -2.65 6.3) (end 7.7 6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 6.3) (end 7.7 5.35) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 5.35) (end 8.2 5.6) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 5.6) (end 8.2 3.7) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 3.7) (end 8.2 3.65) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 3.65) (end 7.7 3.9) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 3.9) (end 7.7 -1.5) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 -1.5) (end 8.2 -1.2) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 -1.2) (end 8.2 -6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 -6.3) (end -2.65 -6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.26 2.54) (end 1.28 2.54) (layer F.Fab) (width 0.1)) - (fp_line (start 1.28 2.54) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -1.26 -0.25) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -1.26 2.54) (end -1.26 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 2.54) (end 6.28 2.54) (layer F.Fab) (width 0.1)) - (fp_line (start 6.28 2.54) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 -0.25) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 2.54) (end 3.74 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end 8.11 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 -6.22) (end 8.11 -1.4) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 -1.4) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 5.46) (end 7.61 5.21) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 5.21) (end 7.61 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 3.81) (end 7.61 4.06) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 4.06) (end 7.61 5.21) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 3.81) (end 8.11 5.46) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 6.22) (end 2.98 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -0.25) (end 7.05 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 6.22) (end 7.05 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 6.22) (end 7.61 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 6.22) (end 2.04 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 6.22) (end 2.98 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -0.25) (end -2.02 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 6.22) (end -2.02 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 6.22) (end 2.04 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 4.32) (end 7.05 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 4.32) (end 2.98 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 4.32) (end 7.05 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 4.32) (end -2.02 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 4.32) (end 2.04 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 4.32) (end -2.02 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 3.68) (end 6.67 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 3.68) (end 3.36 3.68) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 3.68) (end 3.36 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 3.68) (end 1.66 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 3.68) (end -1.64 3.68) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 3.68) (end -1.64 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 0.51) (end -1.26 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 0.51) (end 1.28 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 0.51) (end 3.74 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 0.51) (end 6.28 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 6.22) (end -2.58 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -0.64) (end -2.58 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -1.65) (end 7.61 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -0.64) (end 7.61 4.06) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -3.17) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -3.17) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -3.17) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -3.43) (end 2.98 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -5.97) (end 7.05 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -5.97) (end 7.05 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -3.43) (end 2.98 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -3.43) (end 2.04 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -3.43) (end -2.02 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -3.43) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -5.97) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 3.39 -4.45) (end 6.44 -5.08) (layer F.Fab) (width 0.1)) - (fp_line (start 3.52 -4.32) (end 6.56 -4.95) (layer F.Fab) (width 0.1)) - (fp_line (start -1.62 -4.45) (end 1.44 -5.08) (layer F.Fab) (width 0.1)) - (fp_line (start -1.49 -4.32) (end 1.56 -4.95) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -0.25) (end 1.66 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -0.64) (end -1.64 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 -0.64) (end 1.66 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -0.64) (end 6.67 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -0.25) (end 3.36 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.83 -6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.83 -6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.36 6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.36 6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) (pad 2 thru_hole oval (at 5 0 90) (size 1.98 3.96) (drill 1.32) (layers *.Cu *.Mask) (net 49 /T2E)) (pad 1 thru_hole rect (at 0 0 90) (size 1.98 3.96) (drill 1.32) (layers *.Cu *.Mask) (net 50 /T2C)) - (model ${KISYS3DMOD}/TerminalBlock.3dshapes/TerminalBlock_Altech_AK300-2_P5.00mm.wrl - (at (xyz 0 0 0)) + (model ${KISYS3DMOD}/TerminalBlock_Phoenix.3dshapes/TerminalBlock_Phoenix_PT-1%2C5-2-5.0-H_1x02_P5.00mm_Horizontal.step + (offset (xyz 5 -5.5 4)) (scale (xyz 1 1 1)) - (rotate (xyz 0 0 0)) + (rotate (xyz -90 0 180)) ) ) @@ -1697,6 +1697,94 @@ (fp_text value TRIG1_IO (at 2.78 7.75 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) + (fp_line (start 8.36 6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.36 6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.83 -6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.83 -6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) + (fp_line (start 3.36 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -0.25) (end 3.36 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -0.64) (end 6.67 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 -0.64) (end 1.66 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -0.64) (end -1.64 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -0.25) (end 1.66 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.49 -4.32) (end 1.56 -4.95) (layer F.Fab) (width 0.1)) + (fp_line (start -1.62 -4.45) (end 1.44 -5.08) (layer F.Fab) (width 0.1)) + (fp_line (start 3.52 -4.32) (end 6.56 -4.95) (layer F.Fab) (width 0.1)) + (fp_line (start 3.39 -4.45) (end 6.44 -5.08) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -5.97) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -3.43) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -3.43) (end -2.02 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 -3.43) (end 2.04 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -3.43) (end 2.98 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -5.97) (end 7.05 -3.43) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -5.97) (end 7.05 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 -3.43) (end 2.98 -5.97) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -3.17) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -3.17) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -3.17) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -0.64) (end 7.61 4.06) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -1.65) (end 7.61 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 -0.64) (end -2.58 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 6.22) (end -2.58 -0.64) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 0.51) (end 6.28 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 3.36 0.51) (end 3.74 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 0.51) (end 1.28 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 0.51) (end -1.26 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -1.64 3.68) (end -1.64 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 3.68) (end -1.64 3.68) (layer F.Fab) (width 0.1)) + (fp_line (start 1.66 3.68) (end 1.66 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 3.36 3.68) (end 3.36 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 3.68) (end 3.36 3.68) (layer F.Fab) (width 0.1)) + (fp_line (start 6.67 3.68) (end 6.67 0.51) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 4.32) (end -2.02 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 4.32) (end 2.04 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 4.32) (end -2.02 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 4.32) (end 7.05 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 4.32) (end 2.98 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 4.32) (end 7.05 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 6.22) (end 2.04 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.58 6.22) (end -2.02 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start -2.02 -0.25) (end -2.02 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 6.22) (end 2.98 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.04 6.22) (end 2.04 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 6.22) (end 7.61 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 6.22) (end 7.05 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.05 -0.25) (end 7.05 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 2.98 6.22) (end 2.98 4.32) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 3.81) (end 8.11 5.46) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 4.06) (end 7.61 5.21) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 3.81) (end 7.61 4.06) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 5.21) (end 7.61 6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 5.46) (end 7.61 5.21) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 -1.4) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) + (fp_line (start 8.11 -6.22) (end 8.11 -1.4) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end 8.11 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) + (fp_line (start 7.61 -6.22) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 2.54) (end 3.74 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 -0.25) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 6.28 2.54) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 3.74 2.54) (end 6.28 2.54) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 2.54) (end -1.26 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 -0.25) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start 1.28 2.54) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) + (fp_line (start -1.26 2.54) (end 1.28 2.54) (layer F.Fab) (width 0.1)) + (fp_line (start 8.2 -6.3) (end -2.65 -6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 -1.2) (end 8.2 -6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 -1.5) (end 8.2 -1.2) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 3.9) (end 7.7 -1.5) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 3.65) (end 7.7 3.9) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 3.7) (end 8.2 3.65) (layer F.SilkS) (width 0.12)) + (fp_line (start 8.2 5.6) (end 8.2 3.7) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 5.35) (end 8.2 5.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.7 6.3) (end 7.7 5.35) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.65 6.3) (end 7.7 6.3) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.65 -6.3) (end -2.65 6.3) (layer F.SilkS) (width 0.12)) (fp_arc (start -1.13 -4.65) (end -1.42 -4.13) (angle 104.2) (layer F.Fab) (width 0.1)) (fp_arc (start -0.01 -3.71) (end -1.62 -5) (angle 100) (layer F.Fab) (width 0.1)) (fp_arc (start 0.06 -6.07) (end 1.53 -4.12) (angle 75.5) (layer F.Fab) (width 0.1)) @@ -1708,102 +1796,14 @@ (fp_text user %R (at 2.5 -2 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start -2.65 -6.3) (end -2.65 6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start -2.65 6.3) (end 7.7 6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 6.3) (end 7.7 5.35) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 5.35) (end 8.2 5.6) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 5.6) (end 8.2 3.7) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 3.7) (end 8.2 3.65) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 3.65) (end 7.7 3.9) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 3.9) (end 7.7 -1.5) (layer F.SilkS) (width 0.12)) - (fp_line (start 7.7 -1.5) (end 8.2 -1.2) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 -1.2) (end 8.2 -6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start 8.2 -6.3) (end -2.65 -6.3) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.26 2.54) (end 1.28 2.54) (layer F.Fab) (width 0.1)) - (fp_line (start 1.28 2.54) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -1.26 -0.25) (end 1.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -1.26 2.54) (end -1.26 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 2.54) (end 6.28 2.54) (layer F.Fab) (width 0.1)) - (fp_line (start 6.28 2.54) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 -0.25) (end 6.28 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.74 2.54) (end 3.74 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -6.22) (end 8.11 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 -6.22) (end 8.11 -1.4) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 -1.4) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 5.46) (end 7.61 5.21) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 5.21) (end 7.61 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 3.81) (end 7.61 4.06) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 4.06) (end 7.61 5.21) (layer F.Fab) (width 0.1)) - (fp_line (start 8.11 3.81) (end 8.11 5.46) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 6.22) (end 2.98 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -0.25) (end 7.05 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 6.22) (end 7.05 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 6.22) (end 7.61 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 6.22) (end 2.04 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 6.22) (end 2.98 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -0.25) (end -2.02 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 6.22) (end -2.02 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 6.22) (end 2.04 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 4.32) (end 7.05 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 4.32) (end 2.98 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 4.32) (end 7.05 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 4.32) (end -2.02 4.32) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 4.32) (end 2.04 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 4.32) (end -2.02 6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 3.68) (end 6.67 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 3.68) (end 3.36 3.68) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 3.68) (end 3.36 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 3.68) (end 1.66 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 3.68) (end -1.64 3.68) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 3.68) (end -1.64 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 0.51) (end -1.26 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 0.51) (end 1.28 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 0.51) (end 3.74 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 0.51) (end 6.28 0.51) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 6.22) (end -2.58 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -0.64) (end -2.58 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -1.65) (end 7.61 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -0.64) (end 7.61 4.06) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -3.17) (end 7.61 -3.17) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -3.17) (end -2.58 -6.22) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -3.17) (end 7.61 -1.65) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -3.43) (end 2.98 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -5.97) (end 7.05 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -5.97) (end 7.05 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -3.43) (end 2.98 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -3.43) (end 2.04 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -3.43) (end -2.02 -3.43) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -3.43) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -5.97) (end -2.02 -5.97) (layer F.Fab) (width 0.1)) - (fp_line (start 3.39 -4.45) (end 6.44 -5.08) (layer F.Fab) (width 0.1)) - (fp_line (start 3.52 -4.32) (end 6.56 -4.95) (layer F.Fab) (width 0.1)) - (fp_line (start -1.62 -4.45) (end 1.44 -5.08) (layer F.Fab) (width 0.1)) - (fp_line (start -1.49 -4.32) (end 1.56 -4.95) (layer F.Fab) (width 0.1)) - (fp_line (start -2.02 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 2.04 -0.25) (end 1.66 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 -0.25) (end -1.64 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.58 -0.64) (end -1.64 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start -1.64 -0.64) (end 1.66 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 1.66 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.61 -0.64) (end 6.67 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 6.67 -0.64) (end 3.36 -0.64) (layer F.Fab) (width 0.1)) - (fp_line (start 7.05 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 2.98 -0.25) (end 3.36 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start 3.36 -0.25) (end 6.67 -0.25) (layer F.Fab) (width 0.1)) - (fp_line (start -2.83 -6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.83 -6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.36 6.47) (end 8.36 -6.47) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.36 6.47) (end -2.83 6.47) (layer F.CrtYd) (width 0.05)) (pad 2 thru_hole oval (at 5 0 90) (size 1.98 3.96) (drill 1.32) (layers *.Cu *.Mask) (net 47 /T1E)) (pad 1 thru_hole rect (at 0 0 90) (size 1.98 3.96) (drill 1.32) (layers *.Cu *.Mask) (net 48 /T1C)) - (model ${KISYS3DMOD}/TerminalBlock.3dshapes/TerminalBlock_Altech_AK300-2_P5.00mm.wrl - (at (xyz 0 0 0)) + (model ${KISYS3DMOD}/TerminalBlock_Phoenix.3dshapes/TerminalBlock_Phoenix_PT-1%2C5-2-5.0-H_1x02_P5.00mm_Horizontal.step + (offset (xyz 5 -5.5 4)) (scale (xyz 1 1 1)) - (rotate (xyz 0 0 0)) + (rotate (xyz -90 0 180)) ) ) @@ -1819,55 +1819,55 @@ (fp_text value SERVICE (at 0.3 3.2 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 4.7 -2.4) (end -4.7 -2.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.7 2.4) (end 4.7 -2.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.7 2.4) (end 4.7 2.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.7 -2.4) (end -4.7 2.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -0.603333 -0.635) (end -0.603333 0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.565) (end -0.603333 0.565) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.445) (end -0.603333 0.445) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.325) (end -0.603333 0.325) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.205) (end -0.603333 0.205) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.085) (end -0.603333 0.085) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.035) (end -0.603333 -0.035) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.155) (end -0.603333 -0.155) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.275) (end -0.603333 -0.275) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.395) (end -0.603333 -0.395) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.515) (end -0.603333 -0.515) (layer F.SilkS) (width 0.12)) - (fp_line (start 1.81 -0.635) (end -1.81 -0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start 1.81 0.635) (end 1.81 -0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.635) (end 1.81 0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.635) (end -1.81 0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.65 -2.35) (end -3.65 -0.967) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.65 -2.35) (end -2.267 -2.35) (layer F.SilkS) (width 0.12)) - (fp_line (start 3.41 0.8) (end 3.41 2.11) (layer F.SilkS) (width 0.12)) - (fp_line (start 3.41 -2.11) (end 3.41 -0.8) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.41 0.8) (end -3.41 2.11) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.41 -2.11) (end -3.41 -0.8) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.41 2.11) (end 3.41 2.11) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.41 -2.11) (end 3.41 -2.11) (layer F.SilkS) (width 0.12)) - (fp_line (start -0.603333 -0.635) (end -0.603333 0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.565) (end -0.603333 0.565) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.465) (end -0.603333 0.465) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.365) (end -0.603333 0.365) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.265) (end -0.603333 0.265) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.165) (end -0.603333 0.165) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.065) (end -0.603333 0.065) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.035) (end -0.603333 -0.035) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.135) (end -0.603333 -0.135) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.235) (end -0.603333 -0.235) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.335) (end -0.603333 -0.335) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.435) (end -0.603333 -0.435) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.535) (end -0.603333 -0.535) (layer F.Fab) (width 0.1)) - (fp_line (start 1.81 -0.635) (end -1.81 -0.635) (layer F.Fab) (width 0.1)) - (fp_line (start 1.81 0.635) (end 1.81 -0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.635) (end 1.81 0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.635) (end -1.81 0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -3.35 -1.05) (end -2.35 -2.05) (layer F.Fab) (width 0.1)) - (fp_line (start -3.35 2.05) (end -3.35 -1.05) (layer F.Fab) (width 0.1)) - (fp_line (start 3.35 2.05) (end -3.35 2.05) (layer F.Fab) (width 0.1)) - (fp_line (start 3.35 -2.05) (end 3.35 2.05) (layer F.Fab) (width 0.1)) (fp_line (start -2.35 -2.05) (end 3.35 -2.05) (layer F.Fab) (width 0.1)) + (fp_line (start 3.35 -2.05) (end 3.35 2.05) (layer F.Fab) (width 0.1)) + (fp_line (start 3.35 2.05) (end -3.35 2.05) (layer F.Fab) (width 0.1)) + (fp_line (start -3.35 2.05) (end -3.35 -1.05) (layer F.Fab) (width 0.1)) + (fp_line (start -3.35 -1.05) (end -2.35 -2.05) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.635) (end -1.81 0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.635) (end 1.81 0.635) (layer F.Fab) (width 0.1)) + (fp_line (start 1.81 0.635) (end 1.81 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start 1.81 -0.635) (end -1.81 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.535) (end -0.603333 -0.535) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.435) (end -0.603333 -0.435) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.335) (end -0.603333 -0.335) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.235) (end -0.603333 -0.235) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.135) (end -0.603333 -0.135) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.035) (end -0.603333 -0.035) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.065) (end -0.603333 0.065) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.165) (end -0.603333 0.165) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.265) (end -0.603333 0.265) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.365) (end -0.603333 0.365) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.465) (end -0.603333 0.465) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.565) (end -0.603333 0.565) (layer F.Fab) (width 0.1)) + (fp_line (start -0.603333 -0.635) (end -0.603333 0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -3.41 -2.11) (end 3.41 -2.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.41 2.11) (end 3.41 2.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.41 -2.11) (end -3.41 -0.8) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.41 0.8) (end -3.41 2.11) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.41 -2.11) (end 3.41 -0.8) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.41 0.8) (end 3.41 2.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.65 -2.35) (end -2.267 -2.35) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.65 -2.35) (end -3.65 -0.967) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.635) (end -1.81 0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.635) (end 1.81 0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.81 0.635) (end 1.81 -0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.81 -0.635) (end -1.81 -0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.515) (end -0.603333 -0.515) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.395) (end -0.603333 -0.395) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.275) (end -0.603333 -0.275) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.155) (end -0.603333 -0.155) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.035) (end -0.603333 -0.035) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.085) (end -0.603333 0.085) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.205) (end -0.603333 0.205) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.325) (end -0.603333 0.325) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.445) (end -0.603333 0.445) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.565) (end -0.603333 0.565) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.603333 -0.635) (end -0.603333 0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start -4.7 -2.4) (end -4.7 2.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start -4.7 2.4) (end 4.7 2.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.7 2.4) (end 4.7 -2.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.7 -2.4) (end -4.7 -2.4) (layer F.CrtYd) (width 0.05)) (fp_text user on (at 0.8975 -1.3425 90) (layer F.Fab) (effects (font (size 0.6 0.6) (thickness 0.09))) ) @@ -1897,55 +1897,55 @@ (fp_text value BOOT (at 0 3.11 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 4.7 -2.4) (end -4.7 -2.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.7 2.4) (end 4.7 -2.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.7 2.4) (end 4.7 2.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.7 -2.4) (end -4.7 2.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -0.603333 -0.635) (end -0.603333 0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.565) (end -0.603333 0.565) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.445) (end -0.603333 0.445) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.325) (end -0.603333 0.325) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.205) (end -0.603333 0.205) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.085) (end -0.603333 0.085) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.035) (end -0.603333 -0.035) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.155) (end -0.603333 -0.155) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.275) (end -0.603333 -0.275) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.395) (end -0.603333 -0.395) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.515) (end -0.603333 -0.515) (layer F.SilkS) (width 0.12)) - (fp_line (start 1.81 -0.635) (end -1.81 -0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start 1.81 0.635) (end 1.81 -0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.635) (end 1.81 0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.635) (end -1.81 0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.65 -2.35) (end -3.65 -0.967) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.65 -2.35) (end -2.267 -2.35) (layer F.SilkS) (width 0.12)) - (fp_line (start 3.41 0.8) (end 3.41 2.11) (layer F.SilkS) (width 0.12)) - (fp_line (start 3.41 -2.11) (end 3.41 -0.8) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.41 0.8) (end -3.41 2.11) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.41 -2.11) (end -3.41 -0.8) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.41 2.11) (end 3.41 2.11) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.41 -2.11) (end 3.41 -2.11) (layer F.SilkS) (width 0.12)) - (fp_line (start -0.603333 -0.635) (end -0.603333 0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.565) (end -0.603333 0.565) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.465) (end -0.603333 0.465) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.365) (end -0.603333 0.365) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.265) (end -0.603333 0.265) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.165) (end -0.603333 0.165) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.065) (end -0.603333 0.065) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.035) (end -0.603333 -0.035) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.135) (end -0.603333 -0.135) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.235) (end -0.603333 -0.235) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.335) (end -0.603333 -0.335) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.435) (end -0.603333 -0.435) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.535) (end -0.603333 -0.535) (layer F.Fab) (width 0.1)) - (fp_line (start 1.81 -0.635) (end -1.81 -0.635) (layer F.Fab) (width 0.1)) - (fp_line (start 1.81 0.635) (end 1.81 -0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.635) (end 1.81 0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.635) (end -1.81 0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -3.35 -1.05) (end -2.35 -2.05) (layer F.Fab) (width 0.1)) - (fp_line (start -3.35 2.05) (end -3.35 -1.05) (layer F.Fab) (width 0.1)) - (fp_line (start 3.35 2.05) (end -3.35 2.05) (layer F.Fab) (width 0.1)) - (fp_line (start 3.35 -2.05) (end 3.35 2.05) (layer F.Fab) (width 0.1)) (fp_line (start -2.35 -2.05) (end 3.35 -2.05) (layer F.Fab) (width 0.1)) + (fp_line (start 3.35 -2.05) (end 3.35 2.05) (layer F.Fab) (width 0.1)) + (fp_line (start 3.35 2.05) (end -3.35 2.05) (layer F.Fab) (width 0.1)) + (fp_line (start -3.35 2.05) (end -3.35 -1.05) (layer F.Fab) (width 0.1)) + (fp_line (start -3.35 -1.05) (end -2.35 -2.05) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.635) (end -1.81 0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.635) (end 1.81 0.635) (layer F.Fab) (width 0.1)) + (fp_line (start 1.81 0.635) (end 1.81 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start 1.81 -0.635) (end -1.81 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.535) (end -0.603333 -0.535) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.435) (end -0.603333 -0.435) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.335) (end -0.603333 -0.335) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.235) (end -0.603333 -0.235) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.135) (end -0.603333 -0.135) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.035) (end -0.603333 -0.035) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.065) (end -0.603333 0.065) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.165) (end -0.603333 0.165) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.265) (end -0.603333 0.265) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.365) (end -0.603333 0.365) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.465) (end -0.603333 0.465) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.565) (end -0.603333 0.565) (layer F.Fab) (width 0.1)) + (fp_line (start -0.603333 -0.635) (end -0.603333 0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -3.41 -2.11) (end 3.41 -2.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.41 2.11) (end 3.41 2.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.41 -2.11) (end -3.41 -0.8) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.41 0.8) (end -3.41 2.11) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.41 -2.11) (end 3.41 -0.8) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.41 0.8) (end 3.41 2.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.65 -2.35) (end -2.267 -2.35) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.65 -2.35) (end -3.65 -0.967) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.635) (end -1.81 0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.635) (end 1.81 0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.81 0.635) (end 1.81 -0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.81 -0.635) (end -1.81 -0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.515) (end -0.603333 -0.515) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.395) (end -0.603333 -0.395) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.275) (end -0.603333 -0.275) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.155) (end -0.603333 -0.155) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.035) (end -0.603333 -0.035) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.085) (end -0.603333 0.085) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.205) (end -0.603333 0.205) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.325) (end -0.603333 0.325) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.445) (end -0.603333 0.445) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.565) (end -0.603333 0.565) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.603333 -0.635) (end -0.603333 0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start -4.7 -2.4) (end -4.7 2.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start -4.7 2.4) (end 4.7 2.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.7 2.4) (end 4.7 -2.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.7 -2.4) (end -4.7 -2.4) (layer F.CrtYd) (width 0.05)) (fp_text user on (at 0.8975 -1.3425 90) (layer F.Fab) (effects (font (size 0.6 0.6) (thickness 0.09))) ) @@ -1975,99 +1975,99 @@ (fp_text value RESET (at 0 3.11 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 4.7 -2.4) (end -4.7 -2.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.7 2.4) (end 4.7 -2.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.7 2.4) (end 4.7 2.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.7 -2.4) (end -4.7 2.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -0.603333 -0.635) (end -0.603333 0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.565) (end -0.603333 0.565) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.445) (end -0.603333 0.445) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.325) (end -0.603333 0.325) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.205) (end -0.603333 0.205) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.085) (end -0.603333 0.085) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.035) (end -0.603333 -0.035) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.155) (end -0.603333 -0.155) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.275) (end -0.603333 -0.275) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.395) (end -0.603333 -0.395) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.515) (end -0.603333 -0.515) (layer F.SilkS) (width 0.12)) - (fp_line (start 1.81 -0.635) (end -1.81 -0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start 1.81 0.635) (end 1.81 -0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 0.635) (end 1.81 0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.81 -0.635) (end -1.81 0.635) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.65 -2.35) (end -3.65 -0.967) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.65 -2.35) (end -2.267 -2.35) (layer F.SilkS) (width 0.12)) - (fp_line (start 3.41 0.8) (end 3.41 2.11) (layer F.SilkS) (width 0.12)) - (fp_line (start 3.41 -2.11) (end 3.41 -0.8) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.41 0.8) (end -3.41 2.11) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.41 -2.11) (end -3.41 -0.8) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.41 2.11) (end 3.41 2.11) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.41 -2.11) (end 3.41 -2.11) (layer F.SilkS) (width 0.12)) - (fp_line (start -0.603333 -0.635) (end -0.603333 0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.565) (end -0.603333 0.565) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.465) (end -0.603333 0.465) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.365) (end -0.603333 0.365) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.265) (end -0.603333 0.265) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.165) (end -0.603333 0.165) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.065) (end -0.603333 0.065) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.035) (end -0.603333 -0.035) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.135) (end -0.603333 -0.135) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.235) (end -0.603333 -0.235) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.335) (end -0.603333 -0.335) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.435) (end -0.603333 -0.435) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.535) (end -0.603333 -0.535) (layer F.Fab) (width 0.1)) - (fp_line (start 1.81 -0.635) (end -1.81 -0.635) (layer F.Fab) (width 0.1)) - (fp_line (start 1.81 0.635) (end 1.81 -0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 0.635) (end 1.81 0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -1.81 -0.635) (end -1.81 0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -3.35 -1.05) (end -2.35 -2.05) (layer F.Fab) (width 0.1)) - (fp_line (start -3.35 2.05) (end -3.35 -1.05) (layer F.Fab) (width 0.1)) - (fp_line (start 3.35 2.05) (end -3.35 2.05) (layer F.Fab) (width 0.1)) - (fp_line (start 3.35 -2.05) (end 3.35 2.05) (layer F.Fab) (width 0.1)) (fp_line (start -2.35 -2.05) (end 3.35 -2.05) (layer F.Fab) (width 0.1)) - (fp_text user on (at 0.8975 -1.3425 90) (layer F.Fab) - (effects (font (size 0.6 0.6) (thickness 0.09))) - ) - (fp_text user %R (at 2.58 0) (layer F.Fab) - (effects (font (size 0.6 0.6) (thickness 0.09))) - ) - (pad 2 smd rect (at 3.365 0 270) (size 2.16 1.12) (layers F.Cu F.Paste F.Mask) - (net 22 ESP_EN)) - (pad 1 smd rect (at -3.365 0 270) (size 2.16 1.12) (layers F.Cu F.Paste F.Mask) - (net 1 GND)) - (model ${KISYS3DMOD}/Button_Switch_SMD.3dshapes/SW_DIP_SPSTx01_Slide_6.7x4.1mm_W6.73mm_P2.54mm_LowProfile_JPin.wrl - (at (xyz 0 0 0)) - (scale (xyz 1 1 1)) - (rotate (xyz 0 0 90)) - ) - ) - - (module Inductor_SMD:L_Bourns_SRN6045TA (layer F.Cu) (tedit 5B61DEEA) (tstamp 625B2B11) - (at 157.45 105.975 180) - (descr http://www.bourns.com/docs/product-datasheets/srn6045ta.pdf) - (tags "Semi-shielded Power Inductor") - (path /6254EE90) - (attr smd) - (fp_text reference L1 (at -2.375 3.95) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DJNR6045-470-S (at 0 4.2) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -3.1 -3.1) (end -3.1 -2.65) (layer F.SilkS) (width 0.12)) - (fp_line (start 3.5 -3.25) (end -3.5 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.5 3.25) (end 3.5 3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.5 -3.25) (end -3.5 3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 3.5 3.25) (end 3.5 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.1 3.1) (end -3.1 2.65) (layer F.SilkS) (width 0.12)) - (fp_line (start 3.1 3.1) (end 3.1 2.65) (layer F.SilkS) (width 0.12)) - (fp_line (start 3.1 3.1) (end -3.1 3.1) (layer F.SilkS) (width 0.12)) - (fp_line (start 3.1 -3.1) (end 3.1 -2.65) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.1 -3.1) (end 3.1 -3.1) (layer F.SilkS) (width 0.12)) - (fp_line (start 3 3) (end 3 -3) (layer F.Fab) (width 0.1)) - (fp_line (start -3 3) (end 3 3) (layer F.Fab) (width 0.1)) - (fp_line (start -3 -3) (end -3 3) (layer F.Fab) (width 0.1)) - (fp_line (start -3 -3) (end 3 -3) (layer F.Fab) (width 0.1)) - (fp_text user %R (at 0 0 90) (layer F.Fab) + (fp_line (start 3.35 -2.05) (end 3.35 2.05) (layer F.Fab) (width 0.1)) + (fp_line (start 3.35 2.05) (end -3.35 2.05) (layer F.Fab) (width 0.1)) + (fp_line (start -3.35 2.05) (end -3.35 -1.05) (layer F.Fab) (width 0.1)) + (fp_line (start -3.35 -1.05) (end -2.35 -2.05) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.635) (end -1.81 0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.635) (end 1.81 0.635) (layer F.Fab) (width 0.1)) + (fp_line (start 1.81 0.635) (end 1.81 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start 1.81 -0.635) (end -1.81 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.535) (end -0.603333 -0.535) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.435) (end -0.603333 -0.435) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.335) (end -0.603333 -0.335) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.235) (end -0.603333 -0.235) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.135) (end -0.603333 -0.135) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 -0.035) (end -0.603333 -0.035) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.065) (end -0.603333 0.065) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.165) (end -0.603333 0.165) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.265) (end -0.603333 0.265) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.365) (end -0.603333 0.365) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.465) (end -0.603333 0.465) (layer F.Fab) (width 0.1)) + (fp_line (start -1.81 0.565) (end -0.603333 0.565) (layer F.Fab) (width 0.1)) + (fp_line (start -0.603333 -0.635) (end -0.603333 0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -3.41 -2.11) (end 3.41 -2.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.41 2.11) (end 3.41 2.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.41 -2.11) (end -3.41 -0.8) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.41 0.8) (end -3.41 2.11) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.41 -2.11) (end 3.41 -0.8) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.41 0.8) (end 3.41 2.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.65 -2.35) (end -2.267 -2.35) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.65 -2.35) (end -3.65 -0.967) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.635) (end -1.81 0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.635) (end 1.81 0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.81 0.635) (end 1.81 -0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.81 -0.635) (end -1.81 -0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.515) (end -0.603333 -0.515) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.395) (end -0.603333 -0.395) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.275) (end -0.603333 -0.275) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.155) (end -0.603333 -0.155) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 -0.035) (end -0.603333 -0.035) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.085) (end -0.603333 0.085) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.205) (end -0.603333 0.205) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.325) (end -0.603333 0.325) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.445) (end -0.603333 0.445) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.81 0.565) (end -0.603333 0.565) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.603333 -0.635) (end -0.603333 0.635) (layer F.SilkS) (width 0.12)) + (fp_line (start -4.7 -2.4) (end -4.7 2.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start -4.7 2.4) (end 4.7 2.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.7 2.4) (end 4.7 -2.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.7 -2.4) (end -4.7 -2.4) (layer F.CrtYd) (width 0.05)) + (fp_text user on (at 0.8975 -1.3425 90) (layer F.Fab) + (effects (font (size 0.6 0.6) (thickness 0.09))) + ) + (fp_text user %R (at 2.58 0) (layer F.Fab) + (effects (font (size 0.6 0.6) (thickness 0.09))) + ) + (pad 2 smd rect (at 3.365 0 270) (size 2.16 1.12) (layers F.Cu F.Paste F.Mask) + (net 22 ESP_EN)) + (pad 1 smd rect (at -3.365 0 270) (size 2.16 1.12) (layers F.Cu F.Paste F.Mask) + (net 1 GND)) + (model ${KISYS3DMOD}/Button_Switch_SMD.3dshapes/SW_DIP_SPSTx01_Slide_6.7x4.1mm_W6.73mm_P2.54mm_LowProfile_JPin.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 90)) + ) + ) + + (module Inductor_SMD:L_Bourns_SRN6045TA (layer F.Cu) (tedit 5B61DEEA) (tstamp 625B2B11) + (at 157.45 105.975 180) + (descr http://www.bourns.com/docs/product-datasheets/srn6045ta.pdf) + (tags "Semi-shielded Power Inductor") + (path /6254EE90) + (attr smd) + (fp_text reference L1 (at -2.375 3.95) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value DJNR6045-470-S (at 0 4.2) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -3 -3) (end 3 -3) (layer F.Fab) (width 0.1)) + (fp_line (start -3 -3) (end -3 3) (layer F.Fab) (width 0.1)) + (fp_line (start -3 3) (end 3 3) (layer F.Fab) (width 0.1)) + (fp_line (start 3 3) (end 3 -3) (layer F.Fab) (width 0.1)) + (fp_line (start -3.1 -3.1) (end 3.1 -3.1) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.1 -3.1) (end 3.1 -2.65) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.1 3.1) (end -3.1 3.1) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.1 3.1) (end 3.1 2.65) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.1 3.1) (end -3.1 2.65) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.5 3.25) (end 3.5 -3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.5 -3.25) (end -3.5 3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.5 3.25) (end 3.5 3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 3.5 -3.25) (end -3.5 -3.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.1 -3.1) (end -3.1 -2.65) (layer F.SilkS) (width 0.12)) + (fp_text user %R (at 0 0 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) (pad 2 smd rect (at 2.075 0 180) (size 2.35 5.1) (layers F.Cu F.Paste F.Mask) @@ -2092,21 +2092,21 @@ (fp_text value UART (at 0 7.41) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12)) - (fp_line (start 1.33 1.27) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.33 1.27) (end -1.33 6.41) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) - (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) - (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1)) - (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1)) (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end -1.33 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.33 1.27) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) (fp_text user %R (at 0 2.54 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) @@ -2134,33 +2134,33 @@ (fp_text value "DC 2.5/5" (at -6.2 -5.5 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start 0 -4.5) (end -13.7 -4.5) (layer F.Fab) (width 0.1)) - (fp_line (start 0.8 4.5) (end 0.8 -3.75) (layer F.Fab) (width 0.1)) - (fp_line (start -13.7 4.5) (end 0.8 4.5) (layer F.Fab) (width 0.1)) - (fp_line (start -13.7 -4.5) (end -13.7 4.5) (layer F.Fab) (width 0.1)) - (fp_line (start -10.2 -4.5) (end -10.2 4.5) (layer F.Fab) (width 0.1)) - (fp_line (start 0.9 -4.6) (end 0.9 -2) (layer F.SilkS) (width 0.12)) - (fp_line (start -13.8 -4.6) (end 0.9 -4.6) (layer F.SilkS) (width 0.12)) - (fp_line (start 0.9 4.6) (end -1 4.6) (layer F.SilkS) (width 0.12)) - (fp_line (start 0.9 1.9) (end 0.9 4.6) (layer F.SilkS) (width 0.12)) - (fp_line (start -13.8 4.6) (end -13.8 -4.6) (layer F.SilkS) (width 0.12)) - (fp_line (start -5 4.6) (end -13.8 4.6) (layer F.SilkS) (width 0.12)) - (fp_line (start -14 4.75) (end -14 -4.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -5 4.75) (end -14 4.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -5 6.75) (end -5 4.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1 6.75) (end -5 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1 4.75) (end -1 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1 4.75) (end -1 4.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1 2) (end 1 4.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 2 2) (end 1 2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 2 -2) (end 2 2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1 -2) (end 2 -2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1 -4.5) (end 1 -2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1 -4.75) (end -14 -4.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1 -4.5) (end 1 -4.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 0.05 -4.8) (end 1.1 -4.8) (layer F.SilkS) (width 0.12)) - (fp_line (start 1.1 -3.75) (end 1.1 -4.8) (layer F.SilkS) (width 0.12)) (fp_line (start -0.003213 -4.505425) (end 0.8 -3.75) (layer F.Fab) (width 0.1)) + (fp_line (start 1.1 -3.75) (end 1.1 -4.8) (layer F.SilkS) (width 0.12)) + (fp_line (start 0.05 -4.8) (end 1.1 -4.8) (layer F.SilkS) (width 0.12)) + (fp_line (start 1 -4.5) (end 1 -4.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1 -4.75) (end -14 -4.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1 -4.5) (end 1 -2) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1 -2) (end 2 -2) (layer F.CrtYd) (width 0.05)) + (fp_line (start 2 -2) (end 2 2) (layer F.CrtYd) (width 0.05)) + (fp_line (start 2 2) (end 1 2) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1 2) (end 1 4.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1 4.75) (end -1 4.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1 4.75) (end -1 6.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1 6.75) (end -5 6.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -5 6.75) (end -5 4.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -5 4.75) (end -14 4.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -14 4.75) (end -14 -4.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -5 4.6) (end -13.8 4.6) (layer F.SilkS) (width 0.12)) + (fp_line (start -13.8 4.6) (end -13.8 -4.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 0.9 1.9) (end 0.9 4.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 0.9 4.6) (end -1 4.6) (layer F.SilkS) (width 0.12)) + (fp_line (start -13.8 -4.6) (end 0.9 -4.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 0.9 -4.6) (end 0.9 -2) (layer F.SilkS) (width 0.12)) + (fp_line (start -10.2 -4.5) (end -10.2 4.5) (layer F.Fab) (width 0.1)) + (fp_line (start -13.7 -4.5) (end -13.7 4.5) (layer F.Fab) (width 0.1)) + (fp_line (start -13.7 4.5) (end 0.8 4.5) (layer F.Fab) (width 0.1)) + (fp_line (start 0.8 4.5) (end 0.8 -3.75) (layer F.Fab) (width 0.1)) + (fp_line (start 0 -4.5) (end -13.7 -4.5) (layer F.Fab) (width 0.1)) (fp_text user %R (at -3 -2.95 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) @@ -2170,10 +2170,10 @@ (net 1 GND)) (pad 1 thru_hole rect (at 0 0 90) (size 3.5 3.5) (drill oval 1 3) (layers *.Cu *.Mask) (net 28 +12V)) - (model ${KISYS3DMOD}/Connector_BarrelJack.3dshapes/BarrelJack_Horizontal.wrl + (model ${KISYS3DMOD}/Connector_BarrelJack.3dshapes/BarrelJack_CUI_PJ-063AH_Horizontal.step (at (xyz 0 0 0)) (scale (xyz 1 1 1)) - (rotate (xyz 0 0 0)) + (rotate (xyz 0 0 90)) ) ) @@ -2188,24 +2188,24 @@ (fp_text value LED_RCGB (at 0 9.95) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.8 9.4) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.8 9.4) (end 1.8 9.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.8 -1.8) (end -1.8 9.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.33 1.27) (end 1.33 8.95) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end -1.33 8.95) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 8.95) (end 1.33 8.95) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 8.89) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 8.89) (end -1.27 8.89) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 -1.27) (end 1.27 8.89) (layer F.Fab) (width 0.1)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) (fp_text user %R (at 0 3.81 90) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))) ) - (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) - (fp_line (start 1.27 -1.27) (end 1.27 8.89) (layer F.Fab) (width 0.1)) - (fp_line (start 1.27 8.89) (end -1.27 8.89) (layer F.Fab) (width 0.1)) - (fp_line (start -1.27 8.89) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) - (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) - (fp_line (start -1.33 8.95) (end 1.33 8.95) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.33 1.27) (end -1.33 8.95) (layer F.SilkS) (width 0.12)) - (fp_line (start 1.33 1.27) (end 1.33 8.95) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12)) - (fp_line (start -1.8 -1.8) (end -1.8 9.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.8 9.4) (end 1.8 9.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.8 9.4) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) (pad 1 thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (net 39 "Net-(D3-Pad1)")) (pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) @@ -2229,11 +2229,6 @@ (gr_line (start 120.425 126.175) (end 120.425 66.175) (layer Edge.Cuts) (width 0.1) (tstamp 625A40CA)) (gr_line (start 163.425 126.175) (end 120.425 126.175) (layer Edge.Cuts) (width 0.1) (tstamp 625A40C7)) - (via (at 159.55 87.4) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 33) (tstamp 625B2282)) - (via (at 159.55 90.5) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 32) (tstamp 625B23CF)) - (via (at 159.575 93.625) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 31) (tstamp 625B23C6)) - (via (at 159.55 96.725) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 34) (tstamp 625B20B7)) - (via (at 150.775 110.45) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 2) (tstamp 625B2180)) (segment (start 143.308 122.6815) (end 146.308 119.6815) (width 0.7) (layer F.Cu) (net 1) (tstamp 625B1E0B)) (segment (start 141.608 122.6815) (end 143.308 122.6815) (width 0.7) (layer F.Cu) (net 1) (tstamp 625B2BAC)) (segment (start 146.308 119.6815) (end 146.9065 119.6815) (width 0.7) (layer F.Cu) (net 1) (tstamp 625B2261)) @@ -2285,6 +2280,38 @@ (segment (start 156.0875 119.9175) (end 156.075 119.905) (width 0.5) (layer B.Cu) (net 1) (tstamp 625B1F01)) (segment (start 155.995 119.825) (end 156.075 119.905) (width 0.5) (layer B.Cu) (net 1) (tstamp 625B2729)) (segment (start 151.4 119.825) (end 155.995 119.825) (width 0.5) (layer B.Cu) (net 1) (tstamp 625B2D86)) + (segment (start 160.63 114.775) (end 160.625 114.77) (width 0.5) (layer B.Cu) (net 1) (tstamp 625B272F)) + (segment (start 162.425 114.775) (end 160.63 114.775) (width 0.5) (layer B.Cu) (net 1) (tstamp 625B2D7A)) + (segment (start 162.425 121.45) (end 161.775 122.1) (width 0.5) (layer B.Cu) (net 1)) + (segment (start 162.425 114.775) (end 162.425 121.45) (width 0.5) (layer B.Cu) (net 1)) + (segment (start 158.27 122.1) (end 156.075 119.905) (width 0.5) (layer B.Cu) (net 1)) + (segment (start 161.775 122.1) (end 158.27 122.1) (width 0.5) (layer B.Cu) (net 1)) + (segment (start 160.625 67.76) (end 160.65 67.785) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 152.525 78.625) (end 152.525 77.35) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 152.525 77.35) (end 150.925 75.75) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 152.24 67.76) (end 154.325 67.76) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 150.925 69.075) (end 152.24 67.76) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 157.7625 67.7875) (end 157.79 67.76) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 157.7625 78.575) (end 157.7625 67.7875) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 157.79 67.76) (end 160.625 67.76) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 154.325 67.76) (end 157.79 67.76) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 157.7875 78.6) (end 157.7625 78.575) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 157.7875 81.325) (end 157.7875 78.6) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 150.925 75.75) (end 150.925 69.075) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 150.85 75.675) (end 150.925 75.75) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 144.5025 80.1625) (end 142.35 78.01) (width 0.7) (layer F.Cu) (net 1) (tstamp 625DE5AD)) + (segment (start 146.225 80.1625) (end 144.5025 80.1625) (width 0.7) (layer F.Cu) (net 1) (tstamp 625DE5A7)) + (segment (start 138.275 75.775) (end 138.175 75.675) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 136.95 75.675) (end 138.175 75.675) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 142.35 75.775) (end 142.25 75.675) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 142.35 78.01) (end 142.35 75.775) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 142.25 75.675) (end 150.85 75.675) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 138.175 75.675) (end 142.25 75.675) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 130.835 111.665) (end 127.425 115.075) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 144.99 111.665) (end 130.835 111.665) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 147.965 91.1475) (end 157.7875 81.325) (width 0.7) (layer F.Cu) (net 1)) + (segment (start 147.965 91.285) (end 147.965 91.1475) (width 0.7) (layer F.Cu) (net 1)) + (via (at 150.775 110.45) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 2) (tstamp 625B2180)) (segment (start 135.5875 103.975) (end 135.45 104.1125) (width 0.5) (layer B.Cu) (net 2) (tstamp 625B2198)) (segment (start 135.45 104.1125) (end 137.0375 104.1125) (width 0.5) (layer B.Cu) (net 2) (tstamp 625B217D)) (segment (start 139.115 106.19) (end 140.975 106.19) (width 0.5) (layer B.Cu) (net 2) (tstamp 625B1E4D)) @@ -2303,6 +2330,15 @@ (segment (start 150.775 110.45) (end 150.775 109.875) (width 0.7) (layer F.Cu) (net 2) (tstamp 625B214D)) (segment (start 154.675 105.975) (end 155.375 105.975) (width 0.7) (layer F.Cu) (net 2) (tstamp 625B2399)) (segment (start 150.775 109.875) (end 154.675 105.975) (width 0.7) (layer F.Cu) (net 2) (tstamp 625B21B9)) + (segment (start 162.425 123.65) (end 160.655 123.65) (width 0.7) (layer F.Cu) (net 2)) + (segment (start 162.425 98.025) (end 162.425 123.65) (width 0.7) (layer F.Cu) (net 2)) + (segment (start 161.325 98.025) (end 161.2875 98.0625) (width 0.7) (layer F.Cu) (net 2)) + (segment (start 162.425 98.025) (end 161.325 98.025) (width 0.7) (layer F.Cu) (net 2)) + (segment (start 161.2875 98.0625) (end 161.675 97.675) (width 0.7) (layer F.Cu) (net 2)) + (segment (start 155.375 103.975) (end 161.2875 98.0625) (width 0.7) (layer F.Cu) (net 2)) + (segment (start 142.696384 106.19) (end 140.975 106.19) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 144.05 107.543616) (end 142.696384 106.19) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 144.05 110.475) (end 144.05 107.543616) (width 0.5) (layer B.Cu) (net 2)) (segment (start 140.065 107.46) (end 140.975 107.46) (width 0.5) (layer B.Cu) (net 3) (tstamp 625B2255)) (segment (start 135.45 112.075) (end 140.065 107.46) (width 0.5) (layer B.Cu) (net 3) (tstamp 625B2BA0)) (segment (start 159.5 106) (end 159.525 105.975) (width 0.7) (layer F.Cu) (net 3) (tstamp 625B23A8)) @@ -2310,16 +2346,11 @@ (segment (start 159.525 109.225) (end 159.525 105.975) (width 0.7) (layer F.Cu) (net 3) (tstamp 625B21B3)) (segment (start 158.3 110.45) (end 159.525 109.225) (width 0.7) (layer F.Cu) (net 3) (tstamp 625B216B)) (segment (start 152.5 110.45) (end 158.3 110.45) (width 0.7) (layer F.Cu) (net 3) (tstamp 625B229A)) - (segment (start 137.9 112.975) (end 140.8 112.975) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B1E14)) - (segment (start 140.8 112.975) (end 150.9375 112.975) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B2141)) - (segment (start 140.975 112.8) (end 140.8 112.975) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B2BCD)) - (segment (start 140.975 108.73) (end 140.975 112.8) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B2159)) - (segment (start 150.9375 114.6875) (end 151.4 115.15) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B2759)) - (segment (start 150.9375 112.975) (end 150.9375 114.6875) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B1F67)) - (segment (start 134.675 116.2) (end 134.675 116.675) (width 0.8) (layer B.Cu) (net 42) (tstamp 625B2D8F)) - (segment (start 137.9 112.975) (end 134.675 116.2) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B1F16)) - (segment (start 134.675 121.41) (end 133.9875 122.0975) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B2177)) - (segment (start 134.675 116.675) (end 134.675 121.41) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B1DF9)) + (segment (start 142.31 107.46) (end 140.975 107.46) (width 0.5) (layer B.Cu) (net 3)) + (segment (start 143.100001 108.250001) (end 142.31 107.46) (width 0.5) (layer B.Cu) (net 3)) + (segment (start 143.100001 111.775001) (end 143.100001 108.250001) (width 0.5) (layer B.Cu) (net 3)) + (segment (start 151.174999 111.775001) (end 143.100001 111.775001) (width 0.5) (layer B.Cu) (net 3)) + (segment (start 152.5 110.45) (end 151.174999 111.775001) (width 0.5) (layer B.Cu) (net 3)) (segment (start 160.6475 74.5125) (end 160.65 74.515) (width 0.7) (layer F.Cu) (net 22) (tstamp 625DB721)) (segment (start 153.95 81.51) (end 157.735 81.51) (width 0.5) (layer B.Cu) (net 22) (tstamp 625B21A1)) (segment (start 158.2875 82.0625) (end 159.525 82.0625) (width 0.5) (layer B.Cu) (net 22) (tstamp 625B1EF2)) @@ -2328,68 +2359,14 @@ (segment (start 159.5125 78.6) (end 159.4875 78.575) (width 0.7) (layer F.Cu) (net 22) (tstamp 625B1E08)) (segment (start 159.525 84.625) (end 159.55 84.65) (width 0.5) (layer B.Cu) (net 22) (tstamp 625B2BD0)) (segment (start 159.525 82.0625) (end 159.525 84.625) (width 0.5) (layer B.Cu) (net 22) (tstamp 625B2AF8)) - (via (at 134.4 85.75) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 23) (tstamp 625B1F10)) - (segment (start 136.95 95.48) (end 135.45 95.48) (width 0.5) (layer B.Cu) (net 23) (tstamp 625B272C)) - (via (at 141.05 87.7) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 24) (tstamp 625DE5E6)) - (segment (start 141.005 87.745) (end 141.05 87.7) (width 0.5) (layer B.Cu) (net 24) (tstamp 625B21C5)) - (segment (start 141.005 96.48) (end 141.005 87.745) (width 0.5) (layer B.Cu) (net 24) (tstamp 625B213E)) - (segment (start 153.95 94.21) (end 154.940002 94.21) (width 0.5) (layer B.Cu) (net 27) (tstamp 625B219B)) - (segment (start 154.96 94.21) (end 153.95 94.21) (width 0.5) (layer B.Cu) (net 27) (tstamp 625B20F0)) - (segment (start 160.625 99.875) (end 154.96 94.21) (width 0.5) (layer B.Cu) (net 27) (tstamp 625B25F1)) - (segment (start 159.422919 119.85) (end 160.625 119.85) (width 0.5) (layer B.Cu) (net 41) (tstamp 625B2267)) - (segment (start 158 118.427081) (end 159.422919 119.85) (width 0.5) (layer B.Cu) (net 41) (tstamp 625B1F6D)) - (segment (start 158 106.085) (end 158 118.427081) (width 0.5) (layer B.Cu) (net 41) (tstamp 625B2D68)) - (segment (start 160.63 114.775) (end 160.625 114.77) (width 0.5) (layer B.Cu) (net 1) (tstamp 625B272F)) - (segment (start 162.425 114.775) (end 160.63 114.775) (width 0.5) (layer B.Cu) (net 1) (tstamp 625B2D7A)) - (segment (start 162.425 121.45) (end 161.775 122.1) (width 0.5) (layer B.Cu) (net 1)) - (segment (start 162.425 114.775) (end 162.425 121.45) (width 0.5) (layer B.Cu) (net 1)) - (segment (start 158.27 122.1) (end 156.075 119.905) (width 0.5) (layer B.Cu) (net 1)) - (segment (start 161.775 122.1) (end 158.27 122.1) (width 0.5) (layer B.Cu) (net 1)) - (segment (start 160.625 67.76) (end 160.65 67.785) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 152.525 78.625) (end 152.525 77.35) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 152.525 77.35) (end 150.925 75.75) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 152.24 67.76) (end 154.325 67.76) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 150.925 69.075) (end 152.24 67.76) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 157.7625 67.7875) (end 157.79 67.76) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 157.7625 78.575) (end 157.7625 67.7875) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 157.79 67.76) (end 160.625 67.76) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 154.325 67.76) (end 157.79 67.76) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 157.7875 78.6) (end 157.7625 78.575) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 157.7875 81.325) (end 157.7875 78.6) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 150.925 75.75) (end 150.925 69.075) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 150.85 75.675) (end 150.925 75.75) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 144.5025 80.1625) (end 142.35 78.01) (width 0.7) (layer F.Cu) (net 1) (tstamp 625DE5AD)) - (segment (start 146.225 80.1625) (end 144.5025 80.1625) (width 0.7) (layer F.Cu) (net 1) (tstamp 625DE5A7)) - (segment (start 138.275 75.775) (end 138.175 75.675) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 136.95 75.675) (end 138.175 75.675) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 142.35 75.775) (end 142.25 75.675) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 142.35 78.01) (end 142.35 75.775) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 142.25 75.675) (end 150.85 75.675) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 138.175 75.675) (end 142.25 75.675) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 130.835 111.665) (end 127.425 115.075) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 144.99 111.665) (end 130.835 111.665) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 147.965 91.1475) (end 157.7875 81.325) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 147.965 91.285) (end 147.965 91.1475) (width 0.7) (layer F.Cu) (net 1)) - (segment (start 162.425 123.65) (end 160.655 123.65) (width 0.7) (layer F.Cu) (net 2)) - (segment (start 162.425 98.025) (end 162.425 123.65) (width 0.7) (layer F.Cu) (net 2)) - (segment (start 161.325 98.025) (end 161.2875 98.0625) (width 0.7) (layer F.Cu) (net 2)) - (segment (start 162.425 98.025) (end 161.325 98.025) (width 0.7) (layer F.Cu) (net 2)) - (segment (start 161.2875 98.0625) (end 161.675 97.675) (width 0.7) (layer F.Cu) (net 2)) - (segment (start 155.375 103.975) (end 161.2875 98.0625) (width 0.7) (layer F.Cu) (net 2)) - (segment (start 142.696384 106.19) (end 140.975 106.19) (width 0.5) (layer B.Cu) (net 2)) - (segment (start 144.05 107.543616) (end 142.696384 106.19) (width 0.5) (layer B.Cu) (net 2)) - (segment (start 144.05 110.475) (end 144.05 107.543616) (width 0.5) (layer B.Cu) (net 2)) - (segment (start 142.31 107.46) (end 140.975 107.46) (width 0.5) (layer B.Cu) (net 3)) - (segment (start 143.100001 108.250001) (end 142.31 107.46) (width 0.5) (layer B.Cu) (net 3)) - (segment (start 143.100001 111.775001) (end 143.100001 108.250001) (width 0.5) (layer B.Cu) (net 3)) - (segment (start 151.174999 111.775001) (end 143.100001 111.775001) (width 0.5) (layer B.Cu) (net 3)) - (segment (start 152.5 110.45) (end 151.174999 111.775001) (width 0.5) (layer B.Cu) (net 3)) (segment (start 160.65 77.4125) (end 159.4875 78.575) (width 0.7) (layer F.Cu) (net 22)) (segment (start 160.65 74.515) (end 160.65 77.4125) (width 0.7) (layer F.Cu) (net 22)) (segment (start 159.4875 81.3) (end 159.5125 81.325) (width 0.7) (layer F.Cu) (net 22)) (segment (start 159.4875 78.575) (end 159.4875 81.3) (width 0.7) (layer F.Cu) (net 22)) (segment (start 159.5125 84.6125) (end 159.55 84.65) (width 0.7) (layer F.Cu) (net 22)) (segment (start 159.5125 81.325) (end 159.5125 84.6125) (width 0.7) (layer F.Cu) (net 22)) + (via (at 134.4 85.75) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 23) (tstamp 625B1F10)) + (segment (start 136.95 95.48) (end 135.45 95.48) (width 0.5) (layer B.Cu) (net 23) (tstamp 625B272C)) (segment (start 145.2025 81.8875) (end 142.35 84.74) (width 0.7) (layer F.Cu) (net 23) (tstamp 625DE5A4)) (segment (start 146.225 81.8875) (end 145.2025 81.8875) (width 0.7) (layer F.Cu) (net 23) (tstamp 625DE5B0)) (segment (start 134.41 85.74) (end 134.4 85.75) (width 0.7) (layer F.Cu) (net 23)) @@ -2397,6 +2374,9 @@ (segment (start 135.45 95.48) (end 134.4 94.43) (width 0.5) (layer B.Cu) (net 23)) (segment (start 135.41 84.74) (end 134.4 85.75) (width 0.7) (layer F.Cu) (net 23)) (segment (start 142.35 84.74) (end 135.41 84.74) (width 0.7) (layer F.Cu) (net 23)) + (via (at 141.05 87.7) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 24) (tstamp 625DE5E6)) + (segment (start 141.005 87.745) (end 141.05 87.7) (width 0.5) (layer B.Cu) (net 24) (tstamp 625B21C5)) + (segment (start 141.005 96.48) (end 141.005 87.745) (width 0.5) (layer B.Cu) (net 24) (tstamp 625B213E)) (segment (start 154.325 80.425) (end 152.6 80.425) (width 0.7) (layer F.Cu) (net 24)) (segment (start 152.6 80.425) (end 152.525 80.35) (width 0.7) (layer F.Cu) (net 24)) (segment (start 154.325 74.49) (end 154.325 80.425) (width 0.7) (layer F.Cu) (net 24)) @@ -2406,21 +2386,15 @@ (segment (start 149.895 96.48) (end 149.895 98.0075) (width 0.5) (layer B.Cu) (net 25)) (segment (start 153.95 96.5875) (end 158.95 101.5875) (width 0.5) (layer B.Cu) (net 26)) (segment (start 153.95 95.48) (end 153.95 96.5875) (width 0.5) (layer B.Cu) (net 26)) + (segment (start 153.95 94.21) (end 154.940002 94.21) (width 0.5) (layer B.Cu) (net 27) (tstamp 625B219B)) + (segment (start 154.96 94.21) (end 153.95 94.21) (width 0.5) (layer B.Cu) (net 27) (tstamp 625B20F0)) + (segment (start 160.625 99.875) (end 154.96 94.21) (width 0.5) (layer B.Cu) (net 27) (tstamp 625B25F1)) (segment (start 160.625 99.875) (end 160.625 106.2125) (width 0.5) (layer B.Cu) (net 27)) - (segment (start 160.56 117.375) (end 160.625 117.31) (width 0.5) (layer B.Cu) (net 40) (tstamp 625B1EE6)) - (segment (start 158.975 117.375) (end 160.56 117.375) (width 0.5) (layer B.Cu) (net 40) (tstamp 625B25E5)) (segment (start 141.65 116.6395) (end 141.608 116.6815) (width 0.7) (layer F.Cu) (net 28) (tstamp 625B25DC)) (segment (start 141.6015 116.675) (end 141.608 116.6815) (width 1) (layer B.Cu) (net 28) (tstamp 625B243B)) (segment (start 136.425 116.675) (end 141.6015 116.675) (width 0.7) (layer B.Cu) (net 28) (tstamp 625B2AFB)) (segment (start 141.608 116.6815) (end 140.1935 116.6815) (width 0.7) (layer F.Cu) (net 28) (tstamp 625B2765)) (segment (start 141.608 116.6815) (end 141.258 116.6815) (width 0.7) (layer F.Cu) (net 28)) - (segment (start 155.575 123.65) (end 153.525 123.65) (width 0.7) (layer F.Cu) (net 42)) - (segment (start 153.525 123.65) (end 151.725 121.85) (width 0.7) (layer F.Cu) (net 42)) - (segment (start 151.725 121.85) (end 151.425 121.55) (width 0.7) (layer F.Cu) (net 42)) - (segment (start 151.425 121.55) (end 151.425 118.225) (width 0.7) (layer F.Cu) (net 42)) - (segment (start 151.425 118.225) (end 148.4 115.2) (width 0.7) (layer F.Cu) (net 42)) - (segment (start 148.4 115.2) (end 148.4 115.2) (width 0.7) (layer F.Cu) (net 42) (tstamp 625DEB7A)) - (via (at 148.4 115.2) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 42)) (segment (start 156.04 117.4) (end 156.075 117.365) (width 0.5) (layer B.Cu) (net 29) (tstamp 625B273E)) (segment (start 154.125 117.4) (end 156.04 117.4) (width 0.5) (layer B.Cu) (net 29) (tstamp 625B295A)) (segment (start 130.7 100.175) (end 144.45 100.175) (width 0.5) (layer B.Cu) (net 29) (tstamp 625B1F6A)) @@ -2436,30 +2410,67 @@ (segment (start 156.150008 109.293624) (end 156.150008 114.749992) (width 0.5) (layer B.Cu) (net 30) (tstamp 625B2BBE)) (segment (start 145.781384 98.925) (end 156.150008 109.293624) (width 0.5) (layer B.Cu) (net 30) (tstamp 625B25F4)) (segment (start 131.95 98.925) (end 145.781384 98.925) (width 0.5) (layer B.Cu) (net 30) (tstamp 625B1F13)) + (via (at 159.575 93.625) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 31) (tstamp 625B23C6)) (segment (start 157.62 91.67) (end 159.575 93.625) (width 0.5) (layer B.Cu) (net 31) (tstamp 625B28A6)) (segment (start 153.95 91.67) (end 157.62 91.67) (width 0.5) (layer B.Cu) (net 31) (tstamp 625B2213)) (segment (start 159.575 93.7125) (end 156.6125 96.675) (width 0.7) (layer F.Cu) (net 31) (tstamp 625B21A7)) (segment (start 159.575 93.625) (end 159.575 93.7125) (width 0.7) (layer F.Cu) (net 31) (tstamp 625B2150)) - (segment (start 154.7875 96.675) (end 154.7 96.675) (width 0.7) (layer F.Cu) (net 44) (tstamp 625B2168)) - (segment (start 154.7875 96.675) (end 154.7875 96.6875) (width 0.7) (layer F.Cu) (net 44) (tstamp 625B1EF8)) - (segment (start 154.7875 96.6875) (end 150.4 101.075) (width 0.7) (layer F.Cu) (net 44) (tstamp 625B244A)) - (segment (start 149.665 103.985) (end 147.965 103.985) (width 0.7) (layer F.Cu) (net 44) (tstamp 625B1F70)) - (segment (start 150.4 103.25) (end 149.665 103.985) (width 0.7) (layer F.Cu) (net 44) (tstamp 625B1F73)) - (segment (start 150.4 101.075) (end 150.4 103.25) (width 0.7) (layer F.Cu) (net 44) (tstamp 625B2BA3)) - (segment (start 154.7875 99.775) (end 151.9 102.6625) (width 0.7) (layer F.Cu) (net 43) (tstamp 625B239F)) - (segment (start 149.665 109.065) (end 147.965 109.065) (width 0.7) (layer F.Cu) (net 43) (tstamp 625B21BC)) - (segment (start 151.9 106.83) (end 149.665 109.065) (width 0.7) (layer F.Cu) (net 43) (tstamp 625B1EEF)) - (segment (start 151.9 102.6625) (end 151.9 106.83) (width 0.7) (layer F.Cu) (net 43) (tstamp 625B216E)) + (via (at 159.55 90.5) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 32) (tstamp 625B23CF)) (segment (start 159.45 90.4) (end 159.55 90.5) (width 0.7) (layer B.Cu) (net 32) (tstamp 625B1F1F)) (segment (start 153.95 90.4) (end 159.45 90.4) (width 0.5) (layer B.Cu) (net 32) (tstamp 625B23D8)) (segment (start 159.55 90.6375) (end 156.6125 93.575) (width 0.7) (layer F.Cu) (net 32) (tstamp 625B1E11)) (segment (start 159.55 90.5) (end 159.55 90.6375) (width 0.7) (layer F.Cu) (net 32) (tstamp 625B2258)) - (segment (start 149.4575 98.905) (end 147.965 98.905) (width 0.7) (layer F.Cu) (net 45) (tstamp 625B275F)) - (segment (start 154.7875 93.575) (end 149.4575 98.905) (width 0.7) (layer F.Cu) (net 45) (tstamp 625B2BA6)) + (via (at 159.55 87.4) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 33) (tstamp 625B2282)) (segment (start 157.82 89.13) (end 159.55 87.4) (width 0.5) (layer B.Cu) (net 33) (tstamp 625B2270)) (segment (start 153.95 89.13) (end 157.82 89.13) (width 0.5) (layer B.Cu) (net 33) (tstamp 625B1F22)) (segment (start 159.55 87.5375) (end 156.6125 90.475) (width 0.7) (layer F.Cu) (net 33) (tstamp 625B2216)) (segment (start 159.55 87.4) (end 159.55 87.5375) (width 0.7) (layer F.Cu) (net 33) (tstamp 625B2273)) + (via (at 159.55 96.725) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 34) (tstamp 625B20B7)) + (segment (start 155.765 92.94) (end 159.55 96.725) (width 0.5) (layer B.Cu) (net 34) (tstamp 625B20F3)) + (segment (start 153.95 92.94) (end 155.765 92.94) (width 0.5) (layer B.Cu) (net 34) (tstamp 625B2BB8)) + (segment (start 159.55 96.8375) (end 156.6125 99.775) (width 0.7) (layer F.Cu) (net 34) (tstamp 625B20EA)) + (segment (start 159.55 96.725) (end 159.55 96.8375) (width 0.7) (layer F.Cu) (net 34) (tstamp 625B23C0)) + (segment (start 160.625 108.0375) (end 160.625 112.23) (width 0.5) (layer B.Cu) (net 39)) + (segment (start 160.56 117.375) (end 160.625 117.31) (width 0.5) (layer B.Cu) (net 40) (tstamp 625B1EE6)) + (segment (start 158.975 117.375) (end 160.56 117.375) (width 0.5) (layer B.Cu) (net 40) (tstamp 625B25E5)) + (segment (start 158.95 117.35) (end 158.975 117.375) (width 0.5) (layer B.Cu) (net 40)) + (segment (start 158.95 103.4125) (end 158.95 117.35) (width 0.5) (layer B.Cu) (net 40)) + (segment (start 159.422919 119.85) (end 160.625 119.85) (width 0.5) (layer B.Cu) (net 41) (tstamp 625B2267)) + (segment (start 158 118.427081) (end 159.422919 119.85) (width 0.5) (layer B.Cu) (net 41) (tstamp 625B1F6D)) + (segment (start 158 106.085) (end 158 118.427081) (width 0.5) (layer B.Cu) (net 41) (tstamp 625B2D68)) + (segment (start 155.2775 103.3625) (end 158 106.085) (width 0.5) (layer B.Cu) (net 41)) + (segment (start 153.425 103.3625) (end 155.2775 103.3625) (width 0.5) (layer B.Cu) (net 41)) + (segment (start 137.9 112.975) (end 140.8 112.975) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B1E14)) + (segment (start 140.8 112.975) (end 150.9375 112.975) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B2141)) + (segment (start 140.975 112.8) (end 140.8 112.975) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B2BCD)) + (segment (start 140.975 108.73) (end 140.975 112.8) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B2159)) + (segment (start 150.9375 114.6875) (end 151.4 115.15) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B2759)) + (segment (start 150.9375 112.975) (end 150.9375 114.6875) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B1F67)) + (segment (start 134.675 116.2) (end 134.675 116.675) (width 0.8) (layer B.Cu) (net 42) (tstamp 625B2D8F)) + (segment (start 137.9 112.975) (end 134.675 116.2) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B1F16)) + (segment (start 134.675 121.41) (end 133.9875 122.0975) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B2177)) + (segment (start 134.675 116.675) (end 134.675 121.41) (width 0.7) (layer B.Cu) (net 42) (tstamp 625B1DF9)) + (segment (start 155.575 123.65) (end 153.525 123.65) (width 0.7) (layer F.Cu) (net 42)) + (segment (start 153.525 123.65) (end 151.725 121.85) (width 0.7) (layer F.Cu) (net 42)) + (segment (start 151.725 121.85) (end 151.425 121.55) (width 0.7) (layer F.Cu) (net 42)) + (segment (start 151.425 121.55) (end 151.425 118.225) (width 0.7) (layer F.Cu) (net 42)) + (segment (start 151.425 118.225) (end 148.4 115.2) (width 0.7) (layer F.Cu) (net 42)) + (segment (start 148.4 115.2) (end 148.4 115.2) (width 0.7) (layer F.Cu) (net 42) (tstamp 625DEB7A)) + (via (at 148.4 115.2) (size 1.3) (drill 0.5) (layers F.Cu B.Cu) (net 42)) + (segment (start 148.45 115.15) (end 148.4 115.2) (width 0.7) (layer B.Cu) (net 42)) + (segment (start 151.4 115.15) (end 148.45 115.15) (width 0.7) (layer B.Cu) (net 42)) + (segment (start 154.7875 99.775) (end 151.9 102.6625) (width 0.7) (layer F.Cu) (net 43) (tstamp 625B239F)) + (segment (start 149.665 109.065) (end 147.965 109.065) (width 0.7) (layer F.Cu) (net 43) (tstamp 625B21BC)) + (segment (start 151.9 106.83) (end 149.665 109.065) (width 0.7) (layer F.Cu) (net 43) (tstamp 625B1EEF)) + (segment (start 151.9 102.6625) (end 151.9 106.83) (width 0.7) (layer F.Cu) (net 43) (tstamp 625B216E)) + (segment (start 154.7875 96.675) (end 154.7 96.675) (width 0.7) (layer F.Cu) (net 44) (tstamp 625B2168)) + (segment (start 154.7875 96.675) (end 154.7875 96.6875) (width 0.7) (layer F.Cu) (net 44) (tstamp 625B1EF8)) + (segment (start 154.7875 96.6875) (end 150.4 101.075) (width 0.7) (layer F.Cu) (net 44) (tstamp 625B244A)) + (segment (start 149.665 103.985) (end 147.965 103.985) (width 0.7) (layer F.Cu) (net 44) (tstamp 625B1F70)) + (segment (start 150.4 103.25) (end 149.665 103.985) (width 0.7) (layer F.Cu) (net 44) (tstamp 625B1F73)) + (segment (start 150.4 101.075) (end 150.4 103.25) (width 0.7) (layer F.Cu) (net 44) (tstamp 625B2BA3)) + (segment (start 149.4575 98.905) (end 147.965 98.905) (width 0.7) (layer F.Cu) (net 45) (tstamp 625B275F)) + (segment (start 154.7875 93.575) (end 149.4575 98.905) (width 0.7) (layer F.Cu) (net 45) (tstamp 625B2BA6)) (segment (start 151.4375 93.825) (end 147.965 93.825) (width 0.7) (layer F.Cu) (net 46) (tstamp 625B2183)) (segment (start 154.7875 90.475) (end 151.4375 93.825) (width 0.7) (layer F.Cu) (net 46) (tstamp 625B2165)) (segment (start 130.219 106.525) (end 127.4155 103.7215) (width 0.7) (layer F.Cu) (net 47)) @@ -2492,544 +2503,19 @@ (segment (start 131.625 88) (end 131.625 74.7) (width 0.7) (layer F.Cu) (net 54)) (segment (start 127.45 74.7) (end 127.4 74.65) (width 0.7) (layer F.Cu) (net 54)) (segment (start 131.625 74.7) (end 127.45 74.7) (width 0.7) (layer F.Cu) (net 54)) - (segment (start 155.765 92.94) (end 159.55 96.725) (width 0.5) (layer B.Cu) (net 34) (tstamp 625B20F3)) - (segment (start 153.95 92.94) (end 155.765 92.94) (width 0.5) (layer B.Cu) (net 34) (tstamp 625B2BB8)) - (segment (start 159.55 96.8375) (end 156.6125 99.775) (width 0.7) (layer F.Cu) (net 34) (tstamp 625B20EA)) - (segment (start 159.55 96.725) (end 159.55 96.8375) (width 0.7) (layer F.Cu) (net 34) (tstamp 625B23C0)) - (segment (start 160.625 108.0375) (end 160.625 112.23) (width 0.5) (layer B.Cu) (net 39)) - (segment (start 158.95 117.35) (end 158.975 117.375) (width 0.5) (layer B.Cu) (net 40)) - (segment (start 158.95 103.4125) (end 158.95 117.35) (width 0.5) (layer B.Cu) (net 40)) - (segment (start 155.2775 103.3625) (end 158 106.085) (width 0.5) (layer B.Cu) (net 41)) - (segment (start 153.425 103.3625) (end 155.2775 103.3625) (width 0.5) (layer B.Cu) (net 41)) (segment (start 130.205 120.075) (end 127.425 120.075) (width 0.7) (layer F.Cu) (net 55)) (segment (start 157.76708 125.200001) (end 135.330001 125.200001) (width 0.7) (layer F.Cu) (net 55)) (segment (start 135.330001 125.200001) (end 130.205 120.075) (width 0.7) (layer F.Cu) (net 55)) (segment (start 158.115 124.852081) (end 157.76708 125.200001) (width 0.7) (layer F.Cu) (net 55)) (segment (start 158.115 123.65) (end 158.115 124.852081) (width 0.7) (layer F.Cu) (net 55)) - (segment (start 148.45 115.15) (end 148.4 115.2) (width 0.7) (layer B.Cu) (net 42)) - (segment (start 151.4 115.15) (end 148.45 115.15) (width 0.7) (layer B.Cu) (net 42)) - (zone (net 0) (net_name "") (layer F.Cu) (tstamp 625E896F) (hatch edge 0.508) + (zone (net 0) (net_name "") (layer B.Cu) (tstamp 62629F22) (hatch edge 0.508) (connect_pads (clearance 0.508)) (min_thickness 0.254) (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) (polygon (pts - (xy 163.4 126.1799) (xy 120.425 126.1799) (xy 120.425 66.1799) (xy 163.4 66.1799) - ) - ) - (filled_polygon - (pts - (xy 159.501525 124.596632) (xy 159.708368 124.803475) (xy 159.951589 124.96599) (xy 160.221842 125.077932) (xy 160.50874 125.135) - (xy 160.80126 125.135) (xy 161.088158 125.077932) (xy 161.358411 124.96599) (xy 161.601632 124.803475) (xy 161.770107 124.635) - (xy 162.37662 124.635) (xy 162.425 124.639765) (xy 162.47338 124.635) (xy 162.618094 124.620747) (xy 162.740001 124.583767) - (xy 162.740001 125.49) (xy 158.865712 125.49) (xy 158.93796 125.401965) (xy 159.029424 125.230848) (xy 159.085747 125.045175) - (xy 159.1 124.900461) (xy 159.104765 124.852082) (xy 159.1 124.803702) (xy 159.1 124.765107) (xy 159.268475 124.596632) - (xy 159.385 124.42224) - ) - ) - (filled_polygon - (pts - (xy 134.226999 125.49) (xy 133.182619 125.49) (xy 133.182619 124.44562) - ) - ) - (filled_polygon - (pts - (xy 147.401875 116.01914) (xy 147.58086 116.198125) (xy 147.791324 116.338753) (xy 148.025179 116.435619) (xy 148.273439 116.485) - (xy 148.292 116.485) (xy 150.440001 118.633001) (xy 150.44 121.50162) (xy 150.435235 121.55) (xy 150.44 121.598379) - (xy 150.454253 121.743093) (xy 150.510576 121.928766) (xy 150.60204 122.099884) (xy 150.72513 122.24987) (xy 150.762717 122.280717) - (xy 150.994286 122.512285) (xy 150.99429 122.51229) (xy 152.697001 124.215001) (xy 143.752021 124.215001) (xy 143.76214 124.202671) - (xy 143.890411 123.962692) (xy 143.969401 123.702299) (xy 143.996072 123.4315) (xy 143.996072 123.391052) (xy 144.00787 123.38137) - (xy 144.038716 123.343784) (xy 145.323694 122.058806) (xy 145.433 122.069572) (xy 147.183 122.069572) (xy 147.478186 122.040499) - (xy 147.762028 121.954396) (xy 148.023618 121.814573) (xy 148.252903 121.626403) (xy 148.441073 121.397118) (xy 148.580896 121.135528) - (xy 148.666999 120.851686) (xy 148.696072 120.5565) (xy 148.696072 118.8065) (xy 148.666999 118.511314) (xy 148.580896 118.227472) - (xy 148.441073 117.965882) (xy 148.252903 117.736597) (xy 148.023618 117.548427) (xy 147.762028 117.408604) (xy 147.478186 117.322501) - (xy 147.293 117.304262) (xy 147.293 115.856198) - ) - ) - (filled_polygon - (pts - (xy 140.825271 66.988962) (xy 140.513962 67.300271) (xy 140.269369 67.666331) (xy 140.10089 68.073075) (xy 140.015 68.504872) - (xy 140.015 68.945128) (xy 140.10089 69.376925) (xy 140.269369 69.783669) (xy 140.513962 70.149729) (xy 140.825271 70.461038) - (xy 141.191331 70.705631) (xy 141.598075 70.87411) (xy 142.029872 70.96) (xy 142.470128 70.96) (xy 142.901925 70.87411) - (xy 143.308669 70.705631) (xy 143.674729 70.461038) (xy 143.986038 70.149729) (xy 144.230631 69.783669) (xy 144.39911 69.376925) - (xy 144.485 68.945128) (xy 144.485 68.504872) (xy 144.39911 68.073075) (xy 144.230631 67.666331) (xy 143.986038 67.300271) - (xy 143.674729 66.988962) (xy 143.481723 66.86) (xy 151.834248 66.86) (xy 151.690116 66.93704) (xy 151.54013 67.06013) - (xy 151.509289 67.09771) (xy 150.262711 68.344289) (xy 150.225131 68.37513) (xy 150.102041 68.525116) (xy 150.056424 68.610459) - (xy 150.010576 68.696234) (xy 149.954253 68.881907) (xy 149.935235 69.075) (xy 149.940001 69.12339) (xy 149.94 74.69) - (xy 142.29838 74.69) (xy 142.25 74.685235) (xy 142.20162 74.69) (xy 138.22338 74.69) (xy 138.175 74.685235) - (xy 138.12662 74.69) (xy 137.782265 74.69) (xy 137.76914 74.676875) (xy 137.558676 74.536247) (xy 137.324821 74.439381) - (xy 137.076561 74.39) (xy 136.823439 74.39) (xy 136.575179 74.439381) (xy 136.341324 74.536247) (xy 136.13086 74.676875) - (xy 135.951875 74.85586) (xy 135.811247 75.066324) (xy 135.714381 75.300179) (xy 135.665 75.548439) (xy 135.665 75.801561) - (xy 135.714381 76.049821) (xy 135.811247 76.283676) (xy 135.951875 76.49414) (xy 136.13086 76.673125) (xy 136.341324 76.813753) - (xy 136.575179 76.910619) (xy 136.823439 76.96) (xy 137.076561 76.96) (xy 137.324821 76.910619) (xy 137.558676 76.813753) - (xy 137.76914 76.673125) (xy 137.782265 76.66) (xy 137.841187 76.66) (xy 137.896234 76.689423) (xy 138.081906 76.745747) - (xy 138.274999 76.764765) (xy 138.468093 76.745747) (xy 138.653766 76.689423) (xy 138.708813 76.66) (xy 141.214299 76.66) - (xy 141.200498 76.68582) (xy 141.164188 76.805518) (xy 141.151928 76.93) (xy 141.151928 79.09) (xy 141.164188 79.214482) - (xy 141.200498 79.33418) (xy 141.259463 79.444494) (xy 141.338815 79.541185) (xy 141.435506 79.620537) (xy 141.54582 79.679502) - (xy 141.665518 79.715812) (xy 141.79 79.728072) (xy 142.675072 79.728072) (xy 143.771789 80.82479) (xy 143.80263 80.86237) - (xy 143.84834 80.899883) (xy 143.952616 80.98546) (xy 144.123733 81.076924) (xy 144.309406 81.133247) (xy 144.5025 81.152265) - (xy 144.55088 81.1475) (xy 144.551529 81.1475) (xy 144.50263 81.18763) (xy 144.471784 81.225216) (xy 142.675072 83.021928) - (xy 141.79 83.021928) (xy 141.665518 83.034188) (xy 141.54582 83.070498) (xy 141.435506 83.129463) (xy 141.338815 83.208815) - (xy 141.259463 83.305506) (xy 141.200498 83.41582) (xy 141.164188 83.535518) (xy 141.151928 83.66) (xy 141.151928 83.755) - (xy 135.45838 83.755) (xy 135.41 83.750235) (xy 135.36162 83.755) (xy 135.216906 83.769253) (xy 135.031233 83.825576) - (xy 134.860116 83.91704) (xy 134.71013 84.04013) (xy 134.679289 84.07771) (xy 134.291999 84.465) (xy 134.273439 84.465) - (xy 134.084999 84.502482) (xy 134.084999 69.69838) (xy 134.089764 69.65) (xy 134.070746 69.456906) (xy 134.014423 69.271233) - (xy 133.922959 69.100116) (xy 133.799869 68.95013) (xy 133.649883 68.82704) (xy 133.478766 68.735576) (xy 133.293093 68.679253) - (xy 133.148379 68.665) (xy 133.099999 68.660235) (xy 133.051619 68.665) (xy 129.683802 68.665) (xy 129.544608 68.495392) - (xy 129.29717 68.292325) (xy 129.014869 68.141432) (xy 128.708556 68.048513) (xy 128.469824 68.025) (xy 126.330176 68.025) - (xy 126.091444 68.048513) (xy 125.785131 68.141432) (xy 125.50283 68.292325) (xy 125.255392 68.495392) (xy 125.052325 68.74283) - (xy 124.901432 69.025131) (xy 124.808513 69.331444) (xy 124.777138 69.65) (xy 124.808513 69.968556) (xy 124.901432 70.274869) - (xy 125.052325 70.55717) (xy 125.255392 70.804608) (xy 125.50283 71.007675) (xy 125.785131 71.158568) (xy 126.091444 71.251487) - (xy 126.330176 71.275) (xy 128.469824 71.275) (xy 128.708556 71.251487) (xy 129.014869 71.158568) (xy 129.29717 71.007675) - (xy 129.544608 70.804608) (xy 129.683802 70.635) (xy 132.115 70.635) (xy 132.115 73.845031) (xy 132.003767 73.785576) - (xy 131.818094 73.729253) (xy 131.67338 73.715) (xy 131.625 73.710235) (xy 131.57662 73.715) (xy 130.018072 73.715) - (xy 130.018072 73.66) (xy 130.005812 73.535518) (xy 129.969502 73.41582) (xy 129.910537 73.305506) (xy 129.831185 73.208815) - (xy 129.734494 73.129463) (xy 129.62418 73.070498) (xy 129.504482 73.034188) (xy 129.38 73.021928) (xy 125.42 73.021928) - (xy 125.295518 73.034188) (xy 125.17582 73.070498) (xy 125.065506 73.129463) (xy 124.968815 73.208815) (xy 124.889463 73.305506) - (xy 124.830498 73.41582) (xy 124.794188 73.535518) (xy 124.781928 73.66) (xy 124.781928 75.64) (xy 124.794188 75.764482) - (xy 124.830498 75.88418) (xy 124.889463 75.994494) (xy 124.968815 76.091185) (xy 125.065506 76.170537) (xy 125.17582 76.229502) - (xy 125.295518 76.265812) (xy 125.42 76.278072) (xy 129.38 76.278072) (xy 129.504482 76.265812) (xy 129.62418 76.229502) - (xy 129.734494 76.170537) (xy 129.831185 76.091185) (xy 129.910537 75.994494) (xy 129.969502 75.88418) (xy 130.005812 75.764482) - (xy 130.01364 75.685) (xy 130.640001 75.685) (xy 130.640001 80.141233) (xy 130.518094 80.104253) (xy 130.37338 80.09) - (xy 130.325 80.085235) (xy 130.27662 80.09) (xy 129.745352 80.09) (xy 129.544608 79.845392) (xy 129.29717 79.642325) - (xy 129.014869 79.491432) (xy 128.708556 79.398513) (xy 128.469824 79.375) (xy 126.330176 79.375) (xy 126.091444 79.398513) - (xy 125.785131 79.491432) (xy 125.50283 79.642325) (xy 125.255392 79.845392) (xy 125.052325 80.09283) (xy 124.901432 80.375131) - (xy 124.808513 80.681444) (xy 124.777138 81) (xy 124.808513 81.318556) (xy 124.901432 81.624869) (xy 125.052325 81.90717) - (xy 125.255392 82.154608) (xy 125.50283 82.357675) (xy 125.785131 82.508568) (xy 126.091444 82.601487) (xy 126.330176 82.625) - (xy 128.469824 82.625) (xy 128.708556 82.601487) (xy 129.014869 82.508568) (xy 129.29717 82.357675) (xy 129.340001 82.322525) - (xy 129.340001 84.371928) (xy 125.42 84.371928) (xy 125.295518 84.384188) (xy 125.17582 84.420498) (xy 125.065506 84.479463) - (xy 124.968815 84.558815) (xy 124.889463 84.655506) (xy 124.830498 84.76582) (xy 124.794188 84.885518) (xy 124.781928 85.01) - (xy 124.781928 86.99) (xy 124.794188 87.114482) (xy 124.830498 87.23418) (xy 124.889463 87.344494) (xy 124.968815 87.441185) - (xy 125.065506 87.520537) (xy 125.17582 87.579502) (xy 125.295518 87.615812) (xy 125.42 87.628072) (xy 126.415 87.628072) - (xy 126.415 88.341622) (xy 126.410235 88.390002) (xy 126.415 88.438381) (xy 126.429253 88.583095) (xy 126.485576 88.768768) - (xy 126.57704 88.939886) (xy 126.70013 89.089872) (xy 126.737716 89.120718) (xy 128.346998 90.73) (xy 126.345676 90.73) - (xy 126.106944 90.753513) (xy 125.800631 90.846432) (xy 125.51833 90.997325) (xy 125.270892 91.200392) (xy 125.067825 91.44783) - (xy 124.916932 91.730131) (xy 124.824013 92.036444) (xy 124.792638 92.355) (xy 124.824013 92.673556) (xy 124.916932 92.979869) - (xy 125.067825 93.26217) (xy 125.270892 93.509608) (xy 125.51833 93.712675) (xy 125.800631 93.863568) (xy 126.106944 93.956487) - (xy 126.345676 93.98) (xy 128.485324 93.98) (xy 128.724056 93.956487) (xy 128.961467 93.884469) (xy 136.796928 101.71993) - (xy 136.796928 102.335) (xy 136.809188 102.459482) (xy 136.845498 102.57918) (xy 136.904463 102.689494) (xy 136.925395 102.715) - (xy 136.904463 102.740506) (xy 136.845498 102.85082) (xy 136.809188 102.970518) (xy 136.806284 103) (xy 134.453501 103) - (xy 129.998426 98.544926) (xy 130.021312 98.469482) (xy 130.033572 98.345) (xy 130.033572 96.365) (xy 130.021312 96.240518) - (xy 129.985002 96.12082) (xy 129.926037 96.010506) (xy 129.846685 95.913815) (xy 129.749994 95.834463) (xy 129.63968 95.775498) - (xy 129.519982 95.739188) (xy 129.3955 95.726928) (xy 125.4355 95.726928) (xy 125.311018 95.739188) (xy 125.19132 95.775498) - (xy 125.081006 95.834463) (xy 124.984315 95.913815) (xy 124.904963 96.010506) (xy 124.845998 96.12082) (xy 124.809688 96.240518) - (xy 124.797428 96.365) (xy 124.797428 98.345) (xy 124.809688 98.469482) (xy 124.845998 98.58918) (xy 124.904963 98.699494) - (xy 124.984315 98.796185) (xy 125.081006 98.875537) (xy 125.19132 98.934502) (xy 125.311018 98.970812) (xy 125.4355 98.983072) - (xy 127.650572 98.983072) (xy 133.314789 104.64729) (xy 133.34563 104.68487) (xy 133.495616 104.80796) (xy 133.666733 104.899424) - (xy 133.852406 104.955747) (xy 134.0455 104.974765) (xy 134.09388 104.97) (xy 136.806284 104.97) (xy 136.809188 104.999482) - (xy 136.845498 105.11918) (xy 136.904463 105.229494) (xy 136.925395 105.255) (xy 136.904463 105.280506) (xy 136.845498 105.39082) - (xy 136.809188 105.510518) (xy 136.806284 105.54) (xy 130.627001 105.54) (xy 129.741762 104.654762) (xy 129.763175 104.62867) - (xy 129.914068 104.346369) (xy 130.006987 104.040056) (xy 130.038362 103.7215) (xy 130.006987 103.402944) (xy 129.914068 103.096631) - (xy 129.763175 102.81433) (xy 129.560108 102.566892) (xy 129.31267 102.363825) (xy 129.030369 102.212932) (xy 128.724056 102.120013) - (xy 128.485324 102.0965) (xy 126.345676 102.0965) (xy 126.106944 102.120013) (xy 125.800631 102.212932) (xy 125.51833 102.363825) - (xy 125.270892 102.566892) (xy 125.067825 102.81433) (xy 124.916932 103.096631) (xy 124.824013 103.402944) (xy 124.792638 103.7215) - (xy 124.824013 104.040056) (xy 124.916932 104.346369) (xy 125.067825 104.62867) (xy 125.270892 104.876108) (xy 125.51833 105.079175) - (xy 125.800631 105.230068) (xy 126.106944 105.322987) (xy 126.345676 105.3465) (xy 127.6475 105.3465) (xy 129.394427 107.093428) - (xy 125.4355 107.093428) (xy 125.311018 107.105688) (xy 125.19132 107.141998) (xy 125.081006 107.200963) (xy 124.984315 107.280315) - (xy 124.904963 107.377006) (xy 124.845998 107.48732) (xy 124.809688 107.607018) (xy 124.797428 107.7315) (xy 124.797428 109.7115) - (xy 124.809688 109.835982) (xy 124.845998 109.95568) (xy 124.904963 110.065994) (xy 124.984315 110.162685) (xy 125.081006 110.242037) - (xy 125.19132 110.301002) (xy 125.311018 110.337312) (xy 125.4355 110.349572) (xy 129.3955 110.349572) (xy 129.519982 110.337312) - (xy 129.63968 110.301002) (xy 129.749994 110.242037) (xy 129.846685 110.162685) (xy 129.926037 110.065994) (xy 129.934586 110.05) - (xy 136.806284 110.05) (xy 136.809188 110.079482) (xy 136.845498 110.19918) (xy 136.904463 110.309494) (xy 136.983815 110.406185) - (xy 137.080506 110.485537) (xy 137.19082 110.544502) (xy 137.310518 110.580812) (xy 137.435 110.593072) (xy 139.435 110.593072) - (xy 139.559482 110.580812) (xy 139.67918 110.544502) (xy 139.789494 110.485537) (xy 139.886185 110.406185) (xy 139.965537 110.309494) - (xy 140.024502 110.19918) (xy 140.060812 110.079482) (xy 140.073072 109.955) (xy 140.073072 108.175) (xy 140.060812 108.050518) - (xy 140.024502 107.93082) (xy 139.965537 107.820506) (xy 139.944605 107.795) (xy 139.965537 107.769494) (xy 140.024502 107.65918) - (xy 140.060812 107.539482) (xy 140.073072 107.415) (xy 140.073072 105.635) (xy 140.060812 105.510518) (xy 140.024502 105.39082) - (xy 139.965537 105.280506) (xy 139.944605 105.255) (xy 139.965537 105.229494) (xy 140.024502 105.11918) (xy 140.060812 104.999482) - (xy 140.073072 104.875) (xy 140.073072 103.095) (xy 140.060812 102.970518) (xy 140.024502 102.85082) (xy 139.965537 102.740506) - (xy 139.944605 102.715) (xy 139.965537 102.689494) (xy 140.024502 102.57918) (xy 140.060812 102.459482) (xy 140.073072 102.335) - (xy 140.073072 100.555) (xy 140.060812 100.430518) (xy 140.024502 100.31082) (xy 139.965537 100.200506) (xy 139.944605 100.175) - (xy 139.965537 100.149494) (xy 140.024502 100.03918) (xy 140.060812 99.919482) (xy 140.073072 99.795) (xy 140.073072 98.015) - (xy 140.060812 97.890518) (xy 140.024502 97.77082) (xy 139.965537 97.660506) (xy 139.944605 97.635) (xy 139.965537 97.609494) - (xy 140.024502 97.49918) (xy 140.060812 97.379482) (xy 140.073072 97.255) (xy 140.073072 95.475) (xy 140.060812 95.350518) - (xy 140.024502 95.23082) (xy 139.965537 95.120506) (xy 139.944605 95.095) (xy 139.965537 95.069494) (xy 140.024502 94.95918) - (xy 140.060812 94.839482) (xy 140.073072 94.715) (xy 140.073072 92.935) (xy 140.060812 92.810518) (xy 140.024502 92.69082) - (xy 139.965537 92.580506) (xy 139.944605 92.555) (xy 139.965537 92.529494) (xy 140.024502 92.41918) (xy 140.060812 92.299482) - (xy 140.073072 92.175) (xy 140.073072 90.395) (xy 140.060812 90.270518) (xy 140.024502 90.15082) (xy 139.965537 90.040506) - (xy 139.886185 89.943815) (xy 139.789494 89.864463) (xy 139.67918 89.805498) (xy 139.559482 89.769188) (xy 139.435 89.756928) - (xy 137.435 89.756928) (xy 137.310518 89.769188) (xy 137.19082 89.805498) (xy 137.080506 89.864463) (xy 136.983815 89.943815) - (xy 136.904463 90.040506) (xy 136.897163 90.054162) (xy 134.084999 87.241999) (xy 134.084999 86.997518) (xy 134.273439 87.035) - (xy 134.526561 87.035) (xy 134.774821 86.985619) (xy 135.008676 86.888753) (xy 135.21914 86.748125) (xy 135.398125 86.56914) - (xy 135.538753 86.358676) (xy 135.635619 86.124821) (xy 135.685 85.876561) (xy 135.685 85.858001) (xy 135.818001 85.725) - (xy 141.151928 85.725) (xy 141.151928 85.82) (xy 141.164188 85.944482) (xy 141.200498 86.06418) (xy 141.259463 86.174494) - (xy 141.338815 86.271185) (xy 141.435506 86.350537) (xy 141.54582 86.409502) (xy 141.665518 86.445812) (xy 141.79 86.458072) - (xy 142.91 86.458072) (xy 143.034482 86.445812) (xy 143.15418 86.409502) (xy 143.264494 86.350537) (xy 143.361185 86.271185) - (xy 143.440537 86.174494) (xy 143.499502 86.06418) (xy 143.535812 85.944482) (xy 143.548072 85.82) (xy 143.548072 84.934928) - (xy 145.544349 82.938651) (xy 145.652433 82.996423) (xy 145.816684 83.046248) (xy 145.9875 83.063072) (xy 146.4625 83.063072) - (xy 146.633316 83.046248) (xy 146.797567 82.996423) (xy 146.948942 82.915512) (xy 147.081623 82.806623) (xy 147.190512 82.673942) - (xy 147.271423 82.522567) (xy 147.321248 82.358316) (xy 147.338072 82.1875) (xy 147.338072 81.5875) (xy 147.321248 81.416684) - (xy 147.271423 81.252433) (xy 147.190512 81.101058) (xy 147.128093 81.025) (xy 147.190512 80.948942) (xy 147.271423 80.797567) - (xy 147.321248 80.633316) (xy 147.338072 80.4625) (xy 147.338072 79.8625) (xy 147.321248 79.691684) (xy 147.271423 79.527433) - (xy 147.190512 79.376058) (xy 147.081623 79.243377) (xy 146.948942 79.134488) (xy 146.797567 79.053577) (xy 146.633316 79.003752) - (xy 146.4625 78.986928) (xy 145.9875 78.986928) (xy 145.816684 79.003752) (xy 145.652433 79.053577) (xy 145.501058 79.134488) - (xy 145.448648 79.1775) (xy 144.910501 79.1775) (xy 143.548072 77.815072) (xy 143.548072 76.93) (xy 143.535812 76.805518) - (xy 143.499502 76.68582) (xy 143.485701 76.66) (xy 150.442 76.66) (xy 151.540001 77.758001) (xy 151.540001 77.875017) - (xy 151.478577 77.989933) (xy 151.428752 78.154184) (xy 151.411928 78.325) (xy 151.411928 78.925) (xy 151.428752 79.095816) - (xy 151.478577 79.260067) (xy 151.559488 79.411442) (xy 151.621907 79.4875) (xy 151.559488 79.563558) (xy 151.478577 79.714933) - (xy 151.428752 79.879184) (xy 151.411928 80.05) (xy 151.411928 80.070071) (xy 144.767 86.715) (xy 141.882265 86.715) - (xy 141.86914 86.701875) (xy 141.658676 86.561247) (xy 141.424821 86.464381) (xy 141.176561 86.415) (xy 140.923439 86.415) - (xy 140.675179 86.464381) (xy 140.441324 86.561247) (xy 140.23086 86.701875) (xy 140.051875 86.88086) (xy 139.911247 87.091324) - (xy 139.814381 87.325179) (xy 139.765 87.573439) (xy 139.765 87.826561) (xy 139.814381 88.074821) (xy 139.911247 88.308676) - (xy 140.051875 88.51914) (xy 140.23086 88.698125) (xy 140.441324 88.838753) (xy 140.675179 88.935619) (xy 140.923439 88.985) - (xy 141.176561 88.985) (xy 141.424821 88.935619) (xy 141.658676 88.838753) (xy 141.86914 88.698125) (xy 141.882265 88.685) - (xy 145.12662 88.685) (xy 145.175 88.689765) (xy 145.22338 88.685) (xy 145.368094 88.670747) (xy 145.553767 88.614424) - (xy 145.724884 88.52296) (xy 145.87487 88.39987) (xy 145.905716 88.362284) (xy 152.742429 81.525572) (xy 152.7625 81.525572) - (xy 152.933316 81.508748) (xy 153.097567 81.458923) (xy 153.189096 81.41) (xy 154.27662 81.41) (xy 154.325 81.414765) - (xy 154.37338 81.41) (xy 154.518094 81.395747) (xy 154.703767 81.339424) (xy 154.874884 81.24796) (xy 155.02487 81.12487) - (xy 155.14796 80.974884) (xy 155.239424 80.803767) (xy 155.295747 80.618094) (xy 155.314765 80.425) (xy 155.31 80.37662) - (xy 155.31 76.042674) (xy 155.336185 76.021185) (xy 155.415537 75.924494) (xy 155.474502 75.81418) (xy 155.510812 75.694482) - (xy 155.523072 75.57) (xy 155.523072 73.41) (xy 155.510812 73.285518) (xy 155.474502 73.16582) (xy 155.415537 73.055506) - (xy 155.336185 72.958815) (xy 155.239494 72.879463) (xy 155.12918 72.820498) (xy 155.009482 72.784188) (xy 154.885 72.771928) - (xy 153.765 72.771928) (xy 153.640518 72.784188) (xy 153.52082 72.820498) (xy 153.410506 72.879463) (xy 153.313815 72.958815) - (xy 153.234463 73.055506) (xy 153.175498 73.16582) (xy 153.139188 73.285518) (xy 153.126928 73.41) (xy 153.126928 75.57) - (xy 153.139188 75.694482) (xy 153.175498 75.81418) (xy 153.234463 75.924494) (xy 153.313815 76.021185) (xy 153.34 76.042675) - (xy 153.34 76.790417) (xy 153.276163 76.712631) (xy 153.22487 76.65013) (xy 153.18729 76.619289) (xy 151.91 75.342) - (xy 151.91 69.483) (xy 152.648001 68.745) (xy 153.126928 68.745) (xy 153.126928 68.84) (xy 153.139188 68.964482) - (xy 153.175498 69.08418) (xy 153.234463 69.194494) (xy 153.313815 69.291185) (xy 153.410506 69.370537) (xy 153.52082 69.429502) - (xy 153.640518 69.465812) (xy 153.765 69.478072) (xy 154.885 69.478072) (xy 155.009482 69.465812) (xy 155.12918 69.429502) - (xy 155.239494 69.370537) (xy 155.336185 69.291185) (xy 155.415537 69.194494) (xy 155.474502 69.08418) (xy 155.510812 68.964482) - (xy 155.523072 68.84) (xy 155.523072 68.745) (xy 156.777501 68.745) (xy 156.7775 77.798648) (xy 156.734488 77.851058) - (xy 156.653577 78.002433) (xy 156.603752 78.166684) (xy 156.586928 78.3375) (xy 156.586928 78.8125) (xy 156.603752 78.983316) - (xy 156.653577 79.147567) (xy 156.734488 79.298942) (xy 156.802501 79.381815) (xy 156.8025 80.548648) (xy 156.759488 80.601058) - (xy 156.678577 80.752433) (xy 156.628752 80.916684) (xy 156.611928 81.0875) (xy 156.611928 81.107571) (xy 147.962572 89.756928) - (xy 146.965 89.756928) (xy 146.840518 89.769188) (xy 146.72082 89.805498) (xy 146.610506 89.864463) (xy 146.513815 89.943815) - (xy 146.434463 90.040506) (xy 146.375498 90.15082) (xy 146.339188 90.270518) (xy 146.336284 90.3) (xy 145.03838 90.3) - (xy 144.99 90.295235) (xy 144.94162 90.3) (xy 144.796906 90.314253) (xy 144.611233 90.370576) (xy 144.440116 90.46204) - (xy 144.29013 90.58513) (xy 144.16704 90.735116) (xy 144.075576 90.906233) (xy 144.019253 91.091906) (xy 144.000235 91.285) - (xy 144.005 91.333379) (xy 144.005001 96.53661) (xy 144.000235 96.585) (xy 144.005 96.63338) (xy 144.005001 101.31661) - (xy 144.000235 101.365) (xy 144.005 101.41338) (xy 144.005001 105.50161) (xy 144.000235 105.55) (xy 144.005 105.59838) - (xy 144.005001 110.68) (xy 130.883379 110.68) (xy 130.834999 110.675235) (xy 130.641905 110.694253) (xy 130.598691 110.707362) - (xy 130.456233 110.750576) (xy 130.285116 110.84204) (xy 130.13513 110.96513) (xy 130.104284 111.002716) (xy 127.657 113.45) - (xy 126.355176 113.45) (xy 126.116444 113.473513) (xy 125.810131 113.566432) (xy 125.52783 113.717325) (xy 125.280392 113.920392) - (xy 125.077325 114.16783) (xy 124.926432 114.450131) (xy 124.833513 114.756444) (xy 124.802138 115.075) (xy 124.833513 115.393556) - (xy 124.926432 115.699869) (xy 125.077325 115.98217) (xy 125.280392 116.229608) (xy 125.52783 116.432675) (xy 125.810131 116.583568) - (xy 126.116444 116.676487) (xy 126.355176 116.7) (xy 128.494824 116.7) (xy 128.733556 116.676487) (xy 129.039869 116.583568) - (xy 129.32217 116.432675) (xy 129.569608 116.229608) (xy 129.772675 115.98217) (xy 129.923568 115.699869) (xy 130.016487 115.393556) - (xy 130.047862 115.075) (xy 130.016487 114.756444) (xy 129.923568 114.450131) (xy 129.772675 114.16783) (xy 129.751262 114.141738) - (xy 131.243 112.65) (xy 144.582 112.65) (xy 145.264917 113.332917) (xy 145.301576 113.453766) (xy 145.323 113.493847) - (xy 145.323001 117.304262) (xy 145.137814 117.322501) (xy 144.853972 117.408604) (xy 144.592382 117.548427) (xy 144.363097 117.736597) - (xy 144.174927 117.965882) (xy 144.035104 118.227472) (xy 143.996072 118.356143) (xy 143.996072 114.9315) (xy 143.983812 114.807018) - (xy 143.947502 114.68732) (xy 143.888537 114.577006) (xy 143.809185 114.480315) (xy 143.712494 114.400963) (xy 143.60218 114.341998) - (xy 143.482482 114.305688) (xy 143.358 114.293428) (xy 139.858 114.293428) (xy 139.733518 114.305688) (xy 139.61382 114.341998) - (xy 139.503506 114.400963) (xy 139.406815 114.480315) (xy 139.327463 114.577006) (xy 139.268498 114.68732) (xy 139.232188 114.807018) - (xy 139.219928 114.9315) (xy 139.219928 116.517089) (xy 139.203735 116.6815) (xy 139.219928 116.845911) (xy 139.219928 118.4315) - (xy 139.232188 118.555982) (xy 139.268498 118.67568) (xy 139.327463 118.785994) (xy 139.406815 118.882685) (xy 139.503506 118.962037) - (xy 139.61382 119.021002) (xy 139.733518 119.057312) (xy 139.858 119.069572) (xy 143.358 119.069572) (xy 143.482482 119.057312) - (xy 143.60218 119.021002) (xy 143.712494 118.962037) (xy 143.809185 118.882685) (xy 143.888537 118.785994) (xy 143.929494 118.709369) - (xy 143.919928 118.8065) (xy 143.919928 120.5565) (xy 143.930694 120.665806) (xy 143.615208 120.981292) (xy 143.589515 120.949985) - (xy 143.379171 120.77736) (xy 143.139192 120.649089) (xy 142.878799 120.570099) (xy 142.608 120.543428) (xy 140.608 120.543428) - (xy 140.337201 120.570099) (xy 140.076808 120.649089) (xy 139.836829 120.77736) (xy 139.626485 120.949985) (xy 139.45386 121.160329) - (xy 139.325589 121.400308) (xy 139.246599 121.660701) (xy 139.219928 121.9315) (xy 139.219928 123.4315) (xy 139.246599 123.702299) - (xy 139.325589 123.962692) (xy 139.45386 124.202671) (xy 139.463979 124.215001) (xy 135.738002 124.215001) (xy 130.935716 119.412716) - (xy 130.90487 119.37513) (xy 130.754884 119.25204) (xy 130.583767 119.160576) (xy 130.398094 119.104253) (xy 130.25338 119.09) - (xy 130.205 119.085235) (xy 130.15662 119.09) (xy 130.043072 119.09) (xy 130.043072 119.085) (xy 130.030812 118.960518) - (xy 129.994502 118.84082) (xy 129.935537 118.730506) (xy 129.856185 118.633815) (xy 129.759494 118.554463) (xy 129.64918 118.495498) - (xy 129.529482 118.459188) (xy 129.405 118.446928) (xy 125.445 118.446928) (xy 125.320518 118.459188) (xy 125.20082 118.495498) - (xy 125.090506 118.554463) (xy 124.993815 118.633815) (xy 124.914463 118.730506) (xy 124.855498 118.84082) (xy 124.819188 118.960518) - (xy 124.806928 119.085) (xy 124.806928 121.065) (xy 124.819188 121.189482) (xy 124.855498 121.30918) (xy 124.914463 121.419494) - (xy 124.993815 121.516185) (xy 125.090506 121.595537) (xy 125.20082 121.654502) (xy 125.320518 121.690812) (xy 125.445 121.703072) - (xy 129.405 121.703072) (xy 129.529482 121.690812) (xy 129.64918 121.654502) (xy 129.759494 121.595537) (xy 129.856185 121.516185) - (xy 129.935537 121.419494) (xy 129.994502 121.30918) (xy 130.00653 121.26953) (xy 131.685 122.948) (xy 121.11 122.948) - (xy 121.11 66.86) (xy 141.018277 66.86) - ) - ) - (filled_polygon - (pts - (xy 161.44 110.741928) (xy 159.775 110.741928) (xy 159.650518 110.754188) (xy 159.53082 110.790498) (xy 159.420506 110.849463) - (xy 159.323815 110.928815) (xy 159.244463 111.025506) (xy 159.185498 111.13582) (xy 159.149188 111.255518) (xy 159.136928 111.38) - (xy 159.136928 113.08) (xy 159.149188 113.204482) (xy 159.185498 113.32418) (xy 159.244463 113.434494) (xy 159.323815 113.531185) - (xy 159.420506 113.610537) (xy 159.53082 113.669502) (xy 159.60338 113.691513) (xy 159.471525 113.823368) (xy 159.30901 114.066589) - (xy 159.197068 114.336842) (xy 159.14 114.62374) (xy 159.14 114.91626) (xy 159.197068 115.203158) (xy 159.30901 115.473411) - (xy 159.471525 115.716632) (xy 159.678368 115.923475) (xy 159.85276 116.04) (xy 159.678368 116.156525) (xy 159.471525 116.363368) - (xy 159.30901 116.606589) (xy 159.197068 116.876842) (xy 159.14 117.16374) (xy 159.14 117.45626) (xy 159.197068 117.743158) - (xy 159.30901 118.013411) (xy 159.471525 118.256632) (xy 159.678368 118.463475) (xy 159.85276 118.58) (xy 159.678368 118.696525) - (xy 159.471525 118.903368) (xy 159.30901 119.146589) (xy 159.197068 119.416842) (xy 159.14 119.70374) (xy 159.14 119.99626) - (xy 159.197068 120.283158) (xy 159.30901 120.553411) (xy 159.471525 120.796632) (xy 159.678368 121.003475) (xy 159.921589 121.16599) - (xy 160.191842 121.277932) (xy 160.47874 121.335) (xy 160.77126 121.335) (xy 161.058158 121.277932) (xy 161.328411 121.16599) - (xy 161.440001 121.091428) (xy 161.440001 122.388527) (xy 161.358411 122.33401) (xy 161.088158 122.222068) (xy 160.80126 122.165) - (xy 160.50874 122.165) (xy 160.221842 122.222068) (xy 159.951589 122.33401) (xy 159.708368 122.496525) (xy 159.501525 122.703368) - (xy 159.385 122.87776) (xy 159.268475 122.703368) (xy 159.061632 122.496525) (xy 158.818411 122.33401) (xy 158.548158 122.222068) - (xy 158.26126 122.165) (xy 157.96874 122.165) (xy 157.681842 122.222068) (xy 157.411589 122.33401) (xy 157.168368 122.496525) - (xy 157.036513 122.62838) (xy 157.014502 122.55582) (xy 156.955537 122.445506) (xy 156.876185 122.348815) (xy 156.779494 122.269463) - (xy 156.66918 122.210498) (xy 156.549482 122.174188) (xy 156.425 122.161928) (xy 154.725 122.161928) (xy 154.600518 122.174188) - (xy 154.48082 122.210498) (xy 154.370506 122.269463) (xy 154.273815 122.348815) (xy 154.194463 122.445506) (xy 154.135498 122.55582) - (xy 154.102379 122.665) (xy 153.933 122.665) (xy 152.41 121.142) (xy 152.41 118.273379) (xy 152.414765 118.224999) - (xy 152.395747 118.031906) (xy 152.339424 117.846233) (xy 152.280822 117.736597) (xy 152.24796 117.675116) (xy 152.12487 117.52513) - (xy 152.087284 117.494284) (xy 149.685 115.092) (xy 149.685 115.073439) (xy 149.635619 114.825179) (xy 149.538753 114.591324) - (xy 149.398125 114.38086) (xy 149.21914 114.201875) (xy 149.008676 114.061247) (xy 148.800458 113.975) (xy 154.586928 113.975) - (xy 154.586928 115.675) (xy 154.599188 115.799482) (xy 154.635498 115.91918) (xy 154.694463 116.029494) (xy 154.773815 116.126185) - (xy 154.870506 116.205537) (xy 154.98082 116.264502) (xy 155.05338 116.286513) (xy 154.921525 116.418368) (xy 154.75901 116.661589) - (xy 154.647068 116.931842) (xy 154.59 117.21874) (xy 154.59 117.51126) (xy 154.647068 117.798158) (xy 154.75901 118.068411) - (xy 154.921525 118.311632) (xy 155.128368 118.518475) (xy 155.30276 118.635) (xy 155.128368 118.751525) (xy 154.921525 118.958368) - (xy 154.75901 119.201589) (xy 154.647068 119.471842) (xy 154.59 119.75874) (xy 154.59 120.05126) (xy 154.647068 120.338158) - (xy 154.75901 120.608411) (xy 154.921525 120.851632) (xy 155.128368 121.058475) (xy 155.371589 121.22099) (xy 155.641842 121.332932) - (xy 155.92874 121.39) (xy 156.22126 121.39) (xy 156.508158 121.332932) (xy 156.778411 121.22099) (xy 157.021632 121.058475) - (xy 157.228475 120.851632) (xy 157.39099 120.608411) (xy 157.502932 120.338158) (xy 157.56 120.05126) (xy 157.56 119.75874) - (xy 157.502932 119.471842) (xy 157.39099 119.201589) (xy 157.228475 118.958368) (xy 157.021632 118.751525) (xy 156.84724 118.635) - (xy 157.021632 118.518475) (xy 157.228475 118.311632) (xy 157.39099 118.068411) (xy 157.502932 117.798158) (xy 157.56 117.51126) - (xy 157.56 117.21874) (xy 157.502932 116.931842) (xy 157.39099 116.661589) (xy 157.228475 116.418368) (xy 157.09662 116.286513) - (xy 157.16918 116.264502) (xy 157.279494 116.205537) (xy 157.376185 116.126185) (xy 157.455537 116.029494) (xy 157.514502 115.91918) - (xy 157.550812 115.799482) (xy 157.563072 115.675) (xy 157.563072 113.975) (xy 157.550812 113.850518) (xy 157.514502 113.73082) - (xy 157.455537 113.620506) (xy 157.376185 113.523815) (xy 157.279494 113.444463) (xy 157.16918 113.385498) (xy 157.049482 113.349188) - (xy 156.925 113.336928) (xy 155.225 113.336928) (xy 155.100518 113.349188) (xy 154.98082 113.385498) (xy 154.870506 113.444463) - (xy 154.773815 113.523815) (xy 154.694463 113.620506) (xy 154.635498 113.73082) (xy 154.599188 113.850518) (xy 154.586928 113.975) - (xy 148.800458 113.975) (xy 148.774821 113.964381) (xy 148.526561 113.915) (xy 148.273439 113.915) (xy 148.025179 113.964381) - (xy 147.791324 114.061247) (xy 147.58086 114.201875) (xy 147.401875 114.38086) (xy 147.293 114.543802) (xy 147.293 113.03138) - (xy 147.297765 112.983) (xy 147.278747 112.789906) (xy 147.250332 112.696234) (xy 147.222424 112.604233) (xy 147.13096 112.433116) - (xy 147.00787 112.28313) (xy 146.970284 112.252284) (xy 145.975 111.257) (xy 145.975 107.51378) (xy 146.013379 107.51) - (xy 146.336284 107.51) (xy 146.339188 107.539482) (xy 146.375498 107.65918) (xy 146.434463 107.769494) (xy 146.455395 107.795) - (xy 146.434463 107.820506) (xy 146.375498 107.93082) (xy 146.339188 108.050518) (xy 146.326928 108.175) (xy 146.326928 109.955) - (xy 146.339188 110.079482) (xy 146.375498 110.19918) (xy 146.434463 110.309494) (xy 146.513815 110.406185) (xy 146.610506 110.485537) - (xy 146.72082 110.544502) (xy 146.840518 110.580812) (xy 146.965 110.593072) (xy 148.965 110.593072) (xy 149.089482 110.580812) - (xy 149.20918 110.544502) (xy 149.319494 110.485537) (xy 149.416185 110.406185) (xy 149.49189 110.313938) (xy 149.49 110.323439) - (xy 149.49 110.576561) (xy 149.539381 110.824821) (xy 149.636247 111.058676) (xy 149.776875 111.26914) (xy 149.95586 111.448125) - (xy 150.166324 111.588753) (xy 150.400179 111.685619) (xy 150.648439 111.735) (xy 150.901561 111.735) (xy 151.149821 111.685619) - (xy 151.383676 111.588753) (xy 151.59414 111.448125) (xy 151.6375 111.404765) (xy 151.68086 111.448125) (xy 151.891324 111.588753) - (xy 152.125179 111.685619) (xy 152.373439 111.735) (xy 152.626561 111.735) (xy 152.874821 111.685619) (xy 153.108676 111.588753) - (xy 153.31914 111.448125) (xy 153.332265 111.435) (xy 158.25162 111.435) (xy 158.3 111.439765) (xy 158.34838 111.435) - (xy 158.493094 111.420747) (xy 158.678767 111.364424) (xy 158.849884 111.27296) (xy 158.99987 111.14987) (xy 159.030715 111.112285) - (xy 160.18729 109.955711) (xy 160.22487 109.92487) (xy 160.34796 109.774884) (xy 160.439424 109.603767) (xy 160.495747 109.418094) - (xy 160.51 109.27338) (xy 160.51 109.273379) (xy 160.514765 109.225) (xy 160.51 109.17662) (xy 160.51 109.163072) - (xy 160.7 109.163072) (xy 160.824482 109.150812) (xy 160.94418 109.114502) (xy 161.054494 109.055537) (xy 161.151185 108.976185) - (xy 161.230537 108.879494) (xy 161.289502 108.76918) (xy 161.325812 108.649482) (xy 161.338072 108.525) (xy 161.338072 103.425) - (xy 161.325812 103.300518) (xy 161.289502 103.18082) (xy 161.230537 103.070506) (xy 161.151185 102.973815) (xy 161.054494 102.894463) - (xy 160.94418 102.835498) (xy 160.824482 102.799188) (xy 160.7 102.786928) (xy 158.35 102.786928) (xy 158.225518 102.799188) - (xy 158.10582 102.835498) (xy 157.995506 102.894463) (xy 157.898815 102.973815) (xy 157.819463 103.070506) (xy 157.760498 103.18082) - (xy 157.724188 103.300518) (xy 157.711928 103.425) (xy 157.711928 108.525) (xy 157.724188 108.649482) (xy 157.760498 108.76918) - (xy 157.819463 108.879494) (xy 157.898815 108.976185) (xy 157.995506 109.055537) (xy 158.10582 109.114502) (xy 158.210687 109.146313) - (xy 157.892 109.465) (xy 153.332265 109.465) (xy 153.31914 109.451875) (xy 153.108676 109.311247) (xy 152.874821 109.214381) - (xy 152.836285 109.206716) (xy 153.561928 108.481073) (xy 153.561928 108.525) (xy 153.574188 108.649482) (xy 153.610498 108.76918) - (xy 153.669463 108.879494) (xy 153.748815 108.976185) (xy 153.845506 109.055537) (xy 153.95582 109.114502) (xy 154.075518 109.150812) - (xy 154.2 109.163072) (xy 156.55 109.163072) (xy 156.674482 109.150812) (xy 156.79418 109.114502) (xy 156.904494 109.055537) - (xy 157.001185 108.976185) (xy 157.080537 108.879494) (xy 157.139502 108.76918) (xy 157.175812 108.649482) (xy 157.188072 108.525) - (xy 157.188072 103.554928) (xy 161.44 99.303001) - ) - ) - (filled_polygon - (pts - (xy 161.440001 118.608572) (xy 161.39724 118.58) (xy 161.440001 118.551428) - ) - ) - (filled_polygon - (pts - (xy 161.440001 116.068572) (xy 161.39724 116.04) (xy 161.440001 116.011428) - ) - ) - (filled_polygon - (pts - (xy 130.025906 107.495747) (xy 130.219 107.514765) (xy 130.26738 107.51) (xy 136.806284 107.51) (xy 136.809188 107.539482) - (xy 136.845498 107.65918) (xy 136.904463 107.769494) (xy 136.925395 107.795) (xy 136.904463 107.820506) (xy 136.845498 107.93082) - (xy 136.809188 108.050518) (xy 136.806284 108.08) (xy 130.033572 108.08) (xy 130.033572 107.7315) (xy 130.021312 107.607018) - (xy 129.985002 107.48732) (xy 129.982462 107.482569) - ) - ) - (filled_polygon - (pts - (xy 150.915001 106.421999) (xy 149.502837 107.834163) (xy 149.495537 107.820506) (xy 149.474605 107.795) (xy 149.495537 107.769494) - (xy 149.554502 107.65918) (xy 149.590812 107.539482) (xy 149.603072 107.415) (xy 149.603072 105.635) (xy 149.590812 105.510518) - (xy 149.554502 105.39082) (xy 149.495537 105.280506) (xy 149.474605 105.255) (xy 149.495537 105.229494) (xy 149.554502 105.11918) - (xy 149.590812 104.999482) (xy 149.593716 104.97) (xy 149.61662 104.97) (xy 149.665 104.974765) (xy 149.71338 104.97) - (xy 149.858094 104.955747) (xy 150.043767 104.899424) (xy 150.214884 104.80796) (xy 150.36487 104.68487) (xy 150.395715 104.647285) - (xy 150.915 104.128) - ) - ) - (filled_polygon - (pts - (xy 155.743377 100.631623) (xy 155.876058 100.740512) (xy 156.027433 100.821423) (xy 156.191684 100.871248) (xy 156.3625 100.888072) - (xy 156.8625 100.888072) (xy 157.033316 100.871248) (xy 157.108584 100.848416) (xy 155.170072 102.786928) (xy 154.2 102.786928) - (xy 154.075518 102.799188) (xy 153.95582 102.835498) (xy 153.845506 102.894463) (xy 153.748815 102.973815) (xy 153.669463 103.070506) - (xy 153.610498 103.18082) (xy 153.574188 103.300518) (xy 153.561928 103.425) (xy 153.561928 105.695071) (xy 152.885 106.371999) - (xy 152.885 103.0705) (xy 155.070699 100.884802) (xy 155.208316 100.871248) (xy 155.372567 100.821423) (xy 155.523942 100.740512) - (xy 155.656623 100.631623) (xy 155.7 100.578768) - ) - ) - (filled_polygon - (pts - (xy 146.339188 102.459482) (xy 146.375498 102.57918) (xy 146.434463 102.689494) (xy 146.455395 102.715) (xy 146.434463 102.740506) - (xy 146.375498 102.85082) (xy 146.339188 102.970518) (xy 146.326928 103.095) (xy 146.326928 104.875) (xy 146.339188 104.999482) - (xy 146.375498 105.11918) (xy 146.434463 105.229494) (xy 146.455395 105.255) (xy 146.434463 105.280506) (xy 146.375498 105.39082) - (xy 146.340196 105.507196) (xy 145.975 105.142) (xy 145.975 102.43) (xy 146.336284 102.43) - ) - ) - (filled_polygon - (pts - (xy 153.728577 99.202433) (xy 153.678752 99.366684) (xy 153.665198 99.504301) (xy 151.385 101.7845) (xy 151.385 101.483) - (xy 153.800928 99.067072) - ) - ) - (filled_polygon - (pts - (xy 153.809488 95.951058) (xy 153.728577 96.102433) (xy 153.678752 96.266684) (xy 153.663832 96.418167) (xy 149.737716 100.344284) - (xy 149.70013 100.37513) (xy 149.597655 100.499997) (xy 149.590812 100.430518) (xy 149.554502 100.31082) (xy 149.495537 100.200506) - (xy 149.474605 100.175) (xy 149.495537 100.149494) (xy 149.554502 100.03918) (xy 149.590812 99.919482) (xy 149.594576 99.881264) - (xy 149.650594 99.875747) (xy 149.836267 99.819424) (xy 150.007384 99.72796) (xy 150.15737 99.60487) (xy 150.188216 99.567284) - (xy 153.832582 95.922918) - ) - ) - (filled_polygon - (pts - (xy 146.339188 97.379482) (xy 146.375498 97.49918) (xy 146.434463 97.609494) (xy 146.455395 97.635) (xy 146.434463 97.660506) - (xy 146.375498 97.77082) (xy 146.339188 97.890518) (xy 146.326928 98.015) (xy 146.326928 99.795) (xy 146.339188 99.919482) - (xy 146.375498 100.03918) (xy 146.434463 100.149494) (xy 146.455395 100.175) (xy 146.434463 100.200506) (xy 146.375498 100.31082) - (xy 146.339188 100.430518) (xy 146.336284 100.46) (xy 145.975 100.46) (xy 145.975 97.35) (xy 146.336284 97.35) - ) - ) - (filled_polygon - (pts - (xy 157.698416 100.258584) (xy 157.721248 100.183316) (xy 157.734802 100.045698) (xy 159.793825 97.986675) (xy 159.924821 97.960619) - (xy 160.04698 97.910019) - ) - ) - (filled_polygon - (pts - (xy 155.743377 97.531623) (xy 155.876058 97.640512) (xy 156.027433 97.721423) (xy 156.191684 97.771248) (xy 156.3625 97.788072) - (xy 156.8625 97.788072) (xy 157.033316 97.771248) (xy 157.197567 97.721423) (xy 157.348942 97.640512) (xy 157.377082 97.617418) - (xy 156.329302 98.665198) (xy 156.191684 98.678752) (xy 156.027433 98.728577) (xy 155.876058 98.809488) (xy 155.743377 98.918377) - (xy 155.7 98.971232) (xy 155.656623 98.918377) (xy 155.523942 98.809488) (xy 155.372567 98.728577) (xy 155.208316 98.678752) - (xy 155.0375 98.661928) (xy 154.5375 98.661928) (xy 154.366684 98.678752) (xy 154.202433 98.728577) (xy 154.067073 98.800928) - (xy 155.084564 97.783437) (xy 155.208316 97.771248) (xy 155.372567 97.721423) (xy 155.523942 97.640512) (xy 155.656623 97.531623) - (xy 155.7 97.478768) - ) - ) - (filled_polygon - (pts - (xy 158.265 96.598439) (xy 158.265 96.7295) (xy 157.567418 97.427082) (xy 157.590512 97.398942) (xy 157.671423 97.247567) - (xy 157.721248 97.083316) (xy 157.734802 96.945698) (xy 158.310423 96.370077) - ) - ) - (filled_polygon - (pts - (xy 153.809488 92.851058) (xy 153.728577 93.002433) (xy 153.678752 93.166684) (xy 153.665198 93.304302) (xy 149.590899 97.378601) - (xy 149.603072 97.255) (xy 149.603072 95.475) (xy 149.590812 95.350518) (xy 149.554502 95.23082) (xy 149.495537 95.120506) - (xy 149.474605 95.095) (xy 149.495537 95.069494) (xy 149.554502 94.95918) (xy 149.590812 94.839482) (xy 149.593716 94.81) - (xy 151.38912 94.81) (xy 151.4375 94.814765) (xy 151.48588 94.81) (xy 151.630594 94.795747) (xy 151.816267 94.739424) - (xy 151.987384 94.64796) (xy 152.13737 94.52487) (xy 152.168216 94.487284) (xy 153.832582 92.822918) - ) - ) - (filled_polygon - (pts - (xy 162.740001 97.091233) (xy 162.66 97.066965) (xy 162.66 88.226368) (xy 162.74 88.106639) - ) - ) - (filled_polygon - (pts - (xy 160.69 96.119335) (xy 160.688753 96.116324) (xy 160.548125 95.90586) (xy 160.36914 95.726875) (xy 160.158676 95.586247) - (xy 159.924821 95.489381) (xy 159.676561 95.44) (xy 159.423439 95.44) (xy 159.195078 95.485423) (xy 159.787618 94.892882) - (xy 159.949821 94.860619) (xy 160.183676 94.763753) (xy 160.39414 94.623125) (xy 160.573125 94.44414) (xy 160.69 94.269224) - ) - ) - (filled_polygon - (pts - (xy 155.743377 94.431623) (xy 155.876058 94.540512) (xy 156.027433 94.621423) (xy 156.191684 94.671248) (xy 156.3625 94.688072) - (xy 156.8625 94.688072) (xy 157.033316 94.671248) (xy 157.197567 94.621423) (xy 157.348942 94.540512) (xy 157.377079 94.51742) - (xy 156.329302 95.565198) (xy 156.191684 95.578752) (xy 156.027433 95.628577) (xy 155.876058 95.709488) (xy 155.743377 95.818377) - (xy 155.7 95.871232) (xy 155.656623 95.818377) (xy 155.523942 95.709488) (xy 155.372567 95.628577) (xy 155.208316 95.578752) - (xy 155.0375 95.561928) (xy 154.5375 95.561928) (xy 154.366684 95.578752) (xy 154.202433 95.628577) (xy 154.051058 95.709488) - (xy 154.022918 95.732582) (xy 155.070698 94.684802) (xy 155.208316 94.671248) (xy 155.372567 94.621423) (xy 155.523942 94.540512) - (xy 155.656623 94.431623) (xy 155.7 94.378768) - ) - ) - (filled_polygon - (pts - (xy 146.339188 92.299482) (xy 146.375498 92.41918) (xy 146.434463 92.529494) (xy 146.455395 92.555) (xy 146.434463 92.580506) - (xy 146.375498 92.69082) (xy 146.339188 92.810518) (xy 146.326928 92.935) (xy 146.326928 94.715) (xy 146.339188 94.839482) - (xy 146.375498 94.95918) (xy 146.434463 95.069494) (xy 146.455395 95.095) (xy 146.434463 95.120506) (xy 146.375498 95.23082) - (xy 146.339188 95.350518) (xy 146.336284 95.38) (xy 145.975 95.38) (xy 145.975 92.27) (xy 146.336284 92.27) - ) - ) - (filled_polygon - (pts - (xy 158.339381 93.250179) (xy 158.29 93.498439) (xy 158.29 93.604499) (xy 157.56742 94.327079) (xy 157.590512 94.298942) - (xy 157.671423 94.147567) (xy 157.721248 93.983316) (xy 157.734802 93.845698) (xy 158.345787 93.234713) - ) - ) - (filled_polygon - (pts - (xy 160.69 92.980776) (xy 160.573125 92.80586) (xy 160.39414 92.626875) (xy 160.183676 92.486247) (xy 159.949821 92.389381) - (xy 159.701561 92.34) (xy 159.448439 92.34) (xy 159.200179 92.389381) (xy 159.184713 92.395787) (xy 159.825032 91.755468) - (xy 159.924821 91.735619) (xy 160.158676 91.638753) (xy 160.36914 91.498125) (xy 160.548125 91.31914) (xy 160.688753 91.108676) - (xy 160.690001 91.105664) - ) - ) - (filled_polygon - (pts - (xy 162.74 86.743361) (xy 162.648125 86.60586) (xy 162.46914 86.426875) (xy 162.258676 86.286247) (xy 162.024821 86.189381) - (xy 161.776561 86.14) (xy 161.523439 86.14) (xy 161.275179 86.189381) (xy 161.041324 86.286247) (xy 160.83086 86.426875) - (xy 160.651875 86.60586) (xy 160.608352 86.670996) (xy 160.548125 86.58086) (xy 160.36914 86.401875) (xy 160.158676 86.261247) - (xy 159.924821 86.164381) (xy 159.676561 86.115) (xy 159.423439 86.115) (xy 159.175179 86.164381) (xy 158.941324 86.261247) - (xy 158.73086 86.401875) (xy 158.551875 86.58086) (xy 158.411247 86.791324) (xy 158.314381 87.025179) (xy 158.265 87.273439) - (xy 158.265 87.4295) (xy 156.329302 89.365198) (xy 156.191684 89.378752) (xy 156.027433 89.428577) (xy 155.876058 89.509488) - (xy 155.743377 89.618377) (xy 155.7 89.671232) (xy 155.656623 89.618377) (xy 155.523942 89.509488) (xy 155.372567 89.428577) - (xy 155.208316 89.378752) (xy 155.0375 89.361928) (xy 154.5375 89.361928) (xy 154.366684 89.378752) (xy 154.202433 89.428577) - (xy 154.051058 89.509488) (xy 153.918377 89.618377) (xy 153.809488 89.751058) (xy 153.728577 89.902433) (xy 153.678752 90.066684) - (xy 153.665198 90.204302) (xy 151.0295 92.84) (xy 149.593716 92.84) (xy 149.590812 92.810518) (xy 149.554502 92.69082) - (xy 149.495537 92.580506) (xy 149.474605 92.555) (xy 149.495537 92.529494) (xy 149.554502 92.41918) (xy 149.590812 92.299482) - (xy 149.603072 92.175) (xy 149.603072 90.902428) (xy 158.067429 82.438072) (xy 158.0875 82.438072) (xy 158.258316 82.421248) - (xy 158.422567 82.371423) (xy 158.5275 82.315335) (xy 158.527501 83.867339) (xy 158.411247 84.041324) (xy 158.314381 84.275179) - (xy 158.265 84.523439) (xy 158.265 84.776561) (xy 158.314381 85.024821) (xy 158.411247 85.258676) (xy 158.551875 85.46914) - (xy 158.73086 85.648125) (xy 158.941324 85.788753) (xy 159.175179 85.885619) (xy 159.423439 85.935) (xy 159.676561 85.935) - (xy 159.924821 85.885619) (xy 160.158676 85.788753) (xy 160.36914 85.648125) (xy 160.548125 85.46914) (xy 160.688753 85.258676) - (xy 160.785619 85.024821) (xy 160.835 84.776561) (xy 160.835 84.523439) (xy 160.785619 84.275179) (xy 160.688753 84.041324) - (xy 160.548125 83.83086) (xy 160.4975 83.780235) (xy 160.4975 82.101352) (xy 160.540512 82.048942) (xy 160.621423 81.897567) - (xy 160.671248 81.733316) (xy 160.688072 81.5625) (xy 160.688072 81.0875) (xy 160.671248 80.916684) (xy 160.621423 80.752433) - (xy 160.540512 80.601058) (xy 160.4725 80.518186) (xy 160.4725 79.351352) (xy 160.515512 79.298942) (xy 160.596423 79.147567) - (xy 160.646248 78.983316) (xy 160.663072 78.8125) (xy 160.663072 78.792428) (xy 161.312284 78.143216) (xy 161.34987 78.11237) - (xy 161.47296 77.962384) (xy 161.564424 77.791267) (xy 161.620747 77.605594) (xy 161.626903 77.543094) (xy 161.639765 77.412501) - (xy 161.635 77.364121) (xy 161.635 76.067674) (xy 161.661185 76.046185) (xy 161.740537 75.949494) (xy 161.799502 75.83918) - (xy 161.835812 75.719482) (xy 161.848072 75.595) (xy 161.848072 73.435) (xy 161.835812 73.310518) (xy 161.799502 73.19082) - (xy 161.740537 73.080506) (xy 161.661185 72.983815) (xy 161.564494 72.904463) (xy 161.45418 72.845498) (xy 161.334482 72.809188) - (xy 161.21 72.796928) (xy 160.09 72.796928) (xy 159.965518 72.809188) (xy 159.84582 72.845498) (xy 159.735506 72.904463) - (xy 159.638815 72.983815) (xy 159.559463 73.080506) (xy 159.500498 73.19082) (xy 159.464188 73.310518) (xy 159.451928 73.435) - (xy 159.451928 75.595) (xy 159.464188 75.719482) (xy 159.500498 75.83918) (xy 159.559463 75.949494) (xy 159.638815 76.046185) - (xy 159.665001 76.067675) (xy 159.665001 77.004499) (xy 159.207572 77.461928) (xy 159.1875 77.461928) (xy 159.016684 77.478752) - (xy 158.852433 77.528577) (xy 158.7475 77.584664) (xy 158.7475 68.745) (xy 159.451928 68.745) (xy 159.451928 68.865) - (xy 159.464188 68.989482) (xy 159.500498 69.10918) (xy 159.559463 69.219494) (xy 159.638815 69.316185) (xy 159.735506 69.395537) - (xy 159.84582 69.454502) (xy 159.965518 69.490812) (xy 160.09 69.503072) (xy 161.21 69.503072) (xy 161.334482 69.490812) - (xy 161.45418 69.454502) (xy 161.564494 69.395537) (xy 161.661185 69.316185) (xy 161.740537 69.219494) (xy 161.799502 69.10918) - (xy 161.835812 68.989482) (xy 161.848072 68.865) (xy 161.848072 66.86) (xy 162.74 66.86) - ) - ) - (filled_polygon - (pts - (xy 155.743377 91.331623) (xy 155.876058 91.440512) (xy 156.027433 91.521423) (xy 156.191684 91.571248) (xy 156.3625 91.588072) - (xy 156.8625 91.588072) (xy 157.033316 91.571248) (xy 157.197567 91.521423) (xy 157.348942 91.440512) (xy 157.377082 91.417418) - (xy 156.329302 92.465198) (xy 156.191684 92.478752) (xy 156.027433 92.528577) (xy 155.876058 92.609488) (xy 155.743377 92.718377) - (xy 155.7 92.771232) (xy 155.656623 92.718377) (xy 155.523942 92.609488) (xy 155.372567 92.528577) (xy 155.208316 92.478752) - (xy 155.0375 92.461928) (xy 154.5375 92.461928) (xy 154.366684 92.478752) (xy 154.202433 92.528577) (xy 154.051058 92.609488) - (xy 154.022918 92.632582) (xy 155.070698 91.584802) (xy 155.208316 91.571248) (xy 155.372567 91.521423) (xy 155.523942 91.440512) - (xy 155.656623 91.331623) (xy 155.7 91.278768) - ) - ) - (filled_polygon - (pts - (xy 158.265 90.373439) (xy 158.265 90.5295) (xy 157.567418 91.227082) (xy 157.590512 91.198942) (xy 157.671423 91.047567) - (xy 157.721248 90.883316) (xy 157.734802 90.745698) (xy 158.304216 90.176284) - ) - ) - (filled_polygon - (pts - (xy 160.651875 88.24414) (xy 160.690001 88.282266) (xy 160.690001 89.894336) (xy 160.688753 89.891324) (xy 160.548125 89.68086) - (xy 160.36914 89.501875) (xy 160.158676 89.361247) (xy 159.924821 89.264381) (xy 159.676561 89.215) (xy 159.423439 89.215) - (xy 159.226284 89.254216) (xy 159.825032 88.655468) (xy 159.924821 88.635619) (xy 160.158676 88.538753) (xy 160.36914 88.398125) - (xy 160.548125 88.21914) (xy 160.591648 88.154004) - ) - ) - (filled_polygon - (pts - (xy 129.34 88.726622) (xy 129.335235 88.775002) (xy 129.34 88.823381) (xy 129.352413 88.949415) (xy 128.385 87.982002) - (xy 128.385 87.628072) (xy 129.34 87.628072) - ) - ) - ) - (zone (net 0) (net_name "") (layer B.Cu) (tstamp 625E896C) (hatch edge 0.508) - (connect_pads (clearance 0.508)) - (min_thickness 0.254) - (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) - (polygon - (pts - (xy 163.411519 126.175) (xy 120.436519 126.175) (xy 120.436519 66.175) (xy 163.411519 66.175) + (xy 163.411519 126.175) (xy 120.436519 126.175) (xy 120.436519 66.175) (xy 163.411519 66.175) ) ) (filled_polygon @@ -3098,18 +2584,18 @@ (xy 132.12651 124.922195) (xy 132.256523 124.935) (xy 132.256524 124.935) (xy 132.3 124.939282) (xy 132.343477 124.935) (xy 135.116531 124.935) (xy 135.16 124.939281) (xy 135.203469 124.935) (xy 135.203477 124.935) (xy 135.33349 124.922195) (xy 135.500313 124.871589) (xy 135.654059 124.789411) (xy 135.788817 124.678817) (xy 135.816534 124.645044) (xy 136.826007 123.635572) - (xy 137.525001 123.635572) (xy 137.698255 123.618508) (xy 137.864851 123.567972) (xy 138.018387 123.485905) (xy 138.152962 123.375462) - (xy 138.263405 123.240887) (xy 138.345472 123.087351) (xy 138.346944 123.0825) (xy 139.219928 123.0825) (xy 139.219928 123.4315) + (xy 137.525003 123.635572) (xy 137.698257 123.618508) (xy 137.864852 123.567972) (xy 138.018388 123.485905) (xy 138.152963 123.375463) + (xy 138.263405 123.240888) (xy 138.345472 123.087352) (xy 138.346944 123.0825) (xy 139.219928 123.0825) (xy 139.219928 123.4315) (xy 139.246599 123.702299) (xy 139.325589 123.962692) (xy 139.45386 124.202671) (xy 139.626485 124.413015) (xy 139.836829 124.58564) (xy 140.076808 124.713911) (xy 140.337201 124.792901) (xy 140.608 124.819572) (xy 142.608 124.819572) (xy 142.878799 124.792901) (xy 143.139192 124.713911) (xy 143.379171 124.58564) (xy 143.589515 124.413015) (xy 143.76214 124.202671) (xy 143.890411 123.962692) (xy 143.969401 123.702299) (xy 143.996072 123.4315) (xy 143.996072 121.9315) (xy 143.969401 121.660701) (xy 143.890411 121.400308) (xy 143.76214 121.160329) (xy 143.589515 120.949985) (xy 143.379171 120.77736) (xy 143.139192 120.649089) (xy 142.878799 120.570099) (xy 142.608 120.543428) (xy 140.608 120.543428) (xy 140.337201 120.570099) (xy 140.076808 120.649089) (xy 139.836829 120.77736) - (xy 139.626485 120.949985) (xy 139.493112 121.1125) (xy 138.346944 121.1125) (xy 138.345472 121.107649) (xy 138.263405 120.954113) - (xy 138.152962 120.819538) (xy 138.018387 120.709095) (xy 137.864851 120.627028) (xy 137.698255 120.576492) (xy 137.525001 120.559428) - (xy 136.699999 120.559428) (xy 136.526745 120.576492) (xy 136.360149 120.627028) (xy 136.206613 120.709095) (xy 136.072038 120.819538) - (xy 135.961595 120.954113) (xy 135.879528 121.107649) (xy 135.828992 121.274245) (xy 135.811928 121.447499) (xy 135.811928 122.146493) + (xy 139.626485 120.949985) (xy 139.493112 121.1125) (xy 138.346944 121.1125) (xy 138.345472 121.107648) (xy 138.263405 120.954112) + (xy 138.152963 120.819537) (xy 138.018388 120.709095) (xy 137.864852 120.627028) (xy 137.698257 120.576492) (xy 137.525003 120.559428) + (xy 136.699997 120.559428) (xy 136.526743 120.576492) (xy 136.360148 120.627028) (xy 136.206612 120.709095) (xy 136.072037 120.819537) + (xy 135.961595 120.954112) (xy 135.879528 121.107648) (xy 135.828992 121.274243) (xy 135.811928 121.447497) (xy 135.811928 122.146493) (xy 135.288072 122.67035) (xy 135.288072 122.189929) (xy 135.337289 122.140712) (xy 135.37487 122.10987) (xy 135.49796 121.959884) (xy 135.589424 121.788767) (xy 135.645747 121.603094) (xy 135.658985 121.468683) (xy 135.664765 121.41) (xy 135.66 121.36162) (xy 135.66 117.645292) (xy 135.802433 117.721423) (xy 135.966684 117.771248) (xy 136.1375 117.788072) (xy 136.7125 117.788072) @@ -3197,353 +2683,867 @@ ) (filled_polygon (pts - (xy 157.127805 118.600571) (xy 157.178412 118.767394) (xy 157.26059 118.92114) (xy 157.343468 119.022127) (xy 157.343471 119.02213) - (xy 157.371184 119.055898) (xy 157.404951 119.08361) (xy 158.766389 120.445049) (xy 158.794102 120.478817) (xy 158.82787 120.50653) - (xy 158.827872 120.506532) (xy 158.888758 120.5565) (xy 158.92886 120.589411) (xy 159.082606 120.671589) (xy 159.249429 120.722195) - (xy 159.379442 120.735) (xy 159.379452 120.735) (xy 159.422918 120.739281) (xy 159.432569 120.73833) (xy 159.471525 120.796632) - (xy 159.678368 121.003475) (xy 159.921589 121.16599) (xy 160.03991 121.215) (xy 158.636579 121.215) (xy 157.545539 120.12396) - (xy 157.56 120.05126) (xy 157.56 119.75874) (xy 157.502932 119.471842) (xy 157.39099 119.201589) (xy 157.228475 118.958368) - (xy 157.021632 118.751525) (xy 156.84724 118.635) (xy 157.021632 118.518475) (xy 157.110926 118.429181) + (xy 157.127805 118.600571) (xy 157.178412 118.767394) (xy 157.26059 118.92114) (xy 157.343468 119.022127) (xy 157.343471 119.02213) + (xy 157.371184 119.055898) (xy 157.404951 119.08361) (xy 158.766389 120.445049) (xy 158.794102 120.478817) (xy 158.82787 120.50653) + (xy 158.827872 120.506532) (xy 158.888758 120.5565) (xy 158.92886 120.589411) (xy 159.082606 120.671589) (xy 159.249429 120.722195) + (xy 159.379442 120.735) (xy 159.379452 120.735) (xy 159.422918 120.739281) (xy 159.432569 120.73833) (xy 159.471525 120.796632) + (xy 159.678368 121.003475) (xy 159.921589 121.16599) (xy 160.03991 121.215) (xy 158.636579 121.215) (xy 157.545539 120.12396) + (xy 157.56 120.05126) (xy 157.56 119.75874) (xy 157.502932 119.471842) (xy 157.39099 119.201589) (xy 157.228475 118.958368) + (xy 157.021632 118.751525) (xy 156.84724 118.635) (xy 157.021632 118.518475) (xy 157.110926 118.429181) + ) + ) + (filled_polygon + (pts + (xy 161.540001 121.08342) (xy 161.408422 121.215) (xy 161.21009 121.215) (xy 161.328411 121.16599) (xy 161.540001 121.02461) + ) + ) + (filled_polygon + (pts + (xy 138.45847 106.785049) (xy 138.486183 106.818817) (xy 138.519951 106.84653) (xy 138.519953 106.846532) (xy 138.620941 106.929411) + (xy 138.774686 107.011589) (xy 138.848858 107.034089) (xy 138.94151 107.062195) (xy 139.071523 107.075) (xy 139.071531 107.075) + (xy 139.115 107.079281) (xy 139.158469 107.075) (xy 139.198421 107.075) (xy 135.286494 110.986928) (xy 134.85 110.986928) + (xy 134.725518 110.999188) (xy 134.60582 111.035498) (xy 134.495506 111.094463) (xy 134.398815 111.173815) (xy 134.319463 111.270506) + (xy 134.260498 111.38082) (xy 134.224188 111.500518) (xy 134.211928 111.625) (xy 134.211928 112.525) (xy 134.224188 112.649482) + (xy 134.260498 112.76918) (xy 134.319463 112.879494) (xy 134.398815 112.976185) (xy 134.495506 113.055537) (xy 134.60582 113.114502) + (xy 134.725518 113.150812) (xy 134.85 113.163072) (xy 136.05 113.163072) (xy 136.174482 113.150812) (xy 136.29418 113.114502) + (xy 136.404494 113.055537) (xy 136.501185 112.976185) (xy 136.580537 112.879494) (xy 136.639502 112.76918) (xy 136.675812 112.649482) + (xy 136.688072 112.525) (xy 136.688072 112.088506) (xy 139.579956 109.196623) (xy 139.644742 109.317829) (xy 139.742749 109.437251) + (xy 139.862171 109.535258) (xy 139.99 109.603585) (xy 139.990001 111.99) (xy 137.94838 111.99) (xy 137.9 111.985235) + (xy 137.85162 111.99) (xy 137.706906 112.004253) (xy 137.521233 112.060576) (xy 137.350116 112.15204) (xy 137.20013 112.27513) + (xy 137.169289 112.31271) (xy 134.203609 115.278391) (xy 134.097203 115.335266) (xy 133.939604 115.464604) (xy 133.810266 115.622203) + (xy 133.714159 115.802008) (xy 133.67449 115.932778) (xy 133.659488 115.951058) (xy 133.578577 116.102433) (xy 133.528752 116.266684) + (xy 133.511928 116.4375) (xy 133.511928 116.9125) (xy 133.528752 117.083316) (xy 133.578577 117.247567) (xy 133.659488 117.398942) + (xy 133.69 117.436121) (xy 133.690001 120.559428) (xy 133.574997 120.559428) (xy 133.401743 120.576492) (xy 133.235148 120.627028) + (xy 133.185 120.653833) (xy 133.185 106.86) (xy 134.565001 106.86) (xy 134.565 107.757317) (xy 134.495506 107.794463) + (xy 134.398815 107.873815) (xy 134.319463 107.970506) (xy 134.260498 108.08082) (xy 134.224188 108.200518) (xy 134.211928 108.325) + (xy 134.211928 109.225) (xy 134.224188 109.349482) (xy 134.260498 109.46918) (xy 134.319463 109.579494) (xy 134.398815 109.676185) + (xy 134.495506 109.755537) (xy 134.60582 109.814502) (xy 134.725518 109.850812) (xy 134.85 109.863072) (xy 136.05 109.863072) + (xy 136.174482 109.850812) (xy 136.29418 109.814502) (xy 136.404494 109.755537) (xy 136.501185 109.676185) (xy 136.580537 109.579494) + (xy 136.639502 109.46918) (xy 136.675812 109.349482) (xy 136.688072 109.225) (xy 136.688072 108.325) (xy 136.675812 108.200518) + (xy 136.639502 108.08082) (xy 136.580537 107.970506) (xy 136.501185 107.873815) (xy 136.404494 107.794463) (xy 136.335 107.757317) + (xy 136.335 106.722046) (xy 136.415512 106.623942) (xy 136.496423 106.472567) (xy 136.546248 106.308316) (xy 136.563072 106.1375) + (xy 136.563072 105.5375) (xy 136.546248 105.366684) (xy 136.496423 105.202433) (xy 136.415512 105.051058) (xy 136.371558 104.9975) + (xy 136.670922 104.9975) + ) + ) + (filled_polygon + (pts + (xy 140.8 113.964765) (xy 140.84838 113.96) (xy 148.047204 113.96) (xy 148.025179 113.964381) (xy 147.791324 114.061247) + (xy 147.58086 114.201875) (xy 147.401875 114.38086) (xy 147.261247 114.591324) (xy 147.164381 114.825179) (xy 147.115 115.073439) + (xy 147.115 115.326561) (xy 147.164381 115.574821) (xy 147.261247 115.808676) (xy 147.401875 116.01914) (xy 147.58086 116.198125) + (xy 147.791324 116.338753) (xy 148.025179 116.435619) (xy 148.273439 116.485) (xy 148.526561 116.485) (xy 148.774821 116.435619) + (xy 149.008676 116.338753) (xy 149.21914 116.198125) (xy 149.282265 116.135) (xy 149.575431 116.135) (xy 149.586595 116.155887) + (xy 149.697038 116.290462) (xy 149.831613 116.400905) (xy 149.985149 116.482972) (xy 150.151745 116.533508) (xy 150.324999 116.550572) + (xy 152.475001 116.550572) (xy 152.648255 116.533508) (xy 152.814851 116.482972) (xy 152.968387 116.400905) (xy 153.102962 116.290462) + (xy 153.213405 116.155887) (xy 153.240001 116.10613) (xy 153.240001 117.356513) (xy 153.235718 117.4) (xy 153.252805 117.57349) + (xy 153.303411 117.740313) (xy 153.385589 117.894059) (xy 153.496183 118.028817) (xy 153.630941 118.139411) (xy 153.784687 118.221589) + (xy 153.95151 118.272195) (xy 154.081523 118.285) (xy 154.081524 118.285) (xy 154.125 118.289282) (xy 154.168477 118.285) + (xy 154.90373 118.285) (xy 154.921525 118.311632) (xy 155.128368 118.518475) (xy 155.30276 118.635) (xy 155.128368 118.751525) + (xy 154.939893 118.94) (xy 153.278021 118.94) (xy 153.213405 118.819113) (xy 153.102962 118.684538) (xy 152.968387 118.574095) + (xy 152.814851 118.492028) (xy 152.648255 118.441492) (xy 152.475001 118.424428) (xy 150.324999 118.424428) (xy 150.151745 118.441492) + (xy 149.985149 118.492028) (xy 149.831613 118.574095) (xy 149.697038 118.684538) (xy 149.586595 118.819113) (xy 149.575431 118.84) + (xy 148.696072 118.84) (xy 148.696072 118.8065) (xy 148.666999 118.511314) (xy 148.580896 118.227472) (xy 148.441073 117.965882) + (xy 148.252903 117.736597) (xy 148.023618 117.548427) (xy 147.762028 117.408604) (xy 147.478186 117.322501) (xy 147.183 117.293428) + (xy 145.433 117.293428) (xy 145.137814 117.322501) (xy 144.853972 117.408604) (xy 144.592382 117.548427) (xy 144.363097 117.736597) + (xy 144.174927 117.965882) (xy 144.035104 118.227472) (xy 143.996072 118.356143) (xy 143.996072 114.9315) (xy 143.983812 114.807018) + (xy 143.947502 114.68732) (xy 143.888537 114.577006) (xy 143.809185 114.480315) (xy 143.712494 114.400963) (xy 143.60218 114.341998) + (xy 143.482482 114.305688) (xy 143.358 114.293428) (xy 139.858 114.293428) (xy 139.733518 114.305688) (xy 139.61382 114.341998) + (xy 139.503506 114.400963) (xy 139.406815 114.480315) (xy 139.327463 114.577006) (xy 139.268498 114.68732) (xy 139.232188 114.807018) + (xy 139.219928 114.9315) (xy 139.219928 115.69) (xy 137.162482 115.69) (xy 137.047567 115.628577) (xy 136.883316 115.578752) + (xy 136.7125 115.561928) (xy 136.706072 115.561928) (xy 138.308001 113.96) (xy 140.75162 113.96) + ) + ) + (filled_polygon + (pts + (xy 159.678368 118.463475) (xy 159.85276 118.58) (xy 159.678368 118.696525) (xy 159.599695 118.775198) (xy 159.084497 118.26) + (xy 159.474893 118.26) + ) + ) + (filled_polygon + (pts + (xy 161.540001 118.67539) (xy 161.39724 118.58) (xy 161.540001 118.48461) + ) + ) + (filled_polygon + (pts + (xy 155.05338 116.286513) (xy 155.01 116.329893) (xy 155.01 116.273354) + ) + ) + (filled_polygon + (pts + (xy 157.115001 116.304894) (xy 157.09662 116.286513) (xy 157.115001 116.280937) + ) + ) + (filled_polygon + (pts + (xy 161.54 116.135389) (xy 161.39724 116.04) (xy 161.54 115.944611) + ) + ) + (filled_polygon + (pts + (xy 159.85276 116.04) (xy 159.835 116.051867) (xy 159.835 116.028133) + ) + ) + (filled_polygon + (pts + (xy 153.240001 114.19387) (xy 153.213405 114.144113) (xy 153.102962 114.009538) (xy 152.968387 113.899095) (xy 152.814851 113.817028) + (xy 152.648255 113.766492) (xy 152.475001 113.749428) (xy 151.9225 113.749428) (xy 151.9225 113.02338) (xy 151.927265 112.975) + (xy 151.908247 112.781906) (xy 151.851924 112.596233) (xy 151.765767 112.435044) (xy 151.803816 112.403818) (xy 151.831533 112.370045) + (xy 152.466579 111.735) (xy 152.626561 111.735) (xy 152.874821 111.685619) (xy 153.108676 111.588753) (xy 153.24 111.501005) + ) + ) + (filled_polygon + (pts + (xy 149.697038 114.009538) (xy 149.586595 114.144113) (xy 149.575431 114.165) (xy 149.163953 114.165) (xy 149.008676 114.061247) + (xy 148.774821 113.964381) (xy 148.752796 113.96) (xy 149.7574 113.96) + ) + ) + (filled_polygon + (pts + (xy 162.740001 113.945733) (xy 162.59849 113.902805) (xy 162.468477 113.89) (xy 162.468476 113.89) (xy 162.425 113.885718) + (xy 162.381523 113.89) (xy 161.822997 113.89) (xy 161.778475 113.823368) (xy 161.64662 113.691513) (xy 161.71918 113.669502) + (xy 161.829494 113.610537) (xy 161.926185 113.531185) (xy 162.005537 113.434494) (xy 162.064502 113.32418) (xy 162.100812 113.204482) + (xy 162.113072 113.08) (xy 162.113072 111.38) (xy 162.100812 111.255518) (xy 162.064502 111.13582) (xy 162.005537 111.025506) + (xy 161.926185 110.928815) (xy 161.829494 110.849463) (xy 161.71918 110.790498) (xy 161.599482 110.754188) (xy 161.51 110.745375) + (xy 161.51 108.872046) (xy 161.590512 108.773942) (xy 161.671423 108.622567) (xy 161.721248 108.458316) (xy 161.738072 108.2875) + (xy 161.738072 107.7875) (xy 161.721248 107.616684) (xy 161.671423 107.452433) (xy 161.590512 107.301058) (xy 161.481623 107.168377) + (xy 161.428768 107.125) (xy 161.481623 107.081623) (xy 161.590512 106.948942) (xy 161.671423 106.797567) (xy 161.721248 106.633316) + (xy 161.738072 106.4625) (xy 161.738072 105.9625) (xy 161.721248 105.791684) (xy 161.671423 105.627433) (xy 161.590512 105.476058) + (xy 161.51 105.377954) (xy 161.51 99.918469) (xy 161.514281 99.875) (xy 161.51 99.831531) (xy 161.51 99.831523) + (xy 161.497195 99.70151) (xy 161.446589 99.534687) (xy 161.364411 99.380941) (xy 161.253817 99.246183) (xy 161.220051 99.218472) + (xy 159.95125 97.949672) (xy 160.158676 97.863753) (xy 160.36914 97.723125) (xy 160.548125 97.54414) (xy 160.688753 97.333676) + (xy 160.785619 97.099821) (xy 160.835 96.851561) (xy 160.835 96.598439) (xy 160.785619 96.350179) (xy 160.688753 96.116324) + (xy 160.548125 95.90586) (xy 160.36914 95.726875) (xy 160.158676 95.586247) (xy 159.924821 95.489381) (xy 159.676561 95.44) + (xy 159.516579 95.44) (xy 156.631578 92.555) (xy 157.253422 92.555) (xy 158.29 93.591579) (xy 158.29 93.751561) + (xy 158.339381 93.999821) (xy 158.436247 94.233676) (xy 158.576875 94.44414) (xy 158.75586 94.623125) (xy 158.966324 94.763753) + (xy 159.200179 94.860619) (xy 159.448439 94.91) (xy 159.701561 94.91) (xy 159.949821 94.860619) (xy 160.183676 94.763753) + (xy 160.39414 94.623125) (xy 160.573125 94.44414) (xy 160.713753 94.233676) (xy 160.810619 93.999821) (xy 160.86 93.751561) + (xy 160.86 93.498439) (xy 160.810619 93.250179) (xy 160.713753 93.016324) (xy 160.573125 92.80586) (xy 160.39414 92.626875) + (xy 160.183676 92.486247) (xy 159.949821 92.389381) (xy 159.701561 92.34) (xy 159.541579 92.34) (xy 158.486578 91.285) + (xy 158.529063 91.285) (xy 158.551875 91.31914) (xy 158.73086 91.498125) (xy 158.941324 91.638753) (xy 159.175179 91.735619) + (xy 159.423439 91.785) (xy 159.676561 91.785) (xy 159.924821 91.735619) (xy 160.158676 91.638753) (xy 160.36914 91.498125) + (xy 160.548125 91.31914) (xy 160.688753 91.108676) (xy 160.785619 90.874821) (xy 160.835 90.626561) (xy 160.835 90.373439) + (xy 160.785619 90.125179) (xy 160.688753 89.891324) (xy 160.548125 89.68086) (xy 160.36914 89.501875) (xy 160.158676 89.361247) + (xy 159.924821 89.264381) (xy 159.676561 89.215) (xy 159.423439 89.215) (xy 159.175179 89.264381) (xy 158.941324 89.361247) + (xy 158.73086 89.501875) (xy 158.717735 89.515) (xy 158.686578 89.515) (xy 159.516579 88.685) (xy 159.676561 88.685) + (xy 159.924821 88.635619) (xy 160.158676 88.538753) (xy 160.36914 88.398125) (xy 160.548125 88.21914) (xy 160.591648 88.154004) + (xy 160.651875 88.24414) (xy 160.83086 88.423125) (xy 161.041324 88.563753) (xy 161.275179 88.660619) (xy 161.523439 88.71) + (xy 161.776561 88.71) (xy 162.024821 88.660619) (xy 162.258676 88.563753) (xy 162.46914 88.423125) (xy 162.648125 88.24414) + (xy 162.74 88.106639) + ) + ) + (filled_polygon + (pts + (xy 155.265008 109.660203) (xy 155.265009 113.336928) (xy 155.225 113.336928) (xy 155.100518 113.349188) (xy 155.01 113.376646) + (xy 155.01 109.893465) (xy 155.014281 109.849999) (xy 155.01 109.806533) (xy 155.01 109.806523) (xy 154.997195 109.67651) + (xy 154.946589 109.509687) (xy 154.864411 109.355941) (xy 154.827731 109.311247) (xy 154.781532 109.254953) (xy 154.78153 109.254951) + (xy 154.753817 109.221183) (xy 154.720051 109.193472) (xy 145.336578 99.81) (xy 145.414806 99.81) + ) + ) + (filled_polygon + (pts + (xy 148.050518 98.105812) (xy 148.175 98.118072) (xy 149.016609 98.118072) (xy 149.022805 98.18099) (xy 149.073412 98.347813) + (xy 149.15559 98.501559) (xy 149.238468 98.602546) (xy 149.238471 98.602549) (xy 149.266184 98.636317) (xy 149.299951 98.664029) + (xy 152.311928 101.676007) (xy 152.311928 101.7875) (xy 152.328752 101.958316) (xy 152.378577 102.122567) (xy 152.459488 102.273942) + (xy 152.568377 102.406623) (xy 152.621232 102.45) (xy 152.568377 102.493377) (xy 152.459488 102.626058) (xy 152.378577 102.777433) + (xy 152.328752 102.941684) (xy 152.311928 103.1125) (xy 152.311928 103.6125) (xy 152.328752 103.783316) (xy 152.378577 103.947567) + (xy 152.459488 104.098942) (xy 152.568377 104.231623) (xy 152.701058 104.340512) (xy 152.852433 104.421423) (xy 153.016684 104.471248) + (xy 153.1875 104.488072) (xy 153.6625 104.488072) (xy 153.833316 104.471248) (xy 153.997567 104.421423) (xy 154.148942 104.340512) + (xy 154.262277 104.2475) (xy 154.910922 104.2475) (xy 157.115 106.451579) (xy 157.115001 113.369063) (xy 157.049482 113.349188) + (xy 157.035008 113.347762) (xy 157.035008 109.337093) (xy 157.039289 109.293624) (xy 157.035008 109.250155) (xy 157.035008 109.250147) + (xy 157.022203 109.120134) (xy 157.00709 109.070313) (xy 156.971597 108.95331) (xy 156.889419 108.799565) (xy 156.80654 108.698577) + (xy 156.806538 108.698575) (xy 156.778825 108.664807) (xy 156.745059 108.637096) (xy 146.437918 98.329956) (xy 146.410201 98.296183) + (xy 146.275443 98.185589) (xy 146.149126 98.118072) (xy 146.535 98.118072) (xy 146.659482 98.105812) (xy 146.72 98.087454) + (xy 146.780518 98.105812) (xy 146.905 98.118072) (xy 147.805 98.118072) (xy 147.929482 98.105812) (xy 147.99 98.087454) + ) + ) + (filled_polygon + (pts + (xy 142.215001 111.731524) (xy 142.210719 111.775001) (xy 142.227806 111.948491) (xy 142.240398 111.99) (xy 141.96 111.99) + (xy 141.96 109.603584) (xy 142.087829 109.535258) (xy 142.207251 109.437251) (xy 142.215002 109.427807) + ) + ) + (filled_polygon + (pts + (xy 144.992749 109.437251) (xy 145.112171 109.535258) (xy 145.214585 109.59) (xy 144.935 109.59) (xy 144.935 109.366884) + ) + ) + (filled_polygon + (pts + (xy 152.219117 109.195696) (xy 152.125179 109.214381) (xy 151.891324 109.311247) (xy 151.68086 109.451875) (xy 151.6375 109.495235) + (xy 151.59414 109.451875) (xy 151.383676 109.311247) (xy 151.149821 109.214381) (xy 150.901561 109.165) (xy 150.648439 109.165) + (xy 150.400179 109.214381) (xy 150.166324 109.311247) (xy 149.95586 109.451875) (xy 149.817735 109.59) (xy 147.235415 109.59) + (xy 147.337829 109.535258) (xy 147.457251 109.437251) (xy 147.555258 109.317829) (xy 147.628084 109.181582) (xy 147.672929 109.033745) + (xy 147.688072 108.88) (xy 147.688072 108.58) (xy 147.672929 108.426255) (xy 147.628084 108.278418) (xy 147.555258 108.142171) + (xy 147.516546 108.095) (xy 147.555258 108.047829) (xy 147.628084 107.911582) (xy 147.672929 107.763745) (xy 147.688072 107.61) + (xy 147.688072 107.31) (xy 147.672929 107.156255) (xy 147.628084 107.008418) (xy 147.555258 106.872171) (xy 147.516546 106.825) + (xy 147.555258 106.777829) (xy 147.628084 106.641582) (xy 147.672929 106.493745) (xy 147.688072 106.34) (xy 147.688072 106.04) + (xy 147.672929 105.886255) (xy 147.628084 105.738418) (xy 147.555258 105.602171) (xy 147.516546 105.555) (xy 147.555258 105.507829) + (xy 147.628084 105.371582) (xy 147.672929 105.223745) (xy 147.688072 105.07) (xy 147.688072 104.77) (xy 147.676562 104.65314) + ) + ) + (filled_polygon + (pts + (xy 144.777071 105.886255) (xy 144.761928 106.04) (xy 144.761928 106.34) (xy 144.777071 106.493745) (xy 144.821916 106.641582) + (xy 144.894742 106.777829) (xy 144.933454 106.825) (xy 144.894742 106.872171) (xy 144.821916 107.008418) (xy 144.802187 107.073459) + (xy 144.789411 107.049557) (xy 144.71361 106.957194) (xy 144.706532 106.948569) (xy 144.70653 106.948567) (xy 144.678817 106.914799) + (xy 144.645049 106.887086) (xy 143.562962 105.805) (xy 144.801719 105.805) + ) + ) + (filled_polygon + (pts + (xy 139.517442 104.71402) (xy 139.511928 104.77) (xy 139.511928 105.07) (xy 139.527071 105.223745) (xy 139.551719 105.305) + (xy 139.481579 105.305) (xy 137.694032 103.517454) (xy 137.687915 103.51) (xy 138.313422 103.51) + ) + ) + (filled_polygon + (pts + (xy 134.353752 103.641684) (xy 134.336928 103.8125) (xy 134.336928 104.4125) (xy 134.353752 104.583316) (xy 134.403577 104.747567) + (xy 134.484488 104.898942) (xy 134.546907 104.975) (xy 134.484488 105.051058) (xy 134.463673 105.09) (xy 133.185 105.09) + (xy 133.185 103.51) (xy 134.393698 103.51) + ) + ) + (filled_polygon + (pts + (xy 152.342546 80.875) (xy 152.324188 80.935518) (xy 152.311928 81.06) (xy 152.311928 81.96) (xy 152.324188 82.084482) + (xy 152.342546 82.145) (xy 152.324188 82.205518) (xy 152.311928 82.33) (xy 152.311928 83.23) (xy 152.324188 83.354482) + (xy 152.342546 83.415) (xy 152.324188 83.475518) (xy 152.311928 83.6) (xy 152.311928 84.5) (xy 152.324188 84.624482) + (xy 152.342546 84.685) (xy 152.324188 84.745518) (xy 152.311928 84.87) (xy 152.311928 85.77) (xy 152.324188 85.894482) + (xy 152.342546 85.955) (xy 152.324188 86.015518) (xy 152.311928 86.14) (xy 152.311928 87.04) (xy 152.324188 87.164482) + (xy 152.342546 87.225) (xy 152.324188 87.285518) (xy 152.311928 87.41) (xy 152.311928 88.31) (xy 152.324188 88.434482) + (xy 152.342546 88.495) (xy 152.324188 88.555518) (xy 152.311928 88.68) (xy 152.311928 89.58) (xy 152.324188 89.704482) + (xy 152.342546 89.765) (xy 152.324188 89.825518) (xy 152.311928 89.95) (xy 152.311928 90.85) (xy 152.324188 90.974482) + (xy 152.342546 91.035) (xy 152.324188 91.095518) (xy 152.311928 91.22) (xy 152.311928 92.12) (xy 152.324188 92.244482) + (xy 152.342546 92.305) (xy 152.324188 92.365518) (xy 152.311928 92.49) (xy 152.311928 93.39) (xy 152.324188 93.514482) + (xy 152.342546 93.575) (xy 152.324188 93.635518) (xy 152.311928 93.76) (xy 152.311928 94.66) (xy 152.324188 94.784482) + (xy 152.342546 94.845) (xy 152.324188 94.905518) (xy 152.311928 95.03) (xy 152.311928 95.93) (xy 152.324188 96.054482) + (xy 152.360498 96.17418) (xy 152.419463 96.284494) (xy 152.498815 96.381185) (xy 152.595506 96.460537) (xy 152.70582 96.519502) + (xy 152.825518 96.555812) (xy 152.95 96.568072) (xy 153.062632 96.568072) (xy 153.060719 96.5875) (xy 153.077805 96.76099) + (xy 153.128412 96.927813) (xy 153.21059 97.081559) (xy 153.293468 97.182546) (xy 153.293471 97.182549) (xy 153.321184 97.216317) + (xy 153.354952 97.24403) (xy 157.836928 101.726007) (xy 157.836928 101.8375) (xy 157.853752 102.008316) (xy 157.903577 102.172567) + (xy 157.984488 102.323942) (xy 158.093377 102.456623) (xy 158.146232 102.5) (xy 158.093377 102.543377) (xy 157.984488 102.676058) + (xy 157.903577 102.827433) (xy 157.853752 102.991684) (xy 157.836928 103.1625) (xy 157.836928 103.6625) (xy 157.853752 103.833316) + (xy 157.903577 103.997567) (xy 157.984488 104.148942) (xy 158.065 104.247046) (xy 158.065 104.898421) (xy 155.934034 102.767456) + (xy 155.906317 102.733683) (xy 155.771559 102.623089) (xy 155.617813 102.540911) (xy 155.45099 102.490305) (xy 155.320977 102.4775) + (xy 155.320969 102.4775) (xy 155.2775 102.473219) (xy 155.234031 102.4775) (xy 154.262277 102.4775) (xy 154.228768 102.45) + (xy 154.281623 102.406623) (xy 154.390512 102.273942) (xy 154.471423 102.122567) (xy 154.521248 101.958316) (xy 154.538072 101.7875) + (xy 154.538072 101.2875) (xy 154.521248 101.116684) (xy 154.471423 100.952433) (xy 154.390512 100.801058) (xy 154.281623 100.668377) + (xy 154.148942 100.559488) (xy 153.997567 100.478577) (xy 153.833316 100.428752) (xy 153.6625 100.411928) (xy 153.551007 100.411928) + (xy 151.25715 98.118072) (xy 151.615 98.118072) (xy 151.739482 98.105812) (xy 151.85918 98.069502) (xy 151.969494 98.010537) + (xy 152.066185 97.931185) (xy 152.145537 97.834494) (xy 152.204502 97.72418) (xy 152.240812 97.604482) (xy 152.253072 97.48) + (xy 152.253072 95.48) (xy 152.240812 95.355518) (xy 152.204502 95.23582) (xy 152.145537 95.125506) (xy 152.066185 95.028815) + (xy 152.05 95.015532) (xy 152.05 91.228469) (xy 152.054281 91.185) (xy 152.05 91.141531) (xy 152.05 91.141523) + (xy 152.037195 91.01151) (xy 151.986589 90.844687) (xy 151.904411 90.690941) (xy 151.851575 90.626561) (xy 151.821532 90.589953) + (xy 151.82153 90.589951) (xy 151.793817 90.556183) (xy 151.760049 90.52847) (xy 149.588072 88.356493) (xy 149.588072 83.97) + (xy 149.575812 83.845518) (xy 149.539502 83.72582) (xy 149.510331 83.671246) (xy 152.334174 80.847402) + ) + ) + (filled_polygon + (pts + (xy 159.74 100.241579) (xy 159.74 100.663701) (xy 159.673942 100.609488) (xy 159.522567 100.528577) (xy 159.358316 100.478752) + (xy 159.1875 100.461928) (xy 159.076007 100.461928) (xy 155.147684 96.533606) (xy 155.19418 96.519502) (xy 155.304494 96.460537) + (xy 155.401185 96.381185) (xy 155.480537 96.284494) (xy 155.539502 96.17418) (xy 155.57048 96.072058) ) ) (filled_polygon (pts - (xy 161.540001 121.08342) (xy 161.408422 121.215) (xy 161.21009 121.215) (xy 161.328411 121.16599) (xy 161.540001 121.02461) + (xy 143.311928 85.083507) (xy 143.311928 88.97) (xy 143.324188 89.094482) (xy 143.360498 89.21418) (xy 143.419463 89.324494) + (xy 143.498815 89.421185) (xy 143.595506 89.500537) (xy 143.70582 89.559502) (xy 143.825518 89.595812) (xy 143.95 89.608072) + (xy 148.336493 89.608072) (xy 150.280001 91.55158) (xy 150.28 94.841928) (xy 149.445 94.841928) (xy 149.320518 94.854188) + (xy 149.26 94.872546) (xy 149.199482 94.854188) (xy 149.075 94.841928) (xy 148.175 94.841928) (xy 148.050518 94.854188) + (xy 147.99 94.872546) (xy 147.929482 94.854188) (xy 147.805 94.841928) (xy 146.905 94.841928) (xy 146.780518 94.854188) + (xy 146.72 94.872546) (xy 146.659482 94.854188) (xy 146.535 94.841928) (xy 145.635 94.841928) (xy 145.510518 94.854188) + (xy 145.45 94.872546) (xy 145.389482 94.854188) (xy 145.265 94.841928) (xy 144.365 94.841928) (xy 144.240518 94.854188) + (xy 144.18 94.872546) (xy 144.119482 94.854188) (xy 143.995 94.841928) (xy 143.095 94.841928) (xy 142.970518 94.854188) + (xy 142.91 94.872546) (xy 142.849482 94.854188) (xy 142.725 94.841928) (xy 141.89 94.841928) (xy 141.89 88.677265) + (xy 142.048125 88.51914) (xy 142.188753 88.308676) (xy 142.285619 88.074821) (xy 142.335 87.826561) (xy 142.335 87.573439) + (xy 142.285619 87.325179) (xy 142.188753 87.091324) (xy 142.048125 86.88086) (xy 141.86914 86.701875) (xy 141.658676 86.561247) + (xy 141.424821 86.464381) (xy 141.176561 86.415) (xy 140.923439 86.415) (xy 140.675179 86.464381) (xy 140.441324 86.561247) + (xy 140.23086 86.701875) (xy 140.051875 86.88086) (xy 139.911247 87.091324) (xy 139.814381 87.325179) (xy 139.765 87.573439) + (xy 139.765 87.826561) (xy 139.814381 88.074821) (xy 139.911247 88.308676) (xy 140.051875 88.51914) (xy 140.120001 88.587266) + (xy 140.12 94.841928) (xy 139.285 94.841928) (xy 139.160518 94.854188) (xy 139.04082 94.890498) (xy 138.930506 94.949463) + (xy 138.833815 95.028815) (xy 138.754463 95.125506) (xy 138.695498 95.23582) (xy 138.659188 95.355518) (xy 138.646928 95.48) + (xy 138.646928 97.48) (xy 138.659188 97.604482) (xy 138.695498 97.72418) (xy 138.754463 97.834494) (xy 138.833815 97.931185) + (xy 138.930506 98.010537) (xy 138.985627 98.04) (xy 132.835 98.04) (xy 132.835 85.316578) (xy 133.216579 84.935) + (xy 133.399109 84.935) (xy 133.261247 85.141324) (xy 133.164381 85.375179) (xy 133.115 85.623439) (xy 133.115 85.876561) + (xy 133.164381 86.124821) (xy 133.261247 86.358676) (xy 133.401875 86.56914) (xy 133.515001 86.682266) (xy 133.515 94.386531) + (xy 133.510719 94.43) (xy 133.515 94.473469) (xy 133.515 94.473476) (xy 133.519019 94.514281) (xy 133.527805 94.60349) + (xy 133.543157 94.654096) (xy 133.578411 94.770312) (xy 133.660589 94.924058) (xy 133.771183 95.058817) (xy 133.804956 95.086534) + (xy 134.79347 96.075049) (xy 134.821183 96.108817) (xy 134.854951 96.13653) (xy 134.854953 96.136532) (xy 134.858799 96.139688) + (xy 134.955941 96.219411) (xy 135.109687 96.301589) (xy 135.27651 96.352195) (xy 135.406523 96.365) (xy 135.406533 96.365) + (xy 135.449999 96.369281) (xy 135.486126 96.365723) (xy 135.498815 96.381185) (xy 135.595506 96.460537) (xy 135.70582 96.519502) + (xy 135.825518 96.555812) (xy 135.95 96.568072) (xy 137.95 96.568072) (xy 138.074482 96.555812) (xy 138.19418 96.519502) + (xy 138.304494 96.460537) (xy 138.401185 96.381185) (xy 138.480537 96.284494) (xy 138.539502 96.17418) (xy 138.575812 96.054482) + (xy 138.588072 95.93) (xy 138.588072 95.03) (xy 138.575812 94.905518) (xy 138.557454 94.845) (xy 138.575812 94.784482) + (xy 138.588072 94.66) (xy 138.588072 93.76) (xy 138.575812 93.635518) (xy 138.557454 93.575) (xy 138.575812 93.514482) + (xy 138.588072 93.39) (xy 138.588072 92.49) (xy 138.575812 92.365518) (xy 138.557454 92.305) (xy 138.575812 92.244482) + (xy 138.588072 92.12) (xy 138.588072 91.22) (xy 138.575812 91.095518) (xy 138.557454 91.035) (xy 138.575812 90.974482) + (xy 138.588072 90.85) (xy 138.588072 89.95) (xy 138.575812 89.825518) (xy 138.557454 89.765) (xy 138.575812 89.704482) + (xy 138.588072 89.58) (xy 138.588072 88.68) (xy 138.575812 88.555518) (xy 138.557454 88.495) (xy 138.575812 88.434482) + (xy 138.588072 88.31) (xy 138.588072 87.41) (xy 138.575812 87.285518) (xy 138.557454 87.225) (xy 138.575812 87.164482) + (xy 138.588072 87.04) (xy 138.588072 86.14) (xy 138.575812 86.015518) (xy 138.557454 85.955) (xy 138.575812 85.894482) + (xy 138.588072 85.77) (xy 138.588072 84.87) (xy 138.575812 84.745518) (xy 138.557454 84.685) (xy 138.575812 84.624482) + (xy 138.588072 84.5) (xy 138.588072 83.6) (xy 138.575812 83.475518) (xy 138.557454 83.415) (xy 138.575812 83.354482) + (xy 138.588072 83.23) (xy 138.588072 82.33) (xy 138.575812 82.205518) (xy 138.557454 82.145) (xy 138.575812 82.084482) + (xy 138.588072 81.96) (xy 138.588072 81.06) (xy 138.575812 80.935518) (xy 138.557454 80.875) (xy 138.575812 80.814482) + (xy 138.588072 80.69) (xy 138.588072 80.35965) ) ) (filled_polygon (pts - (xy 138.45847 106.785049) (xy 138.486183 106.818817) (xy 138.519951 106.84653) (xy 138.519953 106.846532) (xy 138.620941 106.929411) - (xy 138.774686 107.011589) (xy 138.848858 107.034089) (xy 138.94151 107.062195) (xy 139.071523 107.075) (xy 139.071531 107.075) - (xy 139.115 107.079281) (xy 139.158469 107.075) (xy 139.198421 107.075) (xy 135.286494 110.986928) (xy 134.85 110.986928) - (xy 134.725518 110.999188) (xy 134.60582 111.035498) (xy 134.495506 111.094463) (xy 134.398815 111.173815) (xy 134.319463 111.270506) - (xy 134.260498 111.38082) (xy 134.224188 111.500518) (xy 134.211928 111.625) (xy 134.211928 112.525) (xy 134.224188 112.649482) - (xy 134.260498 112.76918) (xy 134.319463 112.879494) (xy 134.398815 112.976185) (xy 134.495506 113.055537) (xy 134.60582 113.114502) - (xy 134.725518 113.150812) (xy 134.85 113.163072) (xy 136.05 113.163072) (xy 136.174482 113.150812) (xy 136.29418 113.114502) - (xy 136.404494 113.055537) (xy 136.501185 112.976185) (xy 136.580537 112.879494) (xy 136.639502 112.76918) (xy 136.675812 112.649482) - (xy 136.688072 112.525) (xy 136.688072 112.088506) (xy 139.579956 109.196623) (xy 139.644742 109.317829) (xy 139.742749 109.437251) - (xy 139.862171 109.535258) (xy 139.99 109.603585) (xy 139.990001 111.99) (xy 137.94838 111.99) (xy 137.9 111.985235) - (xy 137.85162 111.99) (xy 137.706906 112.004253) (xy 137.521233 112.060576) (xy 137.350116 112.15204) (xy 137.20013 112.27513) - (xy 137.169289 112.31271) (xy 134.203609 115.278391) (xy 134.097203 115.335266) (xy 133.939604 115.464604) (xy 133.810266 115.622203) - (xy 133.714159 115.802008) (xy 133.67449 115.932778) (xy 133.659488 115.951058) (xy 133.578577 116.102433) (xy 133.528752 116.266684) - (xy 133.511928 116.4375) (xy 133.511928 116.9125) (xy 133.528752 117.083316) (xy 133.578577 117.247567) (xy 133.659488 117.398942) - (xy 133.69 117.436121) (xy 133.690001 120.559428) (xy 133.574999 120.559428) (xy 133.401745 120.576492) (xy 133.235149 120.627028) - (xy 133.185 120.653833) (xy 133.185 106.86) (xy 134.565001 106.86) (xy 134.565 107.757317) (xy 134.495506 107.794463) - (xy 134.398815 107.873815) (xy 134.319463 107.970506) (xy 134.260498 108.08082) (xy 134.224188 108.200518) (xy 134.211928 108.325) - (xy 134.211928 109.225) (xy 134.224188 109.349482) (xy 134.260498 109.46918) (xy 134.319463 109.579494) (xy 134.398815 109.676185) - (xy 134.495506 109.755537) (xy 134.60582 109.814502) (xy 134.725518 109.850812) (xy 134.85 109.863072) (xy 136.05 109.863072) - (xy 136.174482 109.850812) (xy 136.29418 109.814502) (xy 136.404494 109.755537) (xy 136.501185 109.676185) (xy 136.580537 109.579494) - (xy 136.639502 109.46918) (xy 136.675812 109.349482) (xy 136.688072 109.225) (xy 136.688072 108.325) (xy 136.675812 108.200518) - (xy 136.639502 108.08082) (xy 136.580537 107.970506) (xy 136.501185 107.873815) (xy 136.404494 107.794463) (xy 136.335 107.757317) - (xy 136.335 106.722046) (xy 136.415512 106.623942) (xy 136.496423 106.472567) (xy 136.546248 106.308316) (xy 136.563072 106.1375) - (xy 136.563072 105.5375) (xy 136.546248 105.366684) (xy 136.496423 105.202433) (xy 136.415512 105.051058) (xy 136.371558 104.9975) - (xy 136.670922 104.9975) + (xy 135.311928 87.04) (xy 135.324188 87.164482) (xy 135.342546 87.225) (xy 135.324188 87.285518) (xy 135.311928 87.41) + (xy 135.311928 88.31) (xy 135.324188 88.434482) (xy 135.342546 88.495) (xy 135.324188 88.555518) (xy 135.311928 88.68) + (xy 135.311928 89.58) (xy 135.324188 89.704482) (xy 135.342546 89.765) (xy 135.324188 89.825518) (xy 135.311928 89.95) + (xy 135.311928 90.85) (xy 135.324188 90.974482) (xy 135.342546 91.035) (xy 135.324188 91.095518) (xy 135.311928 91.22) + (xy 135.311928 92.12) (xy 135.324188 92.244482) (xy 135.342546 92.305) (xy 135.324188 92.365518) (xy 135.311928 92.49) + (xy 135.311928 93.39) (xy 135.324188 93.514482) (xy 135.342546 93.575) (xy 135.324188 93.635518) (xy 135.311928 93.76) + (xy 135.311928 94.09035) (xy 135.285 94.063422) (xy 135.285 86.682265) (xy 135.311928 86.655337) ) ) (filled_polygon (pts - (xy 140.8 113.964765) (xy 140.84838 113.96) (xy 148.047204 113.96) (xy 148.025179 113.964381) (xy 147.791324 114.061247) - (xy 147.58086 114.201875) (xy 147.401875 114.38086) (xy 147.261247 114.591324) (xy 147.164381 114.825179) (xy 147.115 115.073439) - (xy 147.115 115.326561) (xy 147.164381 115.574821) (xy 147.261247 115.808676) (xy 147.401875 116.01914) (xy 147.58086 116.198125) - (xy 147.791324 116.338753) (xy 148.025179 116.435619) (xy 148.273439 116.485) (xy 148.526561 116.485) (xy 148.774821 116.435619) - (xy 149.008676 116.338753) (xy 149.21914 116.198125) (xy 149.282265 116.135) (xy 149.575431 116.135) (xy 149.586595 116.155887) - (xy 149.697038 116.290462) (xy 149.831613 116.400905) (xy 149.985149 116.482972) (xy 150.151745 116.533508) (xy 150.324999 116.550572) - (xy 152.475001 116.550572) (xy 152.648255 116.533508) (xy 152.814851 116.482972) (xy 152.968387 116.400905) (xy 153.102962 116.290462) - (xy 153.213405 116.155887) (xy 153.240001 116.10613) (xy 153.240001 117.356513) (xy 153.235718 117.4) (xy 153.252805 117.57349) - (xy 153.303411 117.740313) (xy 153.385589 117.894059) (xy 153.496183 118.028817) (xy 153.630941 118.139411) (xy 153.784687 118.221589) - (xy 153.95151 118.272195) (xy 154.081523 118.285) (xy 154.081524 118.285) (xy 154.125 118.289282) (xy 154.168477 118.285) - (xy 154.90373 118.285) (xy 154.921525 118.311632) (xy 155.128368 118.518475) (xy 155.30276 118.635) (xy 155.128368 118.751525) - (xy 154.939893 118.94) (xy 153.278021 118.94) (xy 153.213405 118.819113) (xy 153.102962 118.684538) (xy 152.968387 118.574095) - (xy 152.814851 118.492028) (xy 152.648255 118.441492) (xy 152.475001 118.424428) (xy 150.324999 118.424428) (xy 150.151745 118.441492) - (xy 149.985149 118.492028) (xy 149.831613 118.574095) (xy 149.697038 118.684538) (xy 149.586595 118.819113) (xy 149.575431 118.84) - (xy 148.696072 118.84) (xy 148.696072 118.8065) (xy 148.666999 118.511314) (xy 148.580896 118.227472) (xy 148.441073 117.965882) - (xy 148.252903 117.736597) (xy 148.023618 117.548427) (xy 147.762028 117.408604) (xy 147.478186 117.322501) (xy 147.183 117.293428) - (xy 145.433 117.293428) (xy 145.137814 117.322501) (xy 144.853972 117.408604) (xy 144.592382 117.548427) (xy 144.363097 117.736597) + (xy 157.630966 82.657544) (xy 157.658683 82.691317) (xy 157.793441 82.801911) (xy 157.947187 82.884089) (xy 158.063403 82.919343) + (xy 158.114009 82.934695) (xy 158.128806 82.936152) (xy 158.244023 82.9475) (xy 158.244031 82.9475) (xy 158.2875 82.951781) + (xy 158.330969 82.9475) (xy 158.64 82.9475) (xy 158.640001 83.742734) (xy 158.551875 83.83086) (xy 158.411247 84.041324) + (xy 158.314381 84.275179) (xy 158.265 84.523439) (xy 158.265 84.776561) (xy 158.314381 85.024821) (xy 158.411247 85.258676) + (xy 158.551875 85.46914) (xy 158.73086 85.648125) (xy 158.941324 85.788753) (xy 159.175179 85.885619) (xy 159.423439 85.935) + (xy 159.676561 85.935) (xy 159.924821 85.885619) (xy 160.158676 85.788753) (xy 160.36914 85.648125) (xy 160.548125 85.46914) + (xy 160.688753 85.258676) (xy 160.765 85.074599) (xy 160.765 86.492735) (xy 160.651875 86.60586) (xy 160.608352 86.670996) + (xy 160.548125 86.58086) (xy 160.36914 86.401875) (xy 160.158676 86.261247) (xy 159.924821 86.164381) (xy 159.676561 86.115) + (xy 159.423439 86.115) (xy 159.175179 86.164381) (xy 158.941324 86.261247) (xy 158.73086 86.401875) (xy 158.551875 86.58086) + (xy 158.411247 86.791324) (xy 158.314381 87.025179) (xy 158.265 87.273439) (xy 158.265 87.433421) (xy 157.453422 88.245) + (xy 155.588072 88.245) (xy 155.588072 87.41) (xy 155.575812 87.285518) (xy 155.557454 87.225) (xy 155.575812 87.164482) + (xy 155.588072 87.04) (xy 155.588072 86.14) (xy 155.575812 86.015518) (xy 155.557454 85.955) (xy 155.575812 85.894482) + (xy 155.588072 85.77) (xy 155.588072 84.87) (xy 155.575812 84.745518) (xy 155.557454 84.685) (xy 155.575812 84.624482) + (xy 155.588072 84.5) (xy 155.588072 83.6) (xy 155.575812 83.475518) (xy 155.557454 83.415) (xy 155.575812 83.354482) + (xy 155.588072 83.23) (xy 155.588072 82.395) (xy 157.368422 82.395) + ) + ) + (filled_polygon + (pts + (xy 160.765 84.225402) (xy 160.688753 84.041324) (xy 160.548125 83.83086) (xy 160.41 83.692735) (xy 160.41 82.897046) + (xy 160.490512 82.798942) (xy 160.571423 82.647567) (xy 160.621248 82.483316) (xy 160.638072 82.3125) (xy 160.638072 81.8125) + (xy 160.621248 81.641684) (xy 160.571423 81.477433) (xy 160.490512 81.326058) (xy 160.381623 81.193377) (xy 160.328768 81.15) + (xy 160.362277 81.1225) (xy 160.765001 81.1225) + ) + ) + (filled_polygon + (pts + (xy 158.721232 81.15) (xy 158.687723 81.1775) (xy 158.654078 81.1775) (xy 158.599078 81.1225) (xy 158.687723 81.1225) + ) + ) + ) + (zone (net 0) (net_name "") (layer F.Cu) (tstamp 62629F25) (hatch edge 0.508) + (connect_pads (clearance 0.508)) + (min_thickness 0.254) + (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 163.4 126.1799) (xy 120.425 126.1799) (xy 120.425 66.1799) (xy 163.4 66.1799) + ) + ) + (filled_polygon + (pts + (xy 159.501525 124.596632) (xy 159.708368 124.803475) (xy 159.951589 124.96599) (xy 160.221842 125.077932) (xy 160.50874 125.135) + (xy 160.80126 125.135) (xy 161.088158 125.077932) (xy 161.358411 124.96599) (xy 161.601632 124.803475) (xy 161.770107 124.635) + (xy 162.37662 124.635) (xy 162.425 124.639765) (xy 162.47338 124.635) (xy 162.618094 124.620747) (xy 162.740001 124.583767) + (xy 162.740001 125.49) (xy 158.865712 125.49) (xy 158.93796 125.401965) (xy 159.029424 125.230848) (xy 159.085747 125.045175) + (xy 159.1 124.900461) (xy 159.104765 124.852082) (xy 159.1 124.803702) (xy 159.1 124.765107) (xy 159.268475 124.596632) + (xy 159.385 124.42224) + ) + ) + (filled_polygon + (pts + (xy 134.226999 125.49) (xy 133.182619 125.49) (xy 133.182619 124.44562) + ) + ) + (filled_polygon + (pts + (xy 147.401875 116.01914) (xy 147.58086 116.198125) (xy 147.791324 116.338753) (xy 148.025179 116.435619) (xy 148.273439 116.485) + (xy 148.292 116.485) (xy 150.440001 118.633001) (xy 150.44 121.50162) (xy 150.435235 121.55) (xy 150.44 121.598379) + (xy 150.454253 121.743093) (xy 150.510576 121.928766) (xy 150.60204 122.099884) (xy 150.72513 122.24987) (xy 150.762717 122.280717) + (xy 150.994286 122.512285) (xy 150.99429 122.51229) (xy 152.697001 124.215001) (xy 143.752021 124.215001) (xy 143.76214 124.202671) + (xy 143.890411 123.962692) (xy 143.969401 123.702299) (xy 143.996072 123.4315) (xy 143.996072 123.391052) (xy 144.00787 123.38137) + (xy 144.038716 123.343784) (xy 145.323694 122.058806) (xy 145.433 122.069572) (xy 147.183 122.069572) (xy 147.478186 122.040499) + (xy 147.762028 121.954396) (xy 148.023618 121.814573) (xy 148.252903 121.626403) (xy 148.441073 121.397118) (xy 148.580896 121.135528) + (xy 148.666999 120.851686) (xy 148.696072 120.5565) (xy 148.696072 118.8065) (xy 148.666999 118.511314) (xy 148.580896 118.227472) + (xy 148.441073 117.965882) (xy 148.252903 117.736597) (xy 148.023618 117.548427) (xy 147.762028 117.408604) (xy 147.478186 117.322501) + (xy 147.293 117.304262) (xy 147.293 115.856198) + ) + ) + (filled_polygon + (pts + (xy 140.825271 66.988962) (xy 140.513962 67.300271) (xy 140.269369 67.666331) (xy 140.10089 68.073075) (xy 140.015 68.504872) + (xy 140.015 68.945128) (xy 140.10089 69.376925) (xy 140.269369 69.783669) (xy 140.513962 70.149729) (xy 140.825271 70.461038) + (xy 141.191331 70.705631) (xy 141.598075 70.87411) (xy 142.029872 70.96) (xy 142.470128 70.96) (xy 142.901925 70.87411) + (xy 143.308669 70.705631) (xy 143.674729 70.461038) (xy 143.986038 70.149729) (xy 144.230631 69.783669) (xy 144.39911 69.376925) + (xy 144.485 68.945128) (xy 144.485 68.504872) (xy 144.39911 68.073075) (xy 144.230631 67.666331) (xy 143.986038 67.300271) + (xy 143.674729 66.988962) (xy 143.481723 66.86) (xy 151.834248 66.86) (xy 151.690116 66.93704) (xy 151.54013 67.06013) + (xy 151.509289 67.09771) (xy 150.262711 68.344289) (xy 150.225131 68.37513) (xy 150.102041 68.525116) (xy 150.056424 68.610459) + (xy 150.010576 68.696234) (xy 149.954253 68.881907) (xy 149.935235 69.075) (xy 149.940001 69.12339) (xy 149.94 74.69) + (xy 142.29838 74.69) (xy 142.25 74.685235) (xy 142.20162 74.69) (xy 138.22338 74.69) (xy 138.175 74.685235) + (xy 138.12662 74.69) (xy 137.782265 74.69) (xy 137.76914 74.676875) (xy 137.558676 74.536247) (xy 137.324821 74.439381) + (xy 137.076561 74.39) (xy 136.823439 74.39) (xy 136.575179 74.439381) (xy 136.341324 74.536247) (xy 136.13086 74.676875) + (xy 135.951875 74.85586) (xy 135.811247 75.066324) (xy 135.714381 75.300179) (xy 135.665 75.548439) (xy 135.665 75.801561) + (xy 135.714381 76.049821) (xy 135.811247 76.283676) (xy 135.951875 76.49414) (xy 136.13086 76.673125) (xy 136.341324 76.813753) + (xy 136.575179 76.910619) (xy 136.823439 76.96) (xy 137.076561 76.96) (xy 137.324821 76.910619) (xy 137.558676 76.813753) + (xy 137.76914 76.673125) (xy 137.782265 76.66) (xy 137.841187 76.66) (xy 137.896234 76.689423) (xy 138.081906 76.745747) + (xy 138.274999 76.764765) (xy 138.468093 76.745747) (xy 138.653766 76.689423) (xy 138.708813 76.66) (xy 141.214299 76.66) + (xy 141.200498 76.68582) (xy 141.164188 76.805518) (xy 141.151928 76.93) (xy 141.151928 79.09) (xy 141.164188 79.214482) + (xy 141.200498 79.33418) (xy 141.259463 79.444494) (xy 141.338815 79.541185) (xy 141.435506 79.620537) (xy 141.54582 79.679502) + (xy 141.665518 79.715812) (xy 141.79 79.728072) (xy 142.675072 79.728072) (xy 143.771789 80.82479) (xy 143.80263 80.86237) + (xy 143.84834 80.899883) (xy 143.952616 80.98546) (xy 144.123733 81.076924) (xy 144.309406 81.133247) (xy 144.5025 81.152265) + (xy 144.55088 81.1475) (xy 144.551529 81.1475) (xy 144.50263 81.18763) (xy 144.471784 81.225216) (xy 142.675072 83.021928) + (xy 141.79 83.021928) (xy 141.665518 83.034188) (xy 141.54582 83.070498) (xy 141.435506 83.129463) (xy 141.338815 83.208815) + (xy 141.259463 83.305506) (xy 141.200498 83.41582) (xy 141.164188 83.535518) (xy 141.151928 83.66) (xy 141.151928 83.755) + (xy 135.45838 83.755) (xy 135.41 83.750235) (xy 135.36162 83.755) (xy 135.216906 83.769253) (xy 135.031233 83.825576) + (xy 134.860116 83.91704) (xy 134.71013 84.04013) (xy 134.679289 84.07771) (xy 134.291999 84.465) (xy 134.273439 84.465) + (xy 134.084999 84.502482) (xy 134.084999 69.69838) (xy 134.089764 69.65) (xy 134.070746 69.456906) (xy 134.014423 69.271233) + (xy 133.922959 69.100116) (xy 133.799869 68.95013) (xy 133.649883 68.82704) (xy 133.478766 68.735576) (xy 133.293093 68.679253) + (xy 133.148379 68.665) (xy 133.099999 68.660235) (xy 133.051619 68.665) (xy 129.683802 68.665) (xy 129.544608 68.495392) + (xy 129.29717 68.292325) (xy 129.014869 68.141432) (xy 128.708556 68.048513) (xy 128.469824 68.025) (xy 126.330176 68.025) + (xy 126.091444 68.048513) (xy 125.785131 68.141432) (xy 125.50283 68.292325) (xy 125.255392 68.495392) (xy 125.052325 68.74283) + (xy 124.901432 69.025131) (xy 124.808513 69.331444) (xy 124.777138 69.65) (xy 124.808513 69.968556) (xy 124.901432 70.274869) + (xy 125.052325 70.55717) (xy 125.255392 70.804608) (xy 125.50283 71.007675) (xy 125.785131 71.158568) (xy 126.091444 71.251487) + (xy 126.330176 71.275) (xy 128.469824 71.275) (xy 128.708556 71.251487) (xy 129.014869 71.158568) (xy 129.29717 71.007675) + (xy 129.544608 70.804608) (xy 129.683802 70.635) (xy 132.115 70.635) (xy 132.115 73.845031) (xy 132.003767 73.785576) + (xy 131.818094 73.729253) (xy 131.67338 73.715) (xy 131.625 73.710235) (xy 131.57662 73.715) (xy 130.018072 73.715) + (xy 130.018072 73.66) (xy 130.005812 73.535518) (xy 129.969502 73.41582) (xy 129.910537 73.305506) (xy 129.831185 73.208815) + (xy 129.734494 73.129463) (xy 129.62418 73.070498) (xy 129.504482 73.034188) (xy 129.38 73.021928) (xy 125.42 73.021928) + (xy 125.295518 73.034188) (xy 125.17582 73.070498) (xy 125.065506 73.129463) (xy 124.968815 73.208815) (xy 124.889463 73.305506) + (xy 124.830498 73.41582) (xy 124.794188 73.535518) (xy 124.781928 73.66) (xy 124.781928 75.64) (xy 124.794188 75.764482) + (xy 124.830498 75.88418) (xy 124.889463 75.994494) (xy 124.968815 76.091185) (xy 125.065506 76.170537) (xy 125.17582 76.229502) + (xy 125.295518 76.265812) (xy 125.42 76.278072) (xy 129.38 76.278072) (xy 129.504482 76.265812) (xy 129.62418 76.229502) + (xy 129.734494 76.170537) (xy 129.831185 76.091185) (xy 129.910537 75.994494) (xy 129.969502 75.88418) (xy 130.005812 75.764482) + (xy 130.01364 75.685) (xy 130.640001 75.685) (xy 130.640001 80.141233) (xy 130.518094 80.104253) (xy 130.37338 80.09) + (xy 130.325 80.085235) (xy 130.27662 80.09) (xy 129.745352 80.09) (xy 129.544608 79.845392) (xy 129.29717 79.642325) + (xy 129.014869 79.491432) (xy 128.708556 79.398513) (xy 128.469824 79.375) (xy 126.330176 79.375) (xy 126.091444 79.398513) + (xy 125.785131 79.491432) (xy 125.50283 79.642325) (xy 125.255392 79.845392) (xy 125.052325 80.09283) (xy 124.901432 80.375131) + (xy 124.808513 80.681444) (xy 124.777138 81) (xy 124.808513 81.318556) (xy 124.901432 81.624869) (xy 125.052325 81.90717) + (xy 125.255392 82.154608) (xy 125.50283 82.357675) (xy 125.785131 82.508568) (xy 126.091444 82.601487) (xy 126.330176 82.625) + (xy 128.469824 82.625) (xy 128.708556 82.601487) (xy 129.014869 82.508568) (xy 129.29717 82.357675) (xy 129.340001 82.322525) + (xy 129.340001 84.371928) (xy 125.42 84.371928) (xy 125.295518 84.384188) (xy 125.17582 84.420498) (xy 125.065506 84.479463) + (xy 124.968815 84.558815) (xy 124.889463 84.655506) (xy 124.830498 84.76582) (xy 124.794188 84.885518) (xy 124.781928 85.01) + (xy 124.781928 86.99) (xy 124.794188 87.114482) (xy 124.830498 87.23418) (xy 124.889463 87.344494) (xy 124.968815 87.441185) + (xy 125.065506 87.520537) (xy 125.17582 87.579502) (xy 125.295518 87.615812) (xy 125.42 87.628072) (xy 126.415 87.628072) + (xy 126.415 88.341622) (xy 126.410235 88.390002) (xy 126.415 88.438381) (xy 126.429253 88.583095) (xy 126.485576 88.768768) + (xy 126.57704 88.939886) (xy 126.70013 89.089872) (xy 126.737716 89.120718) (xy 128.346998 90.73) (xy 126.345676 90.73) + (xy 126.106944 90.753513) (xy 125.800631 90.846432) (xy 125.51833 90.997325) (xy 125.270892 91.200392) (xy 125.067825 91.44783) + (xy 124.916932 91.730131) (xy 124.824013 92.036444) (xy 124.792638 92.355) (xy 124.824013 92.673556) (xy 124.916932 92.979869) + (xy 125.067825 93.26217) (xy 125.270892 93.509608) (xy 125.51833 93.712675) (xy 125.800631 93.863568) (xy 126.106944 93.956487) + (xy 126.345676 93.98) (xy 128.485324 93.98) (xy 128.724056 93.956487) (xy 128.961467 93.884469) (xy 136.796928 101.71993) + (xy 136.796928 102.335) (xy 136.809188 102.459482) (xy 136.845498 102.57918) (xy 136.904463 102.689494) (xy 136.925395 102.715) + (xy 136.904463 102.740506) (xy 136.845498 102.85082) (xy 136.809188 102.970518) (xy 136.806284 103) (xy 134.453501 103) + (xy 129.998426 98.544926) (xy 130.021312 98.469482) (xy 130.033572 98.345) (xy 130.033572 96.365) (xy 130.021312 96.240518) + (xy 129.985002 96.12082) (xy 129.926037 96.010506) (xy 129.846685 95.913815) (xy 129.749994 95.834463) (xy 129.63968 95.775498) + (xy 129.519982 95.739188) (xy 129.3955 95.726928) (xy 125.4355 95.726928) (xy 125.311018 95.739188) (xy 125.19132 95.775498) + (xy 125.081006 95.834463) (xy 124.984315 95.913815) (xy 124.904963 96.010506) (xy 124.845998 96.12082) (xy 124.809688 96.240518) + (xy 124.797428 96.365) (xy 124.797428 98.345) (xy 124.809688 98.469482) (xy 124.845998 98.58918) (xy 124.904963 98.699494) + (xy 124.984315 98.796185) (xy 125.081006 98.875537) (xy 125.19132 98.934502) (xy 125.311018 98.970812) (xy 125.4355 98.983072) + (xy 127.650572 98.983072) (xy 133.314789 104.64729) (xy 133.34563 104.68487) (xy 133.495616 104.80796) (xy 133.666733 104.899424) + (xy 133.852406 104.955747) (xy 134.0455 104.974765) (xy 134.09388 104.97) (xy 136.806284 104.97) (xy 136.809188 104.999482) + (xy 136.845498 105.11918) (xy 136.904463 105.229494) (xy 136.925395 105.255) (xy 136.904463 105.280506) (xy 136.845498 105.39082) + (xy 136.809188 105.510518) (xy 136.806284 105.54) (xy 130.627001 105.54) (xy 129.741762 104.654762) (xy 129.763175 104.62867) + (xy 129.914068 104.346369) (xy 130.006987 104.040056) (xy 130.038362 103.7215) (xy 130.006987 103.402944) (xy 129.914068 103.096631) + (xy 129.763175 102.81433) (xy 129.560108 102.566892) (xy 129.31267 102.363825) (xy 129.030369 102.212932) (xy 128.724056 102.120013) + (xy 128.485324 102.0965) (xy 126.345676 102.0965) (xy 126.106944 102.120013) (xy 125.800631 102.212932) (xy 125.51833 102.363825) + (xy 125.270892 102.566892) (xy 125.067825 102.81433) (xy 124.916932 103.096631) (xy 124.824013 103.402944) (xy 124.792638 103.7215) + (xy 124.824013 104.040056) (xy 124.916932 104.346369) (xy 125.067825 104.62867) (xy 125.270892 104.876108) (xy 125.51833 105.079175) + (xy 125.800631 105.230068) (xy 126.106944 105.322987) (xy 126.345676 105.3465) (xy 127.6475 105.3465) (xy 129.394427 107.093428) + (xy 125.4355 107.093428) (xy 125.311018 107.105688) (xy 125.19132 107.141998) (xy 125.081006 107.200963) (xy 124.984315 107.280315) + (xy 124.904963 107.377006) (xy 124.845998 107.48732) (xy 124.809688 107.607018) (xy 124.797428 107.7315) (xy 124.797428 109.7115) + (xy 124.809688 109.835982) (xy 124.845998 109.95568) (xy 124.904963 110.065994) (xy 124.984315 110.162685) (xy 125.081006 110.242037) + (xy 125.19132 110.301002) (xy 125.311018 110.337312) (xy 125.4355 110.349572) (xy 129.3955 110.349572) (xy 129.519982 110.337312) + (xy 129.63968 110.301002) (xy 129.749994 110.242037) (xy 129.846685 110.162685) (xy 129.926037 110.065994) (xy 129.934586 110.05) + (xy 136.806284 110.05) (xy 136.809188 110.079482) (xy 136.845498 110.19918) (xy 136.904463 110.309494) (xy 136.983815 110.406185) + (xy 137.080506 110.485537) (xy 137.19082 110.544502) (xy 137.310518 110.580812) (xy 137.435 110.593072) (xy 139.435 110.593072) + (xy 139.559482 110.580812) (xy 139.67918 110.544502) (xy 139.789494 110.485537) (xy 139.886185 110.406185) (xy 139.965537 110.309494) + (xy 140.024502 110.19918) (xy 140.060812 110.079482) (xy 140.073072 109.955) (xy 140.073072 108.175) (xy 140.060812 108.050518) + (xy 140.024502 107.93082) (xy 139.965537 107.820506) (xy 139.944605 107.795) (xy 139.965537 107.769494) (xy 140.024502 107.65918) + (xy 140.060812 107.539482) (xy 140.073072 107.415) (xy 140.073072 105.635) (xy 140.060812 105.510518) (xy 140.024502 105.39082) + (xy 139.965537 105.280506) (xy 139.944605 105.255) (xy 139.965537 105.229494) (xy 140.024502 105.11918) (xy 140.060812 104.999482) + (xy 140.073072 104.875) (xy 140.073072 103.095) (xy 140.060812 102.970518) (xy 140.024502 102.85082) (xy 139.965537 102.740506) + (xy 139.944605 102.715) (xy 139.965537 102.689494) (xy 140.024502 102.57918) (xy 140.060812 102.459482) (xy 140.073072 102.335) + (xy 140.073072 100.555) (xy 140.060812 100.430518) (xy 140.024502 100.31082) (xy 139.965537 100.200506) (xy 139.944605 100.175) + (xy 139.965537 100.149494) (xy 140.024502 100.03918) (xy 140.060812 99.919482) (xy 140.073072 99.795) (xy 140.073072 98.015) + (xy 140.060812 97.890518) (xy 140.024502 97.77082) (xy 139.965537 97.660506) (xy 139.944605 97.635) (xy 139.965537 97.609494) + (xy 140.024502 97.49918) (xy 140.060812 97.379482) (xy 140.073072 97.255) (xy 140.073072 95.475) (xy 140.060812 95.350518) + (xy 140.024502 95.23082) (xy 139.965537 95.120506) (xy 139.944605 95.095) (xy 139.965537 95.069494) (xy 140.024502 94.95918) + (xy 140.060812 94.839482) (xy 140.073072 94.715) (xy 140.073072 92.935) (xy 140.060812 92.810518) (xy 140.024502 92.69082) + (xy 139.965537 92.580506) (xy 139.944605 92.555) (xy 139.965537 92.529494) (xy 140.024502 92.41918) (xy 140.060812 92.299482) + (xy 140.073072 92.175) (xy 140.073072 90.395) (xy 140.060812 90.270518) (xy 140.024502 90.15082) (xy 139.965537 90.040506) + (xy 139.886185 89.943815) (xy 139.789494 89.864463) (xy 139.67918 89.805498) (xy 139.559482 89.769188) (xy 139.435 89.756928) + (xy 137.435 89.756928) (xy 137.310518 89.769188) (xy 137.19082 89.805498) (xy 137.080506 89.864463) (xy 136.983815 89.943815) + (xy 136.904463 90.040506) (xy 136.897163 90.054162) (xy 134.084999 87.241999) (xy 134.084999 86.997518) (xy 134.273439 87.035) + (xy 134.526561 87.035) (xy 134.774821 86.985619) (xy 135.008676 86.888753) (xy 135.21914 86.748125) (xy 135.398125 86.56914) + (xy 135.538753 86.358676) (xy 135.635619 86.124821) (xy 135.685 85.876561) (xy 135.685 85.858001) (xy 135.818001 85.725) + (xy 141.151928 85.725) (xy 141.151928 85.82) (xy 141.164188 85.944482) (xy 141.200498 86.06418) (xy 141.259463 86.174494) + (xy 141.338815 86.271185) (xy 141.435506 86.350537) (xy 141.54582 86.409502) (xy 141.665518 86.445812) (xy 141.79 86.458072) + (xy 142.91 86.458072) (xy 143.034482 86.445812) (xy 143.15418 86.409502) (xy 143.264494 86.350537) (xy 143.361185 86.271185) + (xy 143.440537 86.174494) (xy 143.499502 86.06418) (xy 143.535812 85.944482) (xy 143.548072 85.82) (xy 143.548072 84.934928) + (xy 145.544349 82.938651) (xy 145.652433 82.996423) (xy 145.816684 83.046248) (xy 145.9875 83.063072) (xy 146.4625 83.063072) + (xy 146.633316 83.046248) (xy 146.797567 82.996423) (xy 146.948942 82.915512) (xy 147.081623 82.806623) (xy 147.190512 82.673942) + (xy 147.271423 82.522567) (xy 147.321248 82.358316) (xy 147.338072 82.1875) (xy 147.338072 81.5875) (xy 147.321248 81.416684) + (xy 147.271423 81.252433) (xy 147.190512 81.101058) (xy 147.128093 81.025) (xy 147.190512 80.948942) (xy 147.271423 80.797567) + (xy 147.321248 80.633316) (xy 147.338072 80.4625) (xy 147.338072 79.8625) (xy 147.321248 79.691684) (xy 147.271423 79.527433) + (xy 147.190512 79.376058) (xy 147.081623 79.243377) (xy 146.948942 79.134488) (xy 146.797567 79.053577) (xy 146.633316 79.003752) + (xy 146.4625 78.986928) (xy 145.9875 78.986928) (xy 145.816684 79.003752) (xy 145.652433 79.053577) (xy 145.501058 79.134488) + (xy 145.448648 79.1775) (xy 144.910501 79.1775) (xy 143.548072 77.815072) (xy 143.548072 76.93) (xy 143.535812 76.805518) + (xy 143.499502 76.68582) (xy 143.485701 76.66) (xy 150.442 76.66) (xy 151.540001 77.758001) (xy 151.540001 77.875017) + (xy 151.478577 77.989933) (xy 151.428752 78.154184) (xy 151.411928 78.325) (xy 151.411928 78.925) (xy 151.428752 79.095816) + (xy 151.478577 79.260067) (xy 151.559488 79.411442) (xy 151.621907 79.4875) (xy 151.559488 79.563558) (xy 151.478577 79.714933) + (xy 151.428752 79.879184) (xy 151.411928 80.05) (xy 151.411928 80.070071) (xy 144.767 86.715) (xy 141.882265 86.715) + (xy 141.86914 86.701875) (xy 141.658676 86.561247) (xy 141.424821 86.464381) (xy 141.176561 86.415) (xy 140.923439 86.415) + (xy 140.675179 86.464381) (xy 140.441324 86.561247) (xy 140.23086 86.701875) (xy 140.051875 86.88086) (xy 139.911247 87.091324) + (xy 139.814381 87.325179) (xy 139.765 87.573439) (xy 139.765 87.826561) (xy 139.814381 88.074821) (xy 139.911247 88.308676) + (xy 140.051875 88.51914) (xy 140.23086 88.698125) (xy 140.441324 88.838753) (xy 140.675179 88.935619) (xy 140.923439 88.985) + (xy 141.176561 88.985) (xy 141.424821 88.935619) (xy 141.658676 88.838753) (xy 141.86914 88.698125) (xy 141.882265 88.685) + (xy 145.12662 88.685) (xy 145.175 88.689765) (xy 145.22338 88.685) (xy 145.368094 88.670747) (xy 145.553767 88.614424) + (xy 145.724884 88.52296) (xy 145.87487 88.39987) (xy 145.905716 88.362284) (xy 152.742429 81.525572) (xy 152.7625 81.525572) + (xy 152.933316 81.508748) (xy 153.097567 81.458923) (xy 153.189096 81.41) (xy 154.27662 81.41) (xy 154.325 81.414765) + (xy 154.37338 81.41) (xy 154.518094 81.395747) (xy 154.703767 81.339424) (xy 154.874884 81.24796) (xy 155.02487 81.12487) + (xy 155.14796 80.974884) (xy 155.239424 80.803767) (xy 155.295747 80.618094) (xy 155.314765 80.425) (xy 155.31 80.37662) + (xy 155.31 76.042674) (xy 155.336185 76.021185) (xy 155.415537 75.924494) (xy 155.474502 75.81418) (xy 155.510812 75.694482) + (xy 155.523072 75.57) (xy 155.523072 73.41) (xy 155.510812 73.285518) (xy 155.474502 73.16582) (xy 155.415537 73.055506) + (xy 155.336185 72.958815) (xy 155.239494 72.879463) (xy 155.12918 72.820498) (xy 155.009482 72.784188) (xy 154.885 72.771928) + (xy 153.765 72.771928) (xy 153.640518 72.784188) (xy 153.52082 72.820498) (xy 153.410506 72.879463) (xy 153.313815 72.958815) + (xy 153.234463 73.055506) (xy 153.175498 73.16582) (xy 153.139188 73.285518) (xy 153.126928 73.41) (xy 153.126928 75.57) + (xy 153.139188 75.694482) (xy 153.175498 75.81418) (xy 153.234463 75.924494) (xy 153.313815 76.021185) (xy 153.34 76.042675) + (xy 153.34 76.790417) (xy 153.276163 76.712631) (xy 153.22487 76.65013) (xy 153.18729 76.619289) (xy 151.91 75.342) + (xy 151.91 69.483) (xy 152.648001 68.745) (xy 153.126928 68.745) (xy 153.126928 68.84) (xy 153.139188 68.964482) + (xy 153.175498 69.08418) (xy 153.234463 69.194494) (xy 153.313815 69.291185) (xy 153.410506 69.370537) (xy 153.52082 69.429502) + (xy 153.640518 69.465812) (xy 153.765 69.478072) (xy 154.885 69.478072) (xy 155.009482 69.465812) (xy 155.12918 69.429502) + (xy 155.239494 69.370537) (xy 155.336185 69.291185) (xy 155.415537 69.194494) (xy 155.474502 69.08418) (xy 155.510812 68.964482) + (xy 155.523072 68.84) (xy 155.523072 68.745) (xy 156.777501 68.745) (xy 156.7775 77.798648) (xy 156.734488 77.851058) + (xy 156.653577 78.002433) (xy 156.603752 78.166684) (xy 156.586928 78.3375) (xy 156.586928 78.8125) (xy 156.603752 78.983316) + (xy 156.653577 79.147567) (xy 156.734488 79.298942) (xy 156.802501 79.381815) (xy 156.8025 80.548648) (xy 156.759488 80.601058) + (xy 156.678577 80.752433) (xy 156.628752 80.916684) (xy 156.611928 81.0875) (xy 156.611928 81.107571) (xy 147.962572 89.756928) + (xy 146.965 89.756928) (xy 146.840518 89.769188) (xy 146.72082 89.805498) (xy 146.610506 89.864463) (xy 146.513815 89.943815) + (xy 146.434463 90.040506) (xy 146.375498 90.15082) (xy 146.339188 90.270518) (xy 146.336284 90.3) (xy 145.03838 90.3) + (xy 144.99 90.295235) (xy 144.94162 90.3) (xy 144.796906 90.314253) (xy 144.611233 90.370576) (xy 144.440116 90.46204) + (xy 144.29013 90.58513) (xy 144.16704 90.735116) (xy 144.075576 90.906233) (xy 144.019253 91.091906) (xy 144.000235 91.285) + (xy 144.005 91.333379) (xy 144.005001 96.53661) (xy 144.000235 96.585) (xy 144.005 96.63338) (xy 144.005001 101.31661) + (xy 144.000235 101.365) (xy 144.005 101.41338) (xy 144.005001 105.50161) (xy 144.000235 105.55) (xy 144.005 105.59838) + (xy 144.005001 110.68) (xy 130.883379 110.68) (xy 130.834999 110.675235) (xy 130.641905 110.694253) (xy 130.598691 110.707362) + (xy 130.456233 110.750576) (xy 130.285116 110.84204) (xy 130.13513 110.96513) (xy 130.104284 111.002716) (xy 127.657 113.45) + (xy 126.355176 113.45) (xy 126.116444 113.473513) (xy 125.810131 113.566432) (xy 125.52783 113.717325) (xy 125.280392 113.920392) + (xy 125.077325 114.16783) (xy 124.926432 114.450131) (xy 124.833513 114.756444) (xy 124.802138 115.075) (xy 124.833513 115.393556) + (xy 124.926432 115.699869) (xy 125.077325 115.98217) (xy 125.280392 116.229608) (xy 125.52783 116.432675) (xy 125.810131 116.583568) + (xy 126.116444 116.676487) (xy 126.355176 116.7) (xy 128.494824 116.7) (xy 128.733556 116.676487) (xy 129.039869 116.583568) + (xy 129.32217 116.432675) (xy 129.569608 116.229608) (xy 129.772675 115.98217) (xy 129.923568 115.699869) (xy 130.016487 115.393556) + (xy 130.047862 115.075) (xy 130.016487 114.756444) (xy 129.923568 114.450131) (xy 129.772675 114.16783) (xy 129.751262 114.141738) + (xy 131.243 112.65) (xy 144.582 112.65) (xy 145.264917 113.332917) (xy 145.301576 113.453766) (xy 145.323 113.493847) + (xy 145.323001 117.304262) (xy 145.137814 117.322501) (xy 144.853972 117.408604) (xy 144.592382 117.548427) (xy 144.363097 117.736597) (xy 144.174927 117.965882) (xy 144.035104 118.227472) (xy 143.996072 118.356143) (xy 143.996072 114.9315) (xy 143.983812 114.807018) (xy 143.947502 114.68732) (xy 143.888537 114.577006) (xy 143.809185 114.480315) (xy 143.712494 114.400963) (xy 143.60218 114.341998) (xy 143.482482 114.305688) (xy 143.358 114.293428) (xy 139.858 114.293428) (xy 139.733518 114.305688) (xy 139.61382 114.341998) (xy 139.503506 114.400963) (xy 139.406815 114.480315) (xy 139.327463 114.577006) (xy 139.268498 114.68732) (xy 139.232188 114.807018) - (xy 139.219928 114.9315) (xy 139.219928 115.69) (xy 137.162482 115.69) (xy 137.047567 115.628577) (xy 136.883316 115.578752) - (xy 136.7125 115.561928) (xy 136.706072 115.561928) (xy 138.308001 113.96) (xy 140.75162 113.96) - ) - ) - (filled_polygon - (pts - (xy 159.678368 118.463475) (xy 159.85276 118.58) (xy 159.678368 118.696525) (xy 159.599695 118.775198) (xy 159.084497 118.26) - (xy 159.474893 118.26) - ) - ) - (filled_polygon - (pts - (xy 161.540001 118.67539) (xy 161.39724 118.58) (xy 161.540001 118.48461) + (xy 139.219928 114.9315) (xy 139.219928 116.517089) (xy 139.203735 116.6815) (xy 139.219928 116.845911) (xy 139.219928 118.4315) + (xy 139.232188 118.555982) (xy 139.268498 118.67568) (xy 139.327463 118.785994) (xy 139.406815 118.882685) (xy 139.503506 118.962037) + (xy 139.61382 119.021002) (xy 139.733518 119.057312) (xy 139.858 119.069572) (xy 143.358 119.069572) (xy 143.482482 119.057312) + (xy 143.60218 119.021002) (xy 143.712494 118.962037) (xy 143.809185 118.882685) (xy 143.888537 118.785994) (xy 143.929494 118.709369) + (xy 143.919928 118.8065) (xy 143.919928 120.5565) (xy 143.930694 120.665806) (xy 143.615208 120.981292) (xy 143.589515 120.949985) + (xy 143.379171 120.77736) (xy 143.139192 120.649089) (xy 142.878799 120.570099) (xy 142.608 120.543428) (xy 140.608 120.543428) + (xy 140.337201 120.570099) (xy 140.076808 120.649089) (xy 139.836829 120.77736) (xy 139.626485 120.949985) (xy 139.45386 121.160329) + (xy 139.325589 121.400308) (xy 139.246599 121.660701) (xy 139.219928 121.9315) (xy 139.219928 123.4315) (xy 139.246599 123.702299) + (xy 139.325589 123.962692) (xy 139.45386 124.202671) (xy 139.463979 124.215001) (xy 135.738002 124.215001) (xy 130.935716 119.412716) + (xy 130.90487 119.37513) (xy 130.754884 119.25204) (xy 130.583767 119.160576) (xy 130.398094 119.104253) (xy 130.25338 119.09) + (xy 130.205 119.085235) (xy 130.15662 119.09) (xy 130.043072 119.09) (xy 130.043072 119.085) (xy 130.030812 118.960518) + (xy 129.994502 118.84082) (xy 129.935537 118.730506) (xy 129.856185 118.633815) (xy 129.759494 118.554463) (xy 129.64918 118.495498) + (xy 129.529482 118.459188) (xy 129.405 118.446928) (xy 125.445 118.446928) (xy 125.320518 118.459188) (xy 125.20082 118.495498) + (xy 125.090506 118.554463) (xy 124.993815 118.633815) (xy 124.914463 118.730506) (xy 124.855498 118.84082) (xy 124.819188 118.960518) + (xy 124.806928 119.085) (xy 124.806928 121.065) (xy 124.819188 121.189482) (xy 124.855498 121.30918) (xy 124.914463 121.419494) + (xy 124.993815 121.516185) (xy 125.090506 121.595537) (xy 125.20082 121.654502) (xy 125.320518 121.690812) (xy 125.445 121.703072) + (xy 129.405 121.703072) (xy 129.529482 121.690812) (xy 129.64918 121.654502) (xy 129.759494 121.595537) (xy 129.856185 121.516185) + (xy 129.935537 121.419494) (xy 129.994502 121.30918) (xy 130.00653 121.26953) (xy 131.685 122.948) (xy 121.11 122.948) + (xy 121.11 66.86) (xy 141.018277 66.86) ) ) (filled_polygon (pts - (xy 155.05338 116.286513) (xy 155.01 116.329893) (xy 155.01 116.273354) + (xy 161.44 110.741928) (xy 159.775 110.741928) (xy 159.650518 110.754188) (xy 159.53082 110.790498) (xy 159.420506 110.849463) + (xy 159.323815 110.928815) (xy 159.244463 111.025506) (xy 159.185498 111.13582) (xy 159.149188 111.255518) (xy 159.136928 111.38) + (xy 159.136928 113.08) (xy 159.149188 113.204482) (xy 159.185498 113.32418) (xy 159.244463 113.434494) (xy 159.323815 113.531185) + (xy 159.420506 113.610537) (xy 159.53082 113.669502) (xy 159.60338 113.691513) (xy 159.471525 113.823368) (xy 159.30901 114.066589) + (xy 159.197068 114.336842) (xy 159.14 114.62374) (xy 159.14 114.91626) (xy 159.197068 115.203158) (xy 159.30901 115.473411) + (xy 159.471525 115.716632) (xy 159.678368 115.923475) (xy 159.85276 116.04) (xy 159.678368 116.156525) (xy 159.471525 116.363368) + (xy 159.30901 116.606589) (xy 159.197068 116.876842) (xy 159.14 117.16374) (xy 159.14 117.45626) (xy 159.197068 117.743158) + (xy 159.30901 118.013411) (xy 159.471525 118.256632) (xy 159.678368 118.463475) (xy 159.85276 118.58) (xy 159.678368 118.696525) + (xy 159.471525 118.903368) (xy 159.30901 119.146589) (xy 159.197068 119.416842) (xy 159.14 119.70374) (xy 159.14 119.99626) + (xy 159.197068 120.283158) (xy 159.30901 120.553411) (xy 159.471525 120.796632) (xy 159.678368 121.003475) (xy 159.921589 121.16599) + (xy 160.191842 121.277932) (xy 160.47874 121.335) (xy 160.77126 121.335) (xy 161.058158 121.277932) (xy 161.328411 121.16599) + (xy 161.440001 121.091428) (xy 161.440001 122.388527) (xy 161.358411 122.33401) (xy 161.088158 122.222068) (xy 160.80126 122.165) + (xy 160.50874 122.165) (xy 160.221842 122.222068) (xy 159.951589 122.33401) (xy 159.708368 122.496525) (xy 159.501525 122.703368) + (xy 159.385 122.87776) (xy 159.268475 122.703368) (xy 159.061632 122.496525) (xy 158.818411 122.33401) (xy 158.548158 122.222068) + (xy 158.26126 122.165) (xy 157.96874 122.165) (xy 157.681842 122.222068) (xy 157.411589 122.33401) (xy 157.168368 122.496525) + (xy 157.036513 122.62838) (xy 157.014502 122.55582) (xy 156.955537 122.445506) (xy 156.876185 122.348815) (xy 156.779494 122.269463) + (xy 156.66918 122.210498) (xy 156.549482 122.174188) (xy 156.425 122.161928) (xy 154.725 122.161928) (xy 154.600518 122.174188) + (xy 154.48082 122.210498) (xy 154.370506 122.269463) (xy 154.273815 122.348815) (xy 154.194463 122.445506) (xy 154.135498 122.55582) + (xy 154.102379 122.665) (xy 153.933 122.665) (xy 152.41 121.142) (xy 152.41 118.273379) (xy 152.414765 118.224999) + (xy 152.395747 118.031906) (xy 152.339424 117.846233) (xy 152.280822 117.736597) (xy 152.24796 117.675116) (xy 152.12487 117.52513) + (xy 152.087284 117.494284) (xy 149.685 115.092) (xy 149.685 115.073439) (xy 149.635619 114.825179) (xy 149.538753 114.591324) + (xy 149.398125 114.38086) (xy 149.21914 114.201875) (xy 149.008676 114.061247) (xy 148.800458 113.975) (xy 154.586928 113.975) + (xy 154.586928 115.675) (xy 154.599188 115.799482) (xy 154.635498 115.91918) (xy 154.694463 116.029494) (xy 154.773815 116.126185) + (xy 154.870506 116.205537) (xy 154.98082 116.264502) (xy 155.05338 116.286513) (xy 154.921525 116.418368) (xy 154.75901 116.661589) + (xy 154.647068 116.931842) (xy 154.59 117.21874) (xy 154.59 117.51126) (xy 154.647068 117.798158) (xy 154.75901 118.068411) + (xy 154.921525 118.311632) (xy 155.128368 118.518475) (xy 155.30276 118.635) (xy 155.128368 118.751525) (xy 154.921525 118.958368) + (xy 154.75901 119.201589) (xy 154.647068 119.471842) (xy 154.59 119.75874) (xy 154.59 120.05126) (xy 154.647068 120.338158) + (xy 154.75901 120.608411) (xy 154.921525 120.851632) (xy 155.128368 121.058475) (xy 155.371589 121.22099) (xy 155.641842 121.332932) + (xy 155.92874 121.39) (xy 156.22126 121.39) (xy 156.508158 121.332932) (xy 156.778411 121.22099) (xy 157.021632 121.058475) + (xy 157.228475 120.851632) (xy 157.39099 120.608411) (xy 157.502932 120.338158) (xy 157.56 120.05126) (xy 157.56 119.75874) + (xy 157.502932 119.471842) (xy 157.39099 119.201589) (xy 157.228475 118.958368) (xy 157.021632 118.751525) (xy 156.84724 118.635) + (xy 157.021632 118.518475) (xy 157.228475 118.311632) (xy 157.39099 118.068411) (xy 157.502932 117.798158) (xy 157.56 117.51126) + (xy 157.56 117.21874) (xy 157.502932 116.931842) (xy 157.39099 116.661589) (xy 157.228475 116.418368) (xy 157.09662 116.286513) + (xy 157.16918 116.264502) (xy 157.279494 116.205537) (xy 157.376185 116.126185) (xy 157.455537 116.029494) (xy 157.514502 115.91918) + (xy 157.550812 115.799482) (xy 157.563072 115.675) (xy 157.563072 113.975) (xy 157.550812 113.850518) (xy 157.514502 113.73082) + (xy 157.455537 113.620506) (xy 157.376185 113.523815) (xy 157.279494 113.444463) (xy 157.16918 113.385498) (xy 157.049482 113.349188) + (xy 156.925 113.336928) (xy 155.225 113.336928) (xy 155.100518 113.349188) (xy 154.98082 113.385498) (xy 154.870506 113.444463) + (xy 154.773815 113.523815) (xy 154.694463 113.620506) (xy 154.635498 113.73082) (xy 154.599188 113.850518) (xy 154.586928 113.975) + (xy 148.800458 113.975) (xy 148.774821 113.964381) (xy 148.526561 113.915) (xy 148.273439 113.915) (xy 148.025179 113.964381) + (xy 147.791324 114.061247) (xy 147.58086 114.201875) (xy 147.401875 114.38086) (xy 147.293 114.543802) (xy 147.293 113.03138) + (xy 147.297765 112.983) (xy 147.278747 112.789906) (xy 147.250332 112.696234) (xy 147.222424 112.604233) (xy 147.13096 112.433116) + (xy 147.00787 112.28313) (xy 146.970284 112.252284) (xy 145.975 111.257) (xy 145.975 107.51378) (xy 146.013379 107.51) + (xy 146.336284 107.51) (xy 146.339188 107.539482) (xy 146.375498 107.65918) (xy 146.434463 107.769494) (xy 146.455395 107.795) + (xy 146.434463 107.820506) (xy 146.375498 107.93082) (xy 146.339188 108.050518) (xy 146.326928 108.175) (xy 146.326928 109.955) + (xy 146.339188 110.079482) (xy 146.375498 110.19918) (xy 146.434463 110.309494) (xy 146.513815 110.406185) (xy 146.610506 110.485537) + (xy 146.72082 110.544502) (xy 146.840518 110.580812) (xy 146.965 110.593072) (xy 148.965 110.593072) (xy 149.089482 110.580812) + (xy 149.20918 110.544502) (xy 149.319494 110.485537) (xy 149.416185 110.406185) (xy 149.49189 110.313938) (xy 149.49 110.323439) + (xy 149.49 110.576561) (xy 149.539381 110.824821) (xy 149.636247 111.058676) (xy 149.776875 111.26914) (xy 149.95586 111.448125) + (xy 150.166324 111.588753) (xy 150.400179 111.685619) (xy 150.648439 111.735) (xy 150.901561 111.735) (xy 151.149821 111.685619) + (xy 151.383676 111.588753) (xy 151.59414 111.448125) (xy 151.6375 111.404765) (xy 151.68086 111.448125) (xy 151.891324 111.588753) + (xy 152.125179 111.685619) (xy 152.373439 111.735) (xy 152.626561 111.735) (xy 152.874821 111.685619) (xy 153.108676 111.588753) + (xy 153.31914 111.448125) (xy 153.332265 111.435) (xy 158.25162 111.435) (xy 158.3 111.439765) (xy 158.34838 111.435) + (xy 158.493094 111.420747) (xy 158.678767 111.364424) (xy 158.849884 111.27296) (xy 158.99987 111.14987) (xy 159.030715 111.112285) + (xy 160.18729 109.955711) (xy 160.22487 109.92487) (xy 160.34796 109.774884) (xy 160.439424 109.603767) (xy 160.495747 109.418094) + (xy 160.51 109.27338) (xy 160.51 109.273379) (xy 160.514765 109.225) (xy 160.51 109.17662) (xy 160.51 109.163072) + (xy 160.7 109.163072) (xy 160.824482 109.150812) (xy 160.94418 109.114502) (xy 161.054494 109.055537) (xy 161.151185 108.976185) + (xy 161.230537 108.879494) (xy 161.289502 108.76918) (xy 161.325812 108.649482) (xy 161.338072 108.525) (xy 161.338072 103.425) + (xy 161.325812 103.300518) (xy 161.289502 103.18082) (xy 161.230537 103.070506) (xy 161.151185 102.973815) (xy 161.054494 102.894463) + (xy 160.94418 102.835498) (xy 160.824482 102.799188) (xy 160.7 102.786928) (xy 158.35 102.786928) (xy 158.225518 102.799188) + (xy 158.10582 102.835498) (xy 157.995506 102.894463) (xy 157.898815 102.973815) (xy 157.819463 103.070506) (xy 157.760498 103.18082) + (xy 157.724188 103.300518) (xy 157.711928 103.425) (xy 157.711928 108.525) (xy 157.724188 108.649482) (xy 157.760498 108.76918) + (xy 157.819463 108.879494) (xy 157.898815 108.976185) (xy 157.995506 109.055537) (xy 158.10582 109.114502) (xy 158.210687 109.146313) + (xy 157.892 109.465) (xy 153.332265 109.465) (xy 153.31914 109.451875) (xy 153.108676 109.311247) (xy 152.874821 109.214381) + (xy 152.836285 109.206716) (xy 153.561928 108.481073) (xy 153.561928 108.525) (xy 153.574188 108.649482) (xy 153.610498 108.76918) + (xy 153.669463 108.879494) (xy 153.748815 108.976185) (xy 153.845506 109.055537) (xy 153.95582 109.114502) (xy 154.075518 109.150812) + (xy 154.2 109.163072) (xy 156.55 109.163072) (xy 156.674482 109.150812) (xy 156.79418 109.114502) (xy 156.904494 109.055537) + (xy 157.001185 108.976185) (xy 157.080537 108.879494) (xy 157.139502 108.76918) (xy 157.175812 108.649482) (xy 157.188072 108.525) + (xy 157.188072 103.554928) (xy 161.44 99.303001) ) ) (filled_polygon (pts - (xy 157.115001 116.304894) (xy 157.09662 116.286513) (xy 157.115001 116.280937) + (xy 161.440001 118.608572) (xy 161.39724 118.58) (xy 161.440001 118.551428) ) ) (filled_polygon (pts - (xy 161.54 116.135389) (xy 161.39724 116.04) (xy 161.54 115.944611) + (xy 161.440001 116.068572) (xy 161.39724 116.04) (xy 161.440001 116.011428) ) ) (filled_polygon (pts - (xy 159.85276 116.04) (xy 159.835 116.051867) (xy 159.835 116.028133) + (xy 130.025906 107.495747) (xy 130.219 107.514765) (xy 130.26738 107.51) (xy 136.806284 107.51) (xy 136.809188 107.539482) + (xy 136.845498 107.65918) (xy 136.904463 107.769494) (xy 136.925395 107.795) (xy 136.904463 107.820506) (xy 136.845498 107.93082) + (xy 136.809188 108.050518) (xy 136.806284 108.08) (xy 130.033572 108.08) (xy 130.033572 107.7315) (xy 130.021312 107.607018) + (xy 129.985002 107.48732) (xy 129.982462 107.482569) ) ) (filled_polygon (pts - (xy 153.240001 114.19387) (xy 153.213405 114.144113) (xy 153.102962 114.009538) (xy 152.968387 113.899095) (xy 152.814851 113.817028) - (xy 152.648255 113.766492) (xy 152.475001 113.749428) (xy 151.9225 113.749428) (xy 151.9225 113.02338) (xy 151.927265 112.975) - (xy 151.908247 112.781906) (xy 151.851924 112.596233) (xy 151.765767 112.435044) (xy 151.803816 112.403818) (xy 151.831533 112.370045) - (xy 152.466579 111.735) (xy 152.626561 111.735) (xy 152.874821 111.685619) (xy 153.108676 111.588753) (xy 153.24 111.501005) + (xy 150.915001 106.421999) (xy 149.502837 107.834163) (xy 149.495537 107.820506) (xy 149.474605 107.795) (xy 149.495537 107.769494) + (xy 149.554502 107.65918) (xy 149.590812 107.539482) (xy 149.603072 107.415) (xy 149.603072 105.635) (xy 149.590812 105.510518) + (xy 149.554502 105.39082) (xy 149.495537 105.280506) (xy 149.474605 105.255) (xy 149.495537 105.229494) (xy 149.554502 105.11918) + (xy 149.590812 104.999482) (xy 149.593716 104.97) (xy 149.61662 104.97) (xy 149.665 104.974765) (xy 149.71338 104.97) + (xy 149.858094 104.955747) (xy 150.043767 104.899424) (xy 150.214884 104.80796) (xy 150.36487 104.68487) (xy 150.395715 104.647285) + (xy 150.915 104.128) ) ) (filled_polygon (pts - (xy 149.697038 114.009538) (xy 149.586595 114.144113) (xy 149.575431 114.165) (xy 149.163953 114.165) (xy 149.008676 114.061247) - (xy 148.774821 113.964381) (xy 148.752796 113.96) (xy 149.7574 113.96) + (xy 155.743377 100.631623) (xy 155.876058 100.740512) (xy 156.027433 100.821423) (xy 156.191684 100.871248) (xy 156.3625 100.888072) + (xy 156.8625 100.888072) (xy 157.033316 100.871248) (xy 157.108584 100.848416) (xy 155.170072 102.786928) (xy 154.2 102.786928) + (xy 154.075518 102.799188) (xy 153.95582 102.835498) (xy 153.845506 102.894463) (xy 153.748815 102.973815) (xy 153.669463 103.070506) + (xy 153.610498 103.18082) (xy 153.574188 103.300518) (xy 153.561928 103.425) (xy 153.561928 105.695071) (xy 152.885 106.371999) + (xy 152.885 103.0705) (xy 155.070699 100.884802) (xy 155.208316 100.871248) (xy 155.372567 100.821423) (xy 155.523942 100.740512) + (xy 155.656623 100.631623) (xy 155.7 100.578768) ) - ) - (filled_polygon - (pts - (xy 162.740001 113.945733) (xy 162.59849 113.902805) (xy 162.468477 113.89) (xy 162.468476 113.89) (xy 162.425 113.885718) - (xy 162.381523 113.89) (xy 161.822997 113.89) (xy 161.778475 113.823368) (xy 161.64662 113.691513) (xy 161.71918 113.669502) - (xy 161.829494 113.610537) (xy 161.926185 113.531185) (xy 162.005537 113.434494) (xy 162.064502 113.32418) (xy 162.100812 113.204482) - (xy 162.113072 113.08) (xy 162.113072 111.38) (xy 162.100812 111.255518) (xy 162.064502 111.13582) (xy 162.005537 111.025506) - (xy 161.926185 110.928815) (xy 161.829494 110.849463) (xy 161.71918 110.790498) (xy 161.599482 110.754188) (xy 161.51 110.745375) - (xy 161.51 108.872046) (xy 161.590512 108.773942) (xy 161.671423 108.622567) (xy 161.721248 108.458316) (xy 161.738072 108.2875) - (xy 161.738072 107.7875) (xy 161.721248 107.616684) (xy 161.671423 107.452433) (xy 161.590512 107.301058) (xy 161.481623 107.168377) - (xy 161.428768 107.125) (xy 161.481623 107.081623) (xy 161.590512 106.948942) (xy 161.671423 106.797567) (xy 161.721248 106.633316) - (xy 161.738072 106.4625) (xy 161.738072 105.9625) (xy 161.721248 105.791684) (xy 161.671423 105.627433) (xy 161.590512 105.476058) - (xy 161.51 105.377954) (xy 161.51 99.918469) (xy 161.514281 99.875) (xy 161.51 99.831531) (xy 161.51 99.831523) - (xy 161.497195 99.70151) (xy 161.446589 99.534687) (xy 161.364411 99.380941) (xy 161.253817 99.246183) (xy 161.220051 99.218472) - (xy 159.95125 97.949672) (xy 160.158676 97.863753) (xy 160.36914 97.723125) (xy 160.548125 97.54414) (xy 160.688753 97.333676) - (xy 160.785619 97.099821) (xy 160.835 96.851561) (xy 160.835 96.598439) (xy 160.785619 96.350179) (xy 160.688753 96.116324) - (xy 160.548125 95.90586) (xy 160.36914 95.726875) (xy 160.158676 95.586247) (xy 159.924821 95.489381) (xy 159.676561 95.44) - (xy 159.516579 95.44) (xy 156.631578 92.555) (xy 157.253422 92.555) (xy 158.29 93.591579) (xy 158.29 93.751561) - (xy 158.339381 93.999821) (xy 158.436247 94.233676) (xy 158.576875 94.44414) (xy 158.75586 94.623125) (xy 158.966324 94.763753) - (xy 159.200179 94.860619) (xy 159.448439 94.91) (xy 159.701561 94.91) (xy 159.949821 94.860619) (xy 160.183676 94.763753) - (xy 160.39414 94.623125) (xy 160.573125 94.44414) (xy 160.713753 94.233676) (xy 160.810619 93.999821) (xy 160.86 93.751561) - (xy 160.86 93.498439) (xy 160.810619 93.250179) (xy 160.713753 93.016324) (xy 160.573125 92.80586) (xy 160.39414 92.626875) - (xy 160.183676 92.486247) (xy 159.949821 92.389381) (xy 159.701561 92.34) (xy 159.541579 92.34) (xy 158.486578 91.285) - (xy 158.529063 91.285) (xy 158.551875 91.31914) (xy 158.73086 91.498125) (xy 158.941324 91.638753) (xy 159.175179 91.735619) - (xy 159.423439 91.785) (xy 159.676561 91.785) (xy 159.924821 91.735619) (xy 160.158676 91.638753) (xy 160.36914 91.498125) - (xy 160.548125 91.31914) (xy 160.688753 91.108676) (xy 160.785619 90.874821) (xy 160.835 90.626561) (xy 160.835 90.373439) - (xy 160.785619 90.125179) (xy 160.688753 89.891324) (xy 160.548125 89.68086) (xy 160.36914 89.501875) (xy 160.158676 89.361247) - (xy 159.924821 89.264381) (xy 159.676561 89.215) (xy 159.423439 89.215) (xy 159.175179 89.264381) (xy 158.941324 89.361247) - (xy 158.73086 89.501875) (xy 158.717735 89.515) (xy 158.686578 89.515) (xy 159.516579 88.685) (xy 159.676561 88.685) - (xy 159.924821 88.635619) (xy 160.158676 88.538753) (xy 160.36914 88.398125) (xy 160.548125 88.21914) (xy 160.591648 88.154004) - (xy 160.651875 88.24414) (xy 160.83086 88.423125) (xy 161.041324 88.563753) (xy 161.275179 88.660619) (xy 161.523439 88.71) - (xy 161.776561 88.71) (xy 162.024821 88.660619) (xy 162.258676 88.563753) (xy 162.46914 88.423125) (xy 162.648125 88.24414) - (xy 162.74 88.106639) + ) + (filled_polygon + (pts + (xy 146.339188 102.459482) (xy 146.375498 102.57918) (xy 146.434463 102.689494) (xy 146.455395 102.715) (xy 146.434463 102.740506) + (xy 146.375498 102.85082) (xy 146.339188 102.970518) (xy 146.326928 103.095) (xy 146.326928 104.875) (xy 146.339188 104.999482) + (xy 146.375498 105.11918) (xy 146.434463 105.229494) (xy 146.455395 105.255) (xy 146.434463 105.280506) (xy 146.375498 105.39082) + (xy 146.340196 105.507196) (xy 145.975 105.142) (xy 145.975 102.43) (xy 146.336284 102.43) ) ) (filled_polygon (pts - (xy 155.265008 109.660203) (xy 155.265009 113.336928) (xy 155.225 113.336928) (xy 155.100518 113.349188) (xy 155.01 113.376646) - (xy 155.01 109.893465) (xy 155.014281 109.849999) (xy 155.01 109.806533) (xy 155.01 109.806523) (xy 154.997195 109.67651) - (xy 154.946589 109.509687) (xy 154.864411 109.355941) (xy 154.827731 109.311247) (xy 154.781532 109.254953) (xy 154.78153 109.254951) - (xy 154.753817 109.221183) (xy 154.720051 109.193472) (xy 145.336578 99.81) (xy 145.414806 99.81) + (xy 153.728577 99.202433) (xy 153.678752 99.366684) (xy 153.665198 99.504301) (xy 151.385 101.7845) (xy 151.385 101.483) + (xy 153.800928 99.067072) ) ) (filled_polygon (pts - (xy 148.050518 98.105812) (xy 148.175 98.118072) (xy 149.016609 98.118072) (xy 149.022805 98.18099) (xy 149.073412 98.347813) - (xy 149.15559 98.501559) (xy 149.238468 98.602546) (xy 149.238471 98.602549) (xy 149.266184 98.636317) (xy 149.299951 98.664029) - (xy 152.311928 101.676007) (xy 152.311928 101.7875) (xy 152.328752 101.958316) (xy 152.378577 102.122567) (xy 152.459488 102.273942) - (xy 152.568377 102.406623) (xy 152.621232 102.45) (xy 152.568377 102.493377) (xy 152.459488 102.626058) (xy 152.378577 102.777433) - (xy 152.328752 102.941684) (xy 152.311928 103.1125) (xy 152.311928 103.6125) (xy 152.328752 103.783316) (xy 152.378577 103.947567) - (xy 152.459488 104.098942) (xy 152.568377 104.231623) (xy 152.701058 104.340512) (xy 152.852433 104.421423) (xy 153.016684 104.471248) - (xy 153.1875 104.488072) (xy 153.6625 104.488072) (xy 153.833316 104.471248) (xy 153.997567 104.421423) (xy 154.148942 104.340512) - (xy 154.262277 104.2475) (xy 154.910922 104.2475) (xy 157.115 106.451579) (xy 157.115001 113.369063) (xy 157.049482 113.349188) - (xy 157.035008 113.347762) (xy 157.035008 109.337093) (xy 157.039289 109.293624) (xy 157.035008 109.250155) (xy 157.035008 109.250147) - (xy 157.022203 109.120134) (xy 157.00709 109.070313) (xy 156.971597 108.95331) (xy 156.889419 108.799565) (xy 156.80654 108.698577) - (xy 156.806538 108.698575) (xy 156.778825 108.664807) (xy 156.745059 108.637096) (xy 146.437918 98.329956) (xy 146.410201 98.296183) - (xy 146.275443 98.185589) (xy 146.149126 98.118072) (xy 146.535 98.118072) (xy 146.659482 98.105812) (xy 146.72 98.087454) - (xy 146.780518 98.105812) (xy 146.905 98.118072) (xy 147.805 98.118072) (xy 147.929482 98.105812) (xy 147.99 98.087454) + (xy 153.809488 95.951058) (xy 153.728577 96.102433) (xy 153.678752 96.266684) (xy 153.663832 96.418167) (xy 149.737716 100.344284) + (xy 149.70013 100.37513) (xy 149.597655 100.499997) (xy 149.590812 100.430518) (xy 149.554502 100.31082) (xy 149.495537 100.200506) + (xy 149.474605 100.175) (xy 149.495537 100.149494) (xy 149.554502 100.03918) (xy 149.590812 99.919482) (xy 149.594576 99.881264) + (xy 149.650594 99.875747) (xy 149.836267 99.819424) (xy 150.007384 99.72796) (xy 150.15737 99.60487) (xy 150.188216 99.567284) + (xy 153.832582 95.922918) ) ) (filled_polygon (pts - (xy 142.215001 111.731524) (xy 142.210719 111.775001) (xy 142.227806 111.948491) (xy 142.240398 111.99) (xy 141.96 111.99) - (xy 141.96 109.603584) (xy 142.087829 109.535258) (xy 142.207251 109.437251) (xy 142.215002 109.427807) + (xy 146.339188 97.379482) (xy 146.375498 97.49918) (xy 146.434463 97.609494) (xy 146.455395 97.635) (xy 146.434463 97.660506) + (xy 146.375498 97.77082) (xy 146.339188 97.890518) (xy 146.326928 98.015) (xy 146.326928 99.795) (xy 146.339188 99.919482) + (xy 146.375498 100.03918) (xy 146.434463 100.149494) (xy 146.455395 100.175) (xy 146.434463 100.200506) (xy 146.375498 100.31082) + (xy 146.339188 100.430518) (xy 146.336284 100.46) (xy 145.975 100.46) (xy 145.975 97.35) (xy 146.336284 97.35) ) ) (filled_polygon (pts - (xy 144.992749 109.437251) (xy 145.112171 109.535258) (xy 145.214585 109.59) (xy 144.935 109.59) (xy 144.935 109.366884) + (xy 157.698416 100.258584) (xy 157.721248 100.183316) (xy 157.734802 100.045698) (xy 159.793825 97.986675) (xy 159.924821 97.960619) + (xy 160.04698 97.910019) ) ) (filled_polygon (pts - (xy 152.219117 109.195696) (xy 152.125179 109.214381) (xy 151.891324 109.311247) (xy 151.68086 109.451875) (xy 151.6375 109.495235) - (xy 151.59414 109.451875) (xy 151.383676 109.311247) (xy 151.149821 109.214381) (xy 150.901561 109.165) (xy 150.648439 109.165) - (xy 150.400179 109.214381) (xy 150.166324 109.311247) (xy 149.95586 109.451875) (xy 149.817735 109.59) (xy 147.235415 109.59) - (xy 147.337829 109.535258) (xy 147.457251 109.437251) (xy 147.555258 109.317829) (xy 147.628084 109.181582) (xy 147.672929 109.033745) - (xy 147.688072 108.88) (xy 147.688072 108.58) (xy 147.672929 108.426255) (xy 147.628084 108.278418) (xy 147.555258 108.142171) - (xy 147.516546 108.095) (xy 147.555258 108.047829) (xy 147.628084 107.911582) (xy 147.672929 107.763745) (xy 147.688072 107.61) - (xy 147.688072 107.31) (xy 147.672929 107.156255) (xy 147.628084 107.008418) (xy 147.555258 106.872171) (xy 147.516546 106.825) - (xy 147.555258 106.777829) (xy 147.628084 106.641582) (xy 147.672929 106.493745) (xy 147.688072 106.34) (xy 147.688072 106.04) - (xy 147.672929 105.886255) (xy 147.628084 105.738418) (xy 147.555258 105.602171) (xy 147.516546 105.555) (xy 147.555258 105.507829) - (xy 147.628084 105.371582) (xy 147.672929 105.223745) (xy 147.688072 105.07) (xy 147.688072 104.77) (xy 147.676562 104.65314) + (xy 155.743377 97.531623) (xy 155.876058 97.640512) (xy 156.027433 97.721423) (xy 156.191684 97.771248) (xy 156.3625 97.788072) + (xy 156.8625 97.788072) (xy 157.033316 97.771248) (xy 157.197567 97.721423) (xy 157.348942 97.640512) (xy 157.377082 97.617418) + (xy 156.329302 98.665198) (xy 156.191684 98.678752) (xy 156.027433 98.728577) (xy 155.876058 98.809488) (xy 155.743377 98.918377) + (xy 155.7 98.971232) (xy 155.656623 98.918377) (xy 155.523942 98.809488) (xy 155.372567 98.728577) (xy 155.208316 98.678752) + (xy 155.0375 98.661928) (xy 154.5375 98.661928) (xy 154.366684 98.678752) (xy 154.202433 98.728577) (xy 154.067073 98.800928) + (xy 155.084564 97.783437) (xy 155.208316 97.771248) (xy 155.372567 97.721423) (xy 155.523942 97.640512) (xy 155.656623 97.531623) + (xy 155.7 97.478768) ) ) (filled_polygon (pts - (xy 144.777071 105.886255) (xy 144.761928 106.04) (xy 144.761928 106.34) (xy 144.777071 106.493745) (xy 144.821916 106.641582) - (xy 144.894742 106.777829) (xy 144.933454 106.825) (xy 144.894742 106.872171) (xy 144.821916 107.008418) (xy 144.802187 107.073459) - (xy 144.789411 107.049557) (xy 144.71361 106.957194) (xy 144.706532 106.948569) (xy 144.70653 106.948567) (xy 144.678817 106.914799) - (xy 144.645049 106.887086) (xy 143.562962 105.805) (xy 144.801719 105.805) + (xy 158.265 96.598439) (xy 158.265 96.7295) (xy 157.567418 97.427082) (xy 157.590512 97.398942) (xy 157.671423 97.247567) + (xy 157.721248 97.083316) (xy 157.734802 96.945698) (xy 158.310423 96.370077) ) ) (filled_polygon (pts - (xy 139.517442 104.71402) (xy 139.511928 104.77) (xy 139.511928 105.07) (xy 139.527071 105.223745) (xy 139.551719 105.305) - (xy 139.481579 105.305) (xy 137.694032 103.517454) (xy 137.687915 103.51) (xy 138.313422 103.51) + (xy 153.809488 92.851058) (xy 153.728577 93.002433) (xy 153.678752 93.166684) (xy 153.665198 93.304302) (xy 149.590899 97.378601) + (xy 149.603072 97.255) (xy 149.603072 95.475) (xy 149.590812 95.350518) (xy 149.554502 95.23082) (xy 149.495537 95.120506) + (xy 149.474605 95.095) (xy 149.495537 95.069494) (xy 149.554502 94.95918) (xy 149.590812 94.839482) (xy 149.593716 94.81) + (xy 151.38912 94.81) (xy 151.4375 94.814765) (xy 151.48588 94.81) (xy 151.630594 94.795747) (xy 151.816267 94.739424) + (xy 151.987384 94.64796) (xy 152.13737 94.52487) (xy 152.168216 94.487284) (xy 153.832582 92.822918) ) ) (filled_polygon (pts - (xy 134.353752 103.641684) (xy 134.336928 103.8125) (xy 134.336928 104.4125) (xy 134.353752 104.583316) (xy 134.403577 104.747567) - (xy 134.484488 104.898942) (xy 134.546907 104.975) (xy 134.484488 105.051058) (xy 134.463673 105.09) (xy 133.185 105.09) - (xy 133.185 103.51) (xy 134.393698 103.51) + (xy 162.740001 97.091233) (xy 162.66 97.066965) (xy 162.66 88.226368) (xy 162.74 88.106639) ) ) (filled_polygon (pts - (xy 152.342546 80.875) (xy 152.324188 80.935518) (xy 152.311928 81.06) (xy 152.311928 81.96) (xy 152.324188 82.084482) - (xy 152.342546 82.145) (xy 152.324188 82.205518) (xy 152.311928 82.33) (xy 152.311928 83.23) (xy 152.324188 83.354482) - (xy 152.342546 83.415) (xy 152.324188 83.475518) (xy 152.311928 83.6) (xy 152.311928 84.5) (xy 152.324188 84.624482) - (xy 152.342546 84.685) (xy 152.324188 84.745518) (xy 152.311928 84.87) (xy 152.311928 85.77) (xy 152.324188 85.894482) - (xy 152.342546 85.955) (xy 152.324188 86.015518) (xy 152.311928 86.14) (xy 152.311928 87.04) (xy 152.324188 87.164482) - (xy 152.342546 87.225) (xy 152.324188 87.285518) (xy 152.311928 87.41) (xy 152.311928 88.31) (xy 152.324188 88.434482) - (xy 152.342546 88.495) (xy 152.324188 88.555518) (xy 152.311928 88.68) (xy 152.311928 89.58) (xy 152.324188 89.704482) - (xy 152.342546 89.765) (xy 152.324188 89.825518) (xy 152.311928 89.95) (xy 152.311928 90.85) (xy 152.324188 90.974482) - (xy 152.342546 91.035) (xy 152.324188 91.095518) (xy 152.311928 91.22) (xy 152.311928 92.12) (xy 152.324188 92.244482) - (xy 152.342546 92.305) (xy 152.324188 92.365518) (xy 152.311928 92.49) (xy 152.311928 93.39) (xy 152.324188 93.514482) - (xy 152.342546 93.575) (xy 152.324188 93.635518) (xy 152.311928 93.76) (xy 152.311928 94.66) (xy 152.324188 94.784482) - (xy 152.342546 94.845) (xy 152.324188 94.905518) (xy 152.311928 95.03) (xy 152.311928 95.93) (xy 152.324188 96.054482) - (xy 152.360498 96.17418) (xy 152.419463 96.284494) (xy 152.498815 96.381185) (xy 152.595506 96.460537) (xy 152.70582 96.519502) - (xy 152.825518 96.555812) (xy 152.95 96.568072) (xy 153.062632 96.568072) (xy 153.060719 96.5875) (xy 153.077805 96.76099) - (xy 153.128412 96.927813) (xy 153.21059 97.081559) (xy 153.293468 97.182546) (xy 153.293471 97.182549) (xy 153.321184 97.216317) - (xy 153.354952 97.24403) (xy 157.836928 101.726007) (xy 157.836928 101.8375) (xy 157.853752 102.008316) (xy 157.903577 102.172567) - (xy 157.984488 102.323942) (xy 158.093377 102.456623) (xy 158.146232 102.5) (xy 158.093377 102.543377) (xy 157.984488 102.676058) - (xy 157.903577 102.827433) (xy 157.853752 102.991684) (xy 157.836928 103.1625) (xy 157.836928 103.6625) (xy 157.853752 103.833316) - (xy 157.903577 103.997567) (xy 157.984488 104.148942) (xy 158.065 104.247046) (xy 158.065 104.898421) (xy 155.934034 102.767456) - (xy 155.906317 102.733683) (xy 155.771559 102.623089) (xy 155.617813 102.540911) (xy 155.45099 102.490305) (xy 155.320977 102.4775) - (xy 155.320969 102.4775) (xy 155.2775 102.473219) (xy 155.234031 102.4775) (xy 154.262277 102.4775) (xy 154.228768 102.45) - (xy 154.281623 102.406623) (xy 154.390512 102.273942) (xy 154.471423 102.122567) (xy 154.521248 101.958316) (xy 154.538072 101.7875) - (xy 154.538072 101.2875) (xy 154.521248 101.116684) (xy 154.471423 100.952433) (xy 154.390512 100.801058) (xy 154.281623 100.668377) - (xy 154.148942 100.559488) (xy 153.997567 100.478577) (xy 153.833316 100.428752) (xy 153.6625 100.411928) (xy 153.551007 100.411928) - (xy 151.25715 98.118072) (xy 151.615 98.118072) (xy 151.739482 98.105812) (xy 151.85918 98.069502) (xy 151.969494 98.010537) - (xy 152.066185 97.931185) (xy 152.145537 97.834494) (xy 152.204502 97.72418) (xy 152.240812 97.604482) (xy 152.253072 97.48) - (xy 152.253072 95.48) (xy 152.240812 95.355518) (xy 152.204502 95.23582) (xy 152.145537 95.125506) (xy 152.066185 95.028815) - (xy 152.05 95.015532) (xy 152.05 91.228469) (xy 152.054281 91.185) (xy 152.05 91.141531) (xy 152.05 91.141523) - (xy 152.037195 91.01151) (xy 151.986589 90.844687) (xy 151.904411 90.690941) (xy 151.851575 90.626561) (xy 151.821532 90.589953) - (xy 151.82153 90.589951) (xy 151.793817 90.556183) (xy 151.760049 90.52847) (xy 149.588072 88.356493) (xy 149.588072 83.97) - (xy 149.575812 83.845518) (xy 149.539502 83.72582) (xy 149.510331 83.671246) (xy 152.334174 80.847402) + (xy 160.69 96.119335) (xy 160.688753 96.116324) (xy 160.548125 95.90586) (xy 160.36914 95.726875) (xy 160.158676 95.586247) + (xy 159.924821 95.489381) (xy 159.676561 95.44) (xy 159.423439 95.44) (xy 159.195078 95.485423) (xy 159.787618 94.892882) + (xy 159.949821 94.860619) (xy 160.183676 94.763753) (xy 160.39414 94.623125) (xy 160.573125 94.44414) (xy 160.69 94.269224) ) ) (filled_polygon (pts - (xy 159.74 100.241579) (xy 159.74 100.663701) (xy 159.673942 100.609488) (xy 159.522567 100.528577) (xy 159.358316 100.478752) - (xy 159.1875 100.461928) (xy 159.076007 100.461928) (xy 155.147684 96.533606) (xy 155.19418 96.519502) (xy 155.304494 96.460537) - (xy 155.401185 96.381185) (xy 155.480537 96.284494) (xy 155.539502 96.17418) (xy 155.57048 96.072058) + (xy 155.743377 94.431623) (xy 155.876058 94.540512) (xy 156.027433 94.621423) (xy 156.191684 94.671248) (xy 156.3625 94.688072) + (xy 156.8625 94.688072) (xy 157.033316 94.671248) (xy 157.197567 94.621423) (xy 157.348942 94.540512) (xy 157.377079 94.51742) + (xy 156.329302 95.565198) (xy 156.191684 95.578752) (xy 156.027433 95.628577) (xy 155.876058 95.709488) (xy 155.743377 95.818377) + (xy 155.7 95.871232) (xy 155.656623 95.818377) (xy 155.523942 95.709488) (xy 155.372567 95.628577) (xy 155.208316 95.578752) + (xy 155.0375 95.561928) (xy 154.5375 95.561928) (xy 154.366684 95.578752) (xy 154.202433 95.628577) (xy 154.051058 95.709488) + (xy 154.022918 95.732582) (xy 155.070698 94.684802) (xy 155.208316 94.671248) (xy 155.372567 94.621423) (xy 155.523942 94.540512) + (xy 155.656623 94.431623) (xy 155.7 94.378768) ) ) (filled_polygon (pts - (xy 143.311928 85.083507) (xy 143.311928 88.97) (xy 143.324188 89.094482) (xy 143.360498 89.21418) (xy 143.419463 89.324494) - (xy 143.498815 89.421185) (xy 143.595506 89.500537) (xy 143.70582 89.559502) (xy 143.825518 89.595812) (xy 143.95 89.608072) - (xy 148.336493 89.608072) (xy 150.280001 91.55158) (xy 150.28 94.841928) (xy 149.445 94.841928) (xy 149.320518 94.854188) - (xy 149.26 94.872546) (xy 149.199482 94.854188) (xy 149.075 94.841928) (xy 148.175 94.841928) (xy 148.050518 94.854188) - (xy 147.99 94.872546) (xy 147.929482 94.854188) (xy 147.805 94.841928) (xy 146.905 94.841928) (xy 146.780518 94.854188) - (xy 146.72 94.872546) (xy 146.659482 94.854188) (xy 146.535 94.841928) (xy 145.635 94.841928) (xy 145.510518 94.854188) - (xy 145.45 94.872546) (xy 145.389482 94.854188) (xy 145.265 94.841928) (xy 144.365 94.841928) (xy 144.240518 94.854188) - (xy 144.18 94.872546) (xy 144.119482 94.854188) (xy 143.995 94.841928) (xy 143.095 94.841928) (xy 142.970518 94.854188) - (xy 142.91 94.872546) (xy 142.849482 94.854188) (xy 142.725 94.841928) (xy 141.89 94.841928) (xy 141.89 88.677265) - (xy 142.048125 88.51914) (xy 142.188753 88.308676) (xy 142.285619 88.074821) (xy 142.335 87.826561) (xy 142.335 87.573439) - (xy 142.285619 87.325179) (xy 142.188753 87.091324) (xy 142.048125 86.88086) (xy 141.86914 86.701875) (xy 141.658676 86.561247) - (xy 141.424821 86.464381) (xy 141.176561 86.415) (xy 140.923439 86.415) (xy 140.675179 86.464381) (xy 140.441324 86.561247) - (xy 140.23086 86.701875) (xy 140.051875 86.88086) (xy 139.911247 87.091324) (xy 139.814381 87.325179) (xy 139.765 87.573439) - (xy 139.765 87.826561) (xy 139.814381 88.074821) (xy 139.911247 88.308676) (xy 140.051875 88.51914) (xy 140.120001 88.587266) - (xy 140.12 94.841928) (xy 139.285 94.841928) (xy 139.160518 94.854188) (xy 139.04082 94.890498) (xy 138.930506 94.949463) - (xy 138.833815 95.028815) (xy 138.754463 95.125506) (xy 138.695498 95.23582) (xy 138.659188 95.355518) (xy 138.646928 95.48) - (xy 138.646928 97.48) (xy 138.659188 97.604482) (xy 138.695498 97.72418) (xy 138.754463 97.834494) (xy 138.833815 97.931185) - (xy 138.930506 98.010537) (xy 138.985627 98.04) (xy 132.835 98.04) (xy 132.835 85.316578) (xy 133.216579 84.935) - (xy 133.399109 84.935) (xy 133.261247 85.141324) (xy 133.164381 85.375179) (xy 133.115 85.623439) (xy 133.115 85.876561) - (xy 133.164381 86.124821) (xy 133.261247 86.358676) (xy 133.401875 86.56914) (xy 133.515001 86.682266) (xy 133.515 94.386531) - (xy 133.510719 94.43) (xy 133.515 94.473469) (xy 133.515 94.473476) (xy 133.519019 94.514281) (xy 133.527805 94.60349) - (xy 133.543157 94.654096) (xy 133.578411 94.770312) (xy 133.660589 94.924058) (xy 133.771183 95.058817) (xy 133.804956 95.086534) - (xy 134.79347 96.075049) (xy 134.821183 96.108817) (xy 134.854951 96.13653) (xy 134.854953 96.136532) (xy 134.858799 96.139688) - (xy 134.955941 96.219411) (xy 135.109687 96.301589) (xy 135.27651 96.352195) (xy 135.406523 96.365) (xy 135.406533 96.365) - (xy 135.449999 96.369281) (xy 135.486126 96.365723) (xy 135.498815 96.381185) (xy 135.595506 96.460537) (xy 135.70582 96.519502) - (xy 135.825518 96.555812) (xy 135.95 96.568072) (xy 137.95 96.568072) (xy 138.074482 96.555812) (xy 138.19418 96.519502) - (xy 138.304494 96.460537) (xy 138.401185 96.381185) (xy 138.480537 96.284494) (xy 138.539502 96.17418) (xy 138.575812 96.054482) - (xy 138.588072 95.93) (xy 138.588072 95.03) (xy 138.575812 94.905518) (xy 138.557454 94.845) (xy 138.575812 94.784482) - (xy 138.588072 94.66) (xy 138.588072 93.76) (xy 138.575812 93.635518) (xy 138.557454 93.575) (xy 138.575812 93.514482) - (xy 138.588072 93.39) (xy 138.588072 92.49) (xy 138.575812 92.365518) (xy 138.557454 92.305) (xy 138.575812 92.244482) - (xy 138.588072 92.12) (xy 138.588072 91.22) (xy 138.575812 91.095518) (xy 138.557454 91.035) (xy 138.575812 90.974482) - (xy 138.588072 90.85) (xy 138.588072 89.95) (xy 138.575812 89.825518) (xy 138.557454 89.765) (xy 138.575812 89.704482) - (xy 138.588072 89.58) (xy 138.588072 88.68) (xy 138.575812 88.555518) (xy 138.557454 88.495) (xy 138.575812 88.434482) - (xy 138.588072 88.31) (xy 138.588072 87.41) (xy 138.575812 87.285518) (xy 138.557454 87.225) (xy 138.575812 87.164482) - (xy 138.588072 87.04) (xy 138.588072 86.14) (xy 138.575812 86.015518) (xy 138.557454 85.955) (xy 138.575812 85.894482) - (xy 138.588072 85.77) (xy 138.588072 84.87) (xy 138.575812 84.745518) (xy 138.557454 84.685) (xy 138.575812 84.624482) - (xy 138.588072 84.5) (xy 138.588072 83.6) (xy 138.575812 83.475518) (xy 138.557454 83.415) (xy 138.575812 83.354482) - (xy 138.588072 83.23) (xy 138.588072 82.33) (xy 138.575812 82.205518) (xy 138.557454 82.145) (xy 138.575812 82.084482) - (xy 138.588072 81.96) (xy 138.588072 81.06) (xy 138.575812 80.935518) (xy 138.557454 80.875) (xy 138.575812 80.814482) - (xy 138.588072 80.69) (xy 138.588072 80.35965) + (xy 146.339188 92.299482) (xy 146.375498 92.41918) (xy 146.434463 92.529494) (xy 146.455395 92.555) (xy 146.434463 92.580506) + (xy 146.375498 92.69082) (xy 146.339188 92.810518) (xy 146.326928 92.935) (xy 146.326928 94.715) (xy 146.339188 94.839482) + (xy 146.375498 94.95918) (xy 146.434463 95.069494) (xy 146.455395 95.095) (xy 146.434463 95.120506) (xy 146.375498 95.23082) + (xy 146.339188 95.350518) (xy 146.336284 95.38) (xy 145.975 95.38) (xy 145.975 92.27) (xy 146.336284 92.27) ) ) (filled_polygon (pts - (xy 135.311928 87.04) (xy 135.324188 87.164482) (xy 135.342546 87.225) (xy 135.324188 87.285518) (xy 135.311928 87.41) - (xy 135.311928 88.31) (xy 135.324188 88.434482) (xy 135.342546 88.495) (xy 135.324188 88.555518) (xy 135.311928 88.68) - (xy 135.311928 89.58) (xy 135.324188 89.704482) (xy 135.342546 89.765) (xy 135.324188 89.825518) (xy 135.311928 89.95) - (xy 135.311928 90.85) (xy 135.324188 90.974482) (xy 135.342546 91.035) (xy 135.324188 91.095518) (xy 135.311928 91.22) - (xy 135.311928 92.12) (xy 135.324188 92.244482) (xy 135.342546 92.305) (xy 135.324188 92.365518) (xy 135.311928 92.49) - (xy 135.311928 93.39) (xy 135.324188 93.514482) (xy 135.342546 93.575) (xy 135.324188 93.635518) (xy 135.311928 93.76) - (xy 135.311928 94.09035) (xy 135.285 94.063422) (xy 135.285 86.682265) (xy 135.311928 86.655337) + (xy 158.339381 93.250179) (xy 158.29 93.498439) (xy 158.29 93.604499) (xy 157.56742 94.327079) (xy 157.590512 94.298942) + (xy 157.671423 94.147567) (xy 157.721248 93.983316) (xy 157.734802 93.845698) (xy 158.345787 93.234713) ) ) (filled_polygon (pts - (xy 157.630966 82.657544) (xy 157.658683 82.691317) (xy 157.793441 82.801911) (xy 157.947187 82.884089) (xy 158.063403 82.919343) - (xy 158.114009 82.934695) (xy 158.128806 82.936152) (xy 158.244023 82.9475) (xy 158.244031 82.9475) (xy 158.2875 82.951781) - (xy 158.330969 82.9475) (xy 158.64 82.9475) (xy 158.640001 83.742734) (xy 158.551875 83.83086) (xy 158.411247 84.041324) - (xy 158.314381 84.275179) (xy 158.265 84.523439) (xy 158.265 84.776561) (xy 158.314381 85.024821) (xy 158.411247 85.258676) - (xy 158.551875 85.46914) (xy 158.73086 85.648125) (xy 158.941324 85.788753) (xy 159.175179 85.885619) (xy 159.423439 85.935) - (xy 159.676561 85.935) (xy 159.924821 85.885619) (xy 160.158676 85.788753) (xy 160.36914 85.648125) (xy 160.548125 85.46914) - (xy 160.688753 85.258676) (xy 160.765 85.074599) (xy 160.765 86.492735) (xy 160.651875 86.60586) (xy 160.608352 86.670996) - (xy 160.548125 86.58086) (xy 160.36914 86.401875) (xy 160.158676 86.261247) (xy 159.924821 86.164381) (xy 159.676561 86.115) - (xy 159.423439 86.115) (xy 159.175179 86.164381) (xy 158.941324 86.261247) (xy 158.73086 86.401875) (xy 158.551875 86.58086) - (xy 158.411247 86.791324) (xy 158.314381 87.025179) (xy 158.265 87.273439) (xy 158.265 87.433421) (xy 157.453422 88.245) - (xy 155.588072 88.245) (xy 155.588072 87.41) (xy 155.575812 87.285518) (xy 155.557454 87.225) (xy 155.575812 87.164482) - (xy 155.588072 87.04) (xy 155.588072 86.14) (xy 155.575812 86.015518) (xy 155.557454 85.955) (xy 155.575812 85.894482) - (xy 155.588072 85.77) (xy 155.588072 84.87) (xy 155.575812 84.745518) (xy 155.557454 84.685) (xy 155.575812 84.624482) - (xy 155.588072 84.5) (xy 155.588072 83.6) (xy 155.575812 83.475518) (xy 155.557454 83.415) (xy 155.575812 83.354482) - (xy 155.588072 83.23) (xy 155.588072 82.395) (xy 157.368422 82.395) + (xy 160.69 92.980776) (xy 160.573125 92.80586) (xy 160.39414 92.626875) (xy 160.183676 92.486247) (xy 159.949821 92.389381) + (xy 159.701561 92.34) (xy 159.448439 92.34) (xy 159.200179 92.389381) (xy 159.184713 92.395787) (xy 159.825032 91.755468) + (xy 159.924821 91.735619) (xy 160.158676 91.638753) (xy 160.36914 91.498125) (xy 160.548125 91.31914) (xy 160.688753 91.108676) + (xy 160.690001 91.105664) ) ) (filled_polygon (pts - (xy 160.765 84.225402) (xy 160.688753 84.041324) (xy 160.548125 83.83086) (xy 160.41 83.692735) (xy 160.41 82.897046) - (xy 160.490512 82.798942) (xy 160.571423 82.647567) (xy 160.621248 82.483316) (xy 160.638072 82.3125) (xy 160.638072 81.8125) - (xy 160.621248 81.641684) (xy 160.571423 81.477433) (xy 160.490512 81.326058) (xy 160.381623 81.193377) (xy 160.328768 81.15) - (xy 160.362277 81.1225) (xy 160.765001 81.1225) + (xy 162.74 86.743361) (xy 162.648125 86.60586) (xy 162.46914 86.426875) (xy 162.258676 86.286247) (xy 162.024821 86.189381) + (xy 161.776561 86.14) (xy 161.523439 86.14) (xy 161.275179 86.189381) (xy 161.041324 86.286247) (xy 160.83086 86.426875) + (xy 160.651875 86.60586) (xy 160.608352 86.670996) (xy 160.548125 86.58086) (xy 160.36914 86.401875) (xy 160.158676 86.261247) + (xy 159.924821 86.164381) (xy 159.676561 86.115) (xy 159.423439 86.115) (xy 159.175179 86.164381) (xy 158.941324 86.261247) + (xy 158.73086 86.401875) (xy 158.551875 86.58086) (xy 158.411247 86.791324) (xy 158.314381 87.025179) (xy 158.265 87.273439) + (xy 158.265 87.4295) (xy 156.329302 89.365198) (xy 156.191684 89.378752) (xy 156.027433 89.428577) (xy 155.876058 89.509488) + (xy 155.743377 89.618377) (xy 155.7 89.671232) (xy 155.656623 89.618377) (xy 155.523942 89.509488) (xy 155.372567 89.428577) + (xy 155.208316 89.378752) (xy 155.0375 89.361928) (xy 154.5375 89.361928) (xy 154.366684 89.378752) (xy 154.202433 89.428577) + (xy 154.051058 89.509488) (xy 153.918377 89.618377) (xy 153.809488 89.751058) (xy 153.728577 89.902433) (xy 153.678752 90.066684) + (xy 153.665198 90.204302) (xy 151.0295 92.84) (xy 149.593716 92.84) (xy 149.590812 92.810518) (xy 149.554502 92.69082) + (xy 149.495537 92.580506) (xy 149.474605 92.555) (xy 149.495537 92.529494) (xy 149.554502 92.41918) (xy 149.590812 92.299482) + (xy 149.603072 92.175) (xy 149.603072 90.902428) (xy 158.067429 82.438072) (xy 158.0875 82.438072) (xy 158.258316 82.421248) + (xy 158.422567 82.371423) (xy 158.5275 82.315335) (xy 158.527501 83.867339) (xy 158.411247 84.041324) (xy 158.314381 84.275179) + (xy 158.265 84.523439) (xy 158.265 84.776561) (xy 158.314381 85.024821) (xy 158.411247 85.258676) (xy 158.551875 85.46914) + (xy 158.73086 85.648125) (xy 158.941324 85.788753) (xy 159.175179 85.885619) (xy 159.423439 85.935) (xy 159.676561 85.935) + (xy 159.924821 85.885619) (xy 160.158676 85.788753) (xy 160.36914 85.648125) (xy 160.548125 85.46914) (xy 160.688753 85.258676) + (xy 160.785619 85.024821) (xy 160.835 84.776561) (xy 160.835 84.523439) (xy 160.785619 84.275179) (xy 160.688753 84.041324) + (xy 160.548125 83.83086) (xy 160.4975 83.780235) (xy 160.4975 82.101352) (xy 160.540512 82.048942) (xy 160.621423 81.897567) + (xy 160.671248 81.733316) (xy 160.688072 81.5625) (xy 160.688072 81.0875) (xy 160.671248 80.916684) (xy 160.621423 80.752433) + (xy 160.540512 80.601058) (xy 160.4725 80.518186) (xy 160.4725 79.351352) (xy 160.515512 79.298942) (xy 160.596423 79.147567) + (xy 160.646248 78.983316) (xy 160.663072 78.8125) (xy 160.663072 78.792428) (xy 161.312284 78.143216) (xy 161.34987 78.11237) + (xy 161.47296 77.962384) (xy 161.564424 77.791267) (xy 161.620747 77.605594) (xy 161.626903 77.543094) (xy 161.639765 77.412501) + (xy 161.635 77.364121) (xy 161.635 76.067674) (xy 161.661185 76.046185) (xy 161.740537 75.949494) (xy 161.799502 75.83918) + (xy 161.835812 75.719482) (xy 161.848072 75.595) (xy 161.848072 73.435) (xy 161.835812 73.310518) (xy 161.799502 73.19082) + (xy 161.740537 73.080506) (xy 161.661185 72.983815) (xy 161.564494 72.904463) (xy 161.45418 72.845498) (xy 161.334482 72.809188) + (xy 161.21 72.796928) (xy 160.09 72.796928) (xy 159.965518 72.809188) (xy 159.84582 72.845498) (xy 159.735506 72.904463) + (xy 159.638815 72.983815) (xy 159.559463 73.080506) (xy 159.500498 73.19082) (xy 159.464188 73.310518) (xy 159.451928 73.435) + (xy 159.451928 75.595) (xy 159.464188 75.719482) (xy 159.500498 75.83918) (xy 159.559463 75.949494) (xy 159.638815 76.046185) + (xy 159.665001 76.067675) (xy 159.665001 77.004499) (xy 159.207572 77.461928) (xy 159.1875 77.461928) (xy 159.016684 77.478752) + (xy 158.852433 77.528577) (xy 158.7475 77.584664) (xy 158.7475 68.745) (xy 159.451928 68.745) (xy 159.451928 68.865) + (xy 159.464188 68.989482) (xy 159.500498 69.10918) (xy 159.559463 69.219494) (xy 159.638815 69.316185) (xy 159.735506 69.395537) + (xy 159.84582 69.454502) (xy 159.965518 69.490812) (xy 160.09 69.503072) (xy 161.21 69.503072) (xy 161.334482 69.490812) + (xy 161.45418 69.454502) (xy 161.564494 69.395537) (xy 161.661185 69.316185) (xy 161.740537 69.219494) (xy 161.799502 69.10918) + (xy 161.835812 68.989482) (xy 161.848072 68.865) (xy 161.848072 66.86) (xy 162.74 66.86) ) ) (filled_polygon (pts - (xy 158.721232 81.15) (xy 158.687723 81.1775) (xy 158.654078 81.1775) (xy 158.599078 81.1225) (xy 158.687723 81.1225) + (xy 155.743377 91.331623) (xy 155.876058 91.440512) (xy 156.027433 91.521423) (xy 156.191684 91.571248) (xy 156.3625 91.588072) + (xy 156.8625 91.588072) (xy 157.033316 91.571248) (xy 157.197567 91.521423) (xy 157.348942 91.440512) (xy 157.377082 91.417418) + (xy 156.329302 92.465198) (xy 156.191684 92.478752) (xy 156.027433 92.528577) (xy 155.876058 92.609488) (xy 155.743377 92.718377) + (xy 155.7 92.771232) (xy 155.656623 92.718377) (xy 155.523942 92.609488) (xy 155.372567 92.528577) (xy 155.208316 92.478752) + (xy 155.0375 92.461928) (xy 154.5375 92.461928) (xy 154.366684 92.478752) (xy 154.202433 92.528577) (xy 154.051058 92.609488) + (xy 154.022918 92.632582) (xy 155.070698 91.584802) (xy 155.208316 91.571248) (xy 155.372567 91.521423) (xy 155.523942 91.440512) + (xy 155.656623 91.331623) (xy 155.7 91.278768) + ) + ) + (filled_polygon + (pts + (xy 158.265 90.373439) (xy 158.265 90.5295) (xy 157.567418 91.227082) (xy 157.590512 91.198942) (xy 157.671423 91.047567) + (xy 157.721248 90.883316) (xy 157.734802 90.745698) (xy 158.304216 90.176284) + ) + ) + (filled_polygon + (pts + (xy 160.651875 88.24414) (xy 160.690001 88.282266) (xy 160.690001 89.894336) (xy 160.688753 89.891324) (xy 160.548125 89.68086) + (xy 160.36914 89.501875) (xy 160.158676 89.361247) (xy 159.924821 89.264381) (xy 159.676561 89.215) (xy 159.423439 89.215) + (xy 159.226284 89.254216) (xy 159.825032 88.655468) (xy 159.924821 88.635619) (xy 160.158676 88.538753) (xy 160.36914 88.398125) + (xy 160.548125 88.21914) (xy 160.591648 88.154004) + ) + ) + (filled_polygon + (pts + (xy 129.34 88.726622) (xy 129.335235 88.775002) (xy 129.34 88.823381) (xy 129.352413 88.949415) (xy 128.385 87.982002) + (xy 128.385 87.628072) (xy 129.34 87.628072) ) ) ) diff --git a/kicad/mqtrigger.pro b/kicad/mqtrigger.pro index cd146dd..98f12d9 100644 --- a/kicad/mqtrigger.pro +++ b/kicad/mqtrigger.pro @@ -1,4 +1,4 @@ -update=nie, 17 kwi 2022, 19:14:29 +update=wto, 17 maj 2022, 17:53:07 version=1 last_client=kicad [general] @@ -12,16 +12,6 @@ NetIExt=net version=1 LibDir= [eeschema/libraries] -[schematic_editor] -version=1 -PageLayoutDescrFile= -PlotDirectoryName= -SubpartIdSeparator=0 -SubpartFirstId=65 -NetFmtName=CadStar -SpiceAjustPassiveValues=0 -LabSize=50 -ERC_TestSimilarLabels=1 [pcbnew] version=1 PageLayoutDescrFile= @@ -250,3 +240,13 @@ uViaDrill=0.1 dPairWidth=0.5 dPairGap=0.25 dPairViaGap=0.25 +[schematic_editor] +version=1 +PageLayoutDescrFile= +PlotDirectoryName= +SubpartIdSeparator=0 +SubpartFirstId=65 +NetFmtName=CadStar +SpiceAjustPassiveValues=0 +LabSize=50 +ERC_TestSimilarLabels=1 diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 05b6f70..951a46b 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -2,7 +2,14 @@ set(COMPONENT_REQUIRES firmware software) set(COMPONENT_PRIV_REQUIRES ) -set(COMPONENT_SRCS "main.c") +set(COMPONENT_SRCS "Main.c") set(COMPONENT_ADD_INCLUDEDIRS "") register_component() + +target_add_binary_data(${COMPONENT_TARGET} "static/min/index.html" TEXT) +target_add_binary_data(${COMPONENT_TARGET} "static/min/index.css" TEXT) +target_add_binary_data(${COMPONENT_TARGET} "static/min/index.js" TEXT) +target_add_binary_data(${COMPONENT_TARGET} "static/min/sys.html" TEXT) +target_add_binary_data(${COMPONENT_TARGET} "static/min/app.html" TEXT) +target_add_binary_data(${COMPONENT_TARGET} "static/ca.crt" TEXT) diff --git a/main/HttpHandlers.h b/main/HttpHandlers.h new file mode 100644 index 0000000..1b5cb36 --- /dev/null +++ b/main/HttpHandlers.h @@ -0,0 +1,50 @@ +#ifndef MAIN_HTTPHANDLERS_H_ +#define MAIN_HTTPHANDLERS_H_ + +#include +#include +#include + +extern const char index_html_start[] asm("_binary_index_html_start"); +extern const char index_css_start[] asm("_binary_index_css_start"); +extern const char index_js_start[] asm("_binary_index_js_start"); +extern const char sys_html_start[] asm("_binary_sys_html_start"); +extern const char app_html_start[] asm("_binary_app_html_start"); + +static void rootHandler(const uint8_t* content, size_t ctLen, + const char** response, size_t* respLen) +{ + *response = index_html_start; + *respLen = strlen(index_html_start); +} + +static void jsHandler(const uint8_t* content, size_t ctLen, + const char** response, size_t* respLen) +{ + *response = index_js_start; + *respLen = strlen(index_js_start); +} + +static void cssHandler(const uint8_t* content, size_t ctLen, + const char** response, size_t* respLen) +{ + *response = index_css_start; + *respLen = strlen(index_css_start); +} + +static void sysFormHandler(const uint8_t* content, size_t ctLen, + const char** response, size_t* respLen) +{ + *response = sys_html_start; + *respLen = strlen(sys_html_start); +} + +static void appFormHandler(const uint8_t* content, size_t ctLen, + const char** response, size_t* respLen) +{ + *response = app_html_start; + *respLen = strlen(app_html_start); +} + + +#endif /* MAIN_HTTPHANDLERS_H_ */ diff --git a/main/Main.c b/main/Main.c new file mode 100644 index 0000000..95cbce6 --- /dev/null +++ b/main/Main.c @@ -0,0 +1,118 @@ +#include "nx/software/SystemSettings.h" +#include "nx/software/SystemSettingsApi.h" +#include "nx/software/AppSettings.h" +#include "nx/software/AppSettingsApi.h" + +#include "freertos/FreeRTOS.h" +#include "esp_system.h" + +#include "nx/firmware/Storage.h" +#include "nx/firmware/Wifi.h" +#include "nx/firmware/MqTriggerHttpServer.h" +#include "nx/firmware/MqttClient.h" +#include "nx/firmware/SntpClient.h" + +#include "HttpHandlers.h" + +#include "esp_log.h" + +#include + +#define TAG "MAIN" + +#define SNTP_RETRIES 5 + +static const char* DEVICE_NAME_PREFIX = "mqtrigger-"; + +extern const char ca_crt_start[] asm("_binary_ca_crt_start"); + +static void startWifi(void); +static void onWifiConnected(void); +static void onAppSettingsUpdate(void); +static void onMqttMessage(const char* msg); + +static SystemSettings* systemSettings = NULL; +static AppSettings* appSettings = NULL; +static WifiSettings wifiSettings; +static MqttSettings mqttSettings; + +static const MqTriggerHttpCallbacks httpCallbacks = { + .getRoot = rootHandler, + .getJs = jsHandler, + .getCss = cssHandler, + .getSysSetForm = sysFormHandler, + .getAppSetForm = appFormHandler, + .getSysSet = nxApiGetSystemSettings, + .postSysSet = nxApiUpdateSystemSettings, + .getAppSet = nxApiGetAppSettings, + .postAppSet = nxApiUpdateAppSettings +// .postCmd = nxApiHandleLedCmd +}; + +void app_main(void) +{ + nxInitStorage(); + + nxInitSystemSettings(nxStorageWrite, nxStorageRead); + nxInitAppSettings(nxStorageWrite, nxStorageRead, onAppSettingsUpdate); + + systemSettings = nxGetSystemSettings(); + appSettings = nxGetAppSettings(); + + nxSetWifiConnectedCallback(onWifiConnected); + startWifi(); +} + +// ----- + +static void startWifi(void) +{ + strcpy(systemSettings->wifiSsid, "cintra"); + strcpy(systemSettings->wifiPassword, "fffefdfcfb"); + systemSettings->useStaticAddr = true; + systemSettings->ip4addr[3] = 91; + + wifiSettings = (struct WifiSettings){ + .wname = systemSettings->wifiSsid, + .wpass = systemSettings->wifiPassword, + .devicePrefix = DEVICE_NAME_PREFIX, + .usePowerSave = &(systemSettings->wifiPowerSave), + .useStaticAddr = &(systemSettings->useStaticAddr), + .ip4addr = systemSettings->ip4addr, + .ip4gw = systemSettings->ip4gw, + .ip4mask = systemSettings->ip4mask, + .dns = systemSettings->dnsAddr + }; + + ESP_LOGI(TAG, "Initializing WiFi"); + nxInitWifi(&wifiSettings); +} + +static void onWifiConnected(void) +{ + nxInitSntpClient(SNTP_RETRIES, systemSettings->sntpAddr, systemSettings->tzEnv); + + strcpy(mqttSettings.brokerAddr, appSettings->mqttHost); + strcpy(mqttSettings.apiTopic, appSettings->mqttApiUri); + strcpy(mqttSettings.hbTopic, appSettings->mqttHbUri); + strcpy(mqttSettings.user, appSettings->mqttUser); + strcpy(mqttSettings.password, appSettings->mqttPassword); + mqttSettings.hbIntervalSec = appSettings->mqttHbIntervalSec; + mqttSettings.caCrt = appSettings->mqttUseTls ? ca_crt_start : NULL; + mqttSettings.messageCb = onMqttMessage; + + nxStartMqttClient(&mqttSettings); + + nxSetMqTriggerHttpCallbacks(&httpCallbacks); + nxStartMqTriggerHttpServer(); +} + +static void onAppSettingsUpdate(void) +{ + ESP_LOGI(TAG, "App settings updated"); +} + +static void onMqttMessage(const char* msg) +{ + ESP_LOGI(TAG, "MQTT MESSAGE RECEIVED: %s", msg); +} diff --git a/main/main.c b/main/main.c deleted file mode 100644 index 78db920..0000000 --- a/main/main.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "freertos/FreeRTOS.h" -#include "esp_system.h" - -#include "nx/firmware/Storage.h" -#include "nx/firmware/Wifi.h" -#include "nx/firmware/MqTriggerHttpServer.h" -#include "nx/software/nxSystemSettings.h" - -#include "esp_log.h" - -#include - -#define TAG "MAIN" - -static const char* DEVICE_NAME_PREFIX = "mqtrigger-"; - -static SystemSettings* systemSettings = NULL; -static WifiSettings wifiSettings; - -void app_main(void) -{ - nxInitStorage(); - - nxInitSystemSettings(nxStorageWrite, nxStorageRead, esp_restart); - ESP_LOGI(TAG, "System settings initialized"); - systemSettings = nxGetSystemSettings(); - - strcpy(systemSettings->wifiSsid, "cintra"); - strcpy(systemSettings->wifiPassword, "fffefdfcfb"); - systemSettings->useStaticAddr = true; - systemSettings->ip4addr[3] = 91; - - wifiSettings = (struct WifiSettings){ - .wname = systemSettings->wifiSsid, - .wpass = systemSettings->wifiPassword, - .devicePrefix = DEVICE_NAME_PREFIX, - .usePowerSave = &(systemSettings->wifiPowerSave), - .useStaticAddr = &(systemSettings->useStaticAddr), - .ip4addr = systemSettings->ip4addr, - .ip4gw = systemSettings->ip4gw, - .ip4mask = systemSettings->ip4mask - }; - - ESP_LOGI(TAG, "Initializing WiFi"); - nxInitWifi(&wifiSettings); - nxStartMqTriggerHttpServer(); -} - diff --git a/main/static/app.html b/main/static/app.html new file mode 100644 index 0000000..5fcb15a --- /dev/null +++ b/main/static/app.html @@ -0,0 +1,83 @@ +

Application settings

+ +

MQTT settings

+
+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ + NOTE: device reboot is required + +
+ +
+
+
+ + + +

Restore defaults

+
+ +

+ +

+
+ +
+
+
+ +

Reboot

+
+ +

+ +

+
diff --git a/main/static/ca.crt b/main/static/ca.crt new file mode 100644 index 0000000..b86b755 --- /dev/null +++ b/main/static/ca.crt @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDlzCCAn+gAwIBAgIUWURIxc42eG2pExKTzmZbH61aNK0wDQYJKoZIhvcNAQEL +BQAwWzELMAkGA1UEBhMCUEwxFDASBgNVBAgMC01hem93aWVja2llMREwDwYDVQQH +DAhXYXJzemF3YTEPMA0GA1UECgwGbml4bGFiMRIwEAYDVQQDDAluaXhsYWIuaW4w +HhcNMjIwNTE4MDkxNTM4WhcNNDIwNTEzMDkxNTM4WjBbMQswCQYDVQQGEwJQTDEU +MBIGA1UECAwLTWF6b3dpZWNraWUxETAPBgNVBAcMCFdhcnN6YXdhMQ8wDQYDVQQK +DAZuaXhsYWIxEjAQBgNVBAMMCW5peGxhYi5pbjCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAM1PrRlwzAi5Z6627dhCIIxrRf3f6m8QYRnfNfme1HRYyCYP +cZFDQDRIRkBjvBCeIOpU4caFtzJok/k8C523/pqMUzpBtFSCu4ASxRxy22xUR2pW +KVd76NTrm6PbkuKL6mtk5hOKqqAZSbZhwflmOKDhqb2GMDCvCFv/klSBe6IuX6Pk +oHFIwPntYRX58nwFMoTc65DGn9XKo5jik1F+g8pH9aNDRLW0mBRw77mAQuqvMLvG +8DNkKEREBvmuGJzU0uy91hN1EpKpGZ5Mn3OuuCMC6wucmyykCSDA12efBXJfKWGM +EHiG7SyJVJeLl6mHTk3aaIVloNk1yuvtzTfUwBsCAwEAAaNTMFEwHQYDVR0OBBYE +FGnHRrCf0gUfF5X5uFjKppU0sDkzMB8GA1UdIwQYMBaAFGnHRrCf0gUfF5X5uFjK +ppU0sDkzMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBADnQEVM2 +ovaGc3BEI2tnIurUSzEiG86gebS6OsK8w/uPhEHr/PCUpIDNEq0jFvenYi0WyuTG +pdQjdHe8cynqcprfxA+/gqzSQN17Ok8xKJSDcJ0ZV0awIMWRAoG18+HYcACQvHFN +56Ovkkvc0YVY8x6tLYTTTL2re7C73gT7Nsc7Kdvpmjj763DuoYlxLLaf1RCfEdtc +s+d9zKENZWOgj4xekPETZUFfxwPS3p39x1zUrJtld1L1cIhcBz8HawphrPyAl9Wl +K77J3blOxKmsxKJo95kpEiDss0Git066gqHFZjFSriLCTRds7oPK1URm0/5nbLG8 +l1xpAT+JDQIiU90= +-----END CERTIFICATE----- diff --git a/main/static/index.css b/main/static/index.css new file mode 100644 index 0000000..a158e99 --- /dev/null +++ b/main/static/index.css @@ -0,0 +1,2169 @@ +@charset "UTF-8"; +/* + Flavor name: Nord (mini-nord) + Author: tphecca (https://github.com/tphecca) + Maintainers: tphecca + mini.css version: v3.0.1 +*/ +/* + Browsers resets and base typography. +*/ +/* Core module CSS variable definitions */ +:root { + --fore-color: #2e3440; + --secondary-fore-color: #3b4252; + --back-color: #eceff4; + --secondary-back-color: #e5e9f0; + --blockquote-color: #d08770; + --pre-color: #b48ead; + --border-color: #d8dee9; + --secondary-border-color: #e5e9f0; + --heading-ratio: 1.19; + --universal-margin: 0.5rem; + --universal-padding: 0.5rem; + --universal-border-radius: 0.125rem; + --a-link-color: #88c0d0; + --a-visited-color: #5e81ac; +} + +html { + font-size: 16px; +} + +a, b, del, em, i, ins, q, span, strong, u { + font-size: 1em; +} + +html, * { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, sans-serif; + line-height: 1.5; + -webkit-text-size-adjust: 100%; +} + +* { + font-size: 1rem; +} + +body { + margin: 0; + color: var(--fore-color); + background: var(--back-color); +} + +details { + display: block; +} + +summary { + display: list-item; +} + +abbr[title] { + border-bottom: none; + text-decoration: underline dotted; +} + +input { + overflow: visible; +} + +img { + max-width: 100%; + height: auto; +} + +h1, h2, h3, h4, h5, h6 { + line-height: 1.2; + margin: calc(1.5 * var(--universal-margin)) var(--universal-margin); + font-weight: 500; +} + +h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { + color: var(--secondary-fore-color); + display: block; + margin-top: -0.25rem; +} + +h1 { + font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio)); +} + +h2 { + font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio)); +} + +h3 { + font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio)); +} + +h4 { + font-size: calc(1rem * var(--heading-ratio)); +} + +h5 { + font-size: 1rem; +} + +h6 { + font-size: calc(1rem / var(--heading-ratio)); +} + +p { + margin: var(--universal-margin); +} + +ol, ul { + margin: var(--universal-margin); + padding-left: calc(2 * var(--universal-margin)); +} + +b, strong { + font-weight: 700; +} + +hr { + box-sizing: content-box; + border: 0; + line-height: 1.25em; + margin: var(--universal-margin); + height: 0.0625rem; + background: linear-gradient(to right, transparent, var(--border-color) 20%, var(--border-color) 80%, transparent); +} + +blockquote { + display: block; + position: relative; + font-style: italic; + color: var(--secondary-fore-color); + margin: var(--universal-margin); + padding: calc(3 * var(--universal-padding)); + border: 0.0625rem solid var(--secondary-border-color); + border-left: 0.375rem solid var(--blockquote-color); + border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; +} + +blockquote:before { + position: absolute; + top: calc(0rem - var(--universal-padding)); + left: 0; + font-family: sans-serif; + font-size: 3rem; + font-weight: 700; + content: "\201c"; + color: var(--blockquote-color); +} + +blockquote[cite]:after { + font-style: normal; + font-size: 0.75em; + font-weight: 700; + content: "\a— " attr(cite); + white-space: pre; +} + +code, kbd, pre, samp { + font-family: Menlo, Consolas, monospace; + font-size: 0.85em; +} + +code { + background: var(--secondary-back-color); + border-radius: var(--universal-border-radius); + padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); +} + +kbd { + background: var(--fore-color); + color: var(--back-color); + border-radius: var(--universal-border-radius); + padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); +} + +pre { + overflow: auto; + background: var(--secondary-back-color); + padding: calc(1.5 * var(--universal-padding)); + margin: var(--universal-margin); + border: 0.0625rem solid var(--secondary-border-color); + border-left: 0.25rem solid var(--pre-color); + border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; +} + +sup, sub, code, kbd { + line-height: 0; + position: relative; + vertical-align: baseline; +} + +small, sup, sub, figcaption { + font-size: 0.75em; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +figure { + margin: var(--universal-margin); +} + +figcaption { + color: var(--secondary-fore-color); +} + +a { + text-decoration: none; +} + +a:link { + color: var(--a-link-color); +} + +a:visited { + color: var(--a-visited-color); +} + +a:hover, a:focus { + text-decoration: underline; +} + +/* + Definitions for the grid system, cards and containers. +*/ +.container { + margin: 0 auto; + padding: 0 calc(1.5 * var(--universal-padding)); +} + +.row { + box-sizing: border-box; + display: flex; + flex: 0 1 auto; + flex-flow: row wrap; +} + +.col-sm, +[class^='col-sm-'], +[class^='col-sm-offset-'], +.row[class*='cols-sm-'] > * { + box-sizing: border-box; + flex: 0 0 auto; + padding: 0 calc(var(--universal-padding) / 2); +} + +.col-sm, +.row.cols-sm > * { + max-width: 100%; + flex-grow: 1; + flex-basis: 0; +} + +.col-sm-1, +.row.cols-sm-1 > * { + max-width: 8.33333%; + flex-basis: 8.33333%; +} + +.col-sm-offset-0 { + margin-left: 0; +} + +.col-sm-2, +.row.cols-sm-2 > * { + max-width: 16.66667%; + flex-basis: 16.66667%; +} + +.col-sm-offset-1 { + margin-left: 8.33333%; +} + +.col-sm-3, +.row.cols-sm-3 > * { + max-width: 25%; + flex-basis: 25%; +} + +.col-sm-offset-2 { + margin-left: 16.66667%; +} + +.col-sm-4, +.row.cols-sm-4 > * { + max-width: 33.33333%; + flex-basis: 33.33333%; +} + +.col-sm-offset-3 { + margin-left: 25%; +} + +.col-sm-5, +.row.cols-sm-5 > * { + max-width: 41.66667%; + flex-basis: 41.66667%; +} + +.col-sm-offset-4 { + margin-left: 33.33333%; +} + +.col-sm-6, +.row.cols-sm-6 > * { + max-width: 50%; + flex-basis: 50%; +} + +.col-sm-offset-5 { + margin-left: 41.66667%; +} + +.col-sm-7, +.row.cols-sm-7 > * { + max-width: 58.33333%; + flex-basis: 58.33333%; +} + +.col-sm-offset-6 { + margin-left: 50%; +} + +.col-sm-8, +.row.cols-sm-8 > * { + max-width: 66.66667%; + flex-basis: 66.66667%; +} + +.col-sm-offset-7 { + margin-left: 58.33333%; +} + +.col-sm-9, +.row.cols-sm-9 > * { + max-width: 75%; + flex-basis: 75%; +} + +.col-sm-offset-8 { + margin-left: 66.66667%; +} + +.col-sm-10, +.row.cols-sm-10 > * { + max-width: 83.33333%; + flex-basis: 83.33333%; +} + +.col-sm-offset-9 { + margin-left: 75%; +} + +.col-sm-11, +.row.cols-sm-11 > * { + max-width: 91.66667%; + flex-basis: 91.66667%; +} + +.col-sm-offset-10 { + margin-left: 83.33333%; +} + +.col-sm-12, +.row.cols-sm-12 > * { + max-width: 100%; + flex-basis: 100%; +} + +.col-sm-offset-11 { + margin-left: 91.66667%; +} + +.col-sm-normal { + order: initial; +} + +.col-sm-first { + order: -999; +} + +.col-sm-last { + order: 999; +} + +@media screen and (min-width: 768px) { + .col-md, + [class^='col-md-'], + [class^='col-md-offset-'], + .row[class*='cols-md-'] > * { + box-sizing: border-box; + flex: 0 0 auto; + padding: 0 calc(var(--universal-padding) / 2); + } + .col-md, + .row.cols-md > * { + max-width: 100%; + flex-grow: 1; + flex-basis: 0; + } + .col-md-1, + .row.cols-md-1 > * { + max-width: 8.33333%; + flex-basis: 8.33333%; + } + .col-md-offset-0 { + margin-left: 0; + } + .col-md-2, + .row.cols-md-2 > * { + max-width: 16.66667%; + flex-basis: 16.66667%; + } + .col-md-offset-1 { + margin-left: 8.33333%; + } + .col-md-3, + .row.cols-md-3 > * { + max-width: 25%; + flex-basis: 25%; + } + .col-md-offset-2 { + margin-left: 16.66667%; + } + .col-md-4, + .row.cols-md-4 > * { + max-width: 33.33333%; + flex-basis: 33.33333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-5, + .row.cols-md-5 > * { + max-width: 41.66667%; + flex-basis: 41.66667%; + } + .col-md-offset-4 { + margin-left: 33.33333%; + } + .col-md-6, + .row.cols-md-6 > * { + max-width: 50%; + flex-basis: 50%; + } + .col-md-offset-5 { + margin-left: 41.66667%; + } + .col-md-7, + .row.cols-md-7 > * { + max-width: 58.33333%; + flex-basis: 58.33333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-8, + .row.cols-md-8 > * { + max-width: 66.66667%; + flex-basis: 66.66667%; + } + .col-md-offset-7 { + margin-left: 58.33333%; + } + .col-md-9, + .row.cols-md-9 > * { + max-width: 75%; + flex-basis: 75%; + } + .col-md-offset-8 { + margin-left: 66.66667%; + } + .col-md-10, + .row.cols-md-10 > * { + max-width: 83.33333%; + flex-basis: 83.33333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-11, + .row.cols-md-11 > * { + max-width: 91.66667%; + flex-basis: 91.66667%; + } + .col-md-offset-10 { + margin-left: 83.33333%; + } + .col-md-12, + .row.cols-md-12 > * { + max-width: 100%; + flex-basis: 100%; + } + .col-md-offset-11 { + margin-left: 91.66667%; + } + .col-md-normal { + order: initial; + } + .col-md-first { + order: -999; + } + .col-md-last { + order: 999; + } +} + +@media screen and (min-width: 1280px) { + .col-lg, + [class^='col-lg-'], + [class^='col-lg-offset-'], + .row[class*='cols-lg-'] > * { + box-sizing: border-box; + flex: 0 0 auto; + padding: 0 calc(var(--universal-padding) / 2); + } + .col-lg, + .row.cols-lg > * { + max-width: 100%; + flex-grow: 1; + flex-basis: 0; + } + .col-lg-1, + .row.cols-lg-1 > * { + max-width: 8.33333%; + flex-basis: 8.33333%; + } + .col-lg-offset-0 { + margin-left: 0; + } + .col-lg-2, + .row.cols-lg-2 > * { + max-width: 16.66667%; + flex-basis: 16.66667%; + } + .col-lg-offset-1 { + margin-left: 8.33333%; + } + .col-lg-3, + .row.cols-lg-3 > * { + max-width: 25%; + flex-basis: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66667%; + } + .col-lg-4, + .row.cols-lg-4 > * { + max-width: 33.33333%; + flex-basis: 33.33333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-5, + .row.cols-lg-5 > * { + max-width: 41.66667%; + flex-basis: 41.66667%; + } + .col-lg-offset-4 { + margin-left: 33.33333%; + } + .col-lg-6, + .row.cols-lg-6 > * { + max-width: 50%; + flex-basis: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66667%; + } + .col-lg-7, + .row.cols-lg-7 > * { + max-width: 58.33333%; + flex-basis: 58.33333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-8, + .row.cols-lg-8 > * { + max-width: 66.66667%; + flex-basis: 66.66667%; + } + .col-lg-offset-7 { + margin-left: 58.33333%; + } + .col-lg-9, + .row.cols-lg-9 > * { + max-width: 75%; + flex-basis: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66667%; + } + .col-lg-10, + .row.cols-lg-10 > * { + max-width: 83.33333%; + flex-basis: 83.33333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-11, + .row.cols-lg-11 > * { + max-width: 91.66667%; + flex-basis: 91.66667%; + } + .col-lg-offset-10 { + margin-left: 83.33333%; + } + .col-lg-12, + .row.cols-lg-12 > * { + max-width: 100%; + flex-basis: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66667%; + } + .col-lg-normal { + order: initial; + } + .col-lg-first { + order: -999; + } + .col-lg-last { + order: 999; + } +} + +/* Card component CSS variable definitions */ +:root { + --card-back-color: #eceff4; + --card-fore-color: #2e3440; + --card-border-color: #e5e9f0; +} + +.card { + display: flex; + flex-direction: column; + justify-content: space-between; + align-self: center; + position: relative; + width: 100%; + background: var(--card-back-color); + color: var(--card-fore-color); + border: 0.0625rem solid var(--card-border-color); + border-radius: var(--universal-border-radius); + margin: var(--universal-margin); + overflow: hidden; +} + +@media screen and (min-width: 320px) { + .card { + max-width: 320px; + } +} + +.card > .section { + background: var(--card-back-color); + color: var(--card-fore-color); + box-sizing: border-box; + margin: 0; + border: 0; + border-radius: 0; + border-bottom: 0.0625rem solid var(--card-border-color); + padding: var(--universal-padding); + width: 100%; +} + +.card > .section.media { + height: 200px; + padding: 0; + -o-object-fit: cover; + object-fit: cover; +} + +.card > .section:last-child { + border-bottom: 0; +} + +/* + Custom elements for card elements. +*/ +@media screen and (min-width: 240px) { + .card.small { + max-width: 240px; + } +} + +@media screen and (min-width: 480px) { + .card.large { + max-width: 480px; + } +} + +.card.fluid { + max-width: 100%; + width: auto; +} + +.card.warning { + --card-back-color: #ebcb8b; + --card-border-color: #d08770; +} + +.card.error { + --card-back-color: #bf616a; + --card-border-color: #434c5e; +} + +.card > .section.dark { + --card-back-color: #d8dee9; +} + +.card > .section.double-padded { + padding: calc(1.5 * var(--universal-padding)); +} + +/* + Definitions for forms and input elements. +*/ +/* Input_control module CSS variable definitions */ +:root { + --form-back-color: #e5e9f0; + --form-fore-color: #2e3440; + --form-border-color: #e5e9f0; + --input-back-color: #eceff4; + --input-fore-color: #2e3440; + --input-border-color: #e5e9f0; + --input-focus-color: #88c0d0; + --input-invalid-color: #bf616a; + --button-back-color: #e5e9f0; + --button-hover-back-color: #d8dee9; + --button-fore-color: #2e3440; + --button-border-color: transparent; + --button-hover-border-color: transparent; + --button-group-border-color: rgba(124, 124, 124, 0.54); +} + +form { + background: var(--form-back-color); + color: var(--form-fore-color); + border: 0.0625rem solid var(--form-border-color); + border-radius: var(--universal-border-radius); + margin: var(--universal-margin); + padding: calc(2 * var(--universal-padding)) var(--universal-padding); +} + +fieldset { + border: 0.0625rem solid var(--form-border-color); + border-radius: var(--universal-border-radius); + margin: calc(var(--universal-margin) / 4); + padding: var(--universal-padding); +} + +legend { + box-sizing: border-box; + display: table; + max-width: 100%; + white-space: normal; + font-weight: 700; + padding: calc(var(--universal-padding) / 2); +} + +label { + padding: calc(var(--universal-padding) / 2) var(--universal-padding); +} + +.input-group { + display: inline-block; +} + +.input-group.fluid { + display: flex; + align-items: center; + justify-content: center; +} + +.input-group.fluid > input { + max-width: 100%; + flex-grow: 1; + flex-basis: 0px; +} + +@media screen and (max-width: 767px) { + .input-group.fluid { + align-items: stretch; + flex-direction: column; + } +} + +.input-group.vertical { + display: flex; + align-items: stretch; + flex-direction: column; +} + +.input-group.vertical > input { + max-width: 100%; + flex-grow: 1; + flex-basis: 0px; +} + +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +input:not([type]), [type="text"], [type="email"], [type="number"], [type="search"], +[type="password"], [type="url"], [type="tel"], [type="checkbox"], [type="radio"], textarea, select { + box-sizing: border-box; + background: var(--input-back-color); + color: var(--input-fore-color); + border: 0.0625rem solid var(--input-border-color); + border-radius: var(--universal-border-radius); + margin: calc(var(--universal-margin) / 2); + padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); +} + +input:not([type="button"]):not([type="submit"]):not([type="reset"]):hover, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus, textarea:hover, textarea:focus, select:hover, select:focus { + border-color: var(--input-focus-color); + box-shadow: none; +} + +input:not([type="button"]):not([type="submit"]):not([type="reset"]):invalid, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus:invalid, textarea:invalid, textarea:focus:invalid, select:invalid, select:focus:invalid { + border-color: var(--input-invalid-color); + box-shadow: none; +} + +input:not([type="button"]):not([type="submit"]):not([type="reset"])[readonly], textarea[readonly], select[readonly] { + background: var(--secondary-back-color); +} + +select { + max-width: 100%; +} + +option { + overflow: hidden; + text-overflow: ellipsis; +} + +[type="checkbox"], [type="radio"] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + position: relative; + height: calc(1rem + var(--universal-padding) / 2); + width: calc(1rem + var(--universal-padding) / 2); + vertical-align: text-bottom; + padding: 0; + flex-basis: calc(1rem + var(--universal-padding) / 2) !important; + flex-grow: 0 !important; +} + +[type="checkbox"]:checked:before, [type="radio"]:checked:before { + position: absolute; +} + +[type="checkbox"]:checked:before { + content: '\2713'; + font-family: sans-serif; + font-size: calc(1rem + var(--universal-padding) / 2); + top: calc(0rem - var(--universal-padding)); + left: calc(var(--universal-padding) / 4); +} + +[type="radio"] { + border-radius: 100%; +} + +[type="radio"]:checked:before { + border-radius: 100%; + content: ''; + top: calc(0.0625rem + var(--universal-padding) / 2); + left: calc(0.0625rem + var(--universal-padding) / 2); + background: var(--input-fore-color); + width: 0.5rem; + height: 0.5rem; +} + +:placeholder-shown { + color: var(--input-fore-color); +} + +::-ms-placeholder { + color: var(--input-fore-color); + opacity: 0.54; +} + +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +button, html [type="button"], [type="reset"], [type="submit"] { + -webkit-appearance: button; +} + +button { + overflow: visible; + text-transform: none; +} + +button, [type="button"], [type="submit"], [type="reset"], +a.button, label.button, .button, +a[role="button"], label[role="button"], [role="button"] { + display: inline-block; + background: var(--button-back-color); + color: var(--button-fore-color); + border: 0.0625rem solid var(--button-border-color); + border-radius: var(--universal-border-radius); + padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); + margin: var(--universal-margin); + text-decoration: none; + cursor: pointer; + transition: background 0.3s; +} + +button:hover, button:focus, [type="button"]:hover, [type="button"]:focus, [type="submit"]:hover, [type="submit"]:focus, [type="reset"]:hover, [type="reset"]:focus, +a.button:hover, +a.button:focus, label.button:hover, label.button:focus, .button:hover, .button:focus, +a[role="button"]:hover, +a[role="button"]:focus, label[role="button"]:hover, label[role="button"]:focus, [role="button"]:hover, [role="button"]:focus { + background: var(--button-hover-back-color); + border-color: var(--button-hover-border-color); +} + +input:disabled, input[disabled], textarea:disabled, textarea[disabled], select:disabled, select[disabled], button:disabled, button[disabled], .button:disabled, .button[disabled], [role="button"]:disabled, [role="button"][disabled] { + cursor: not-allowed; + opacity: 0.75; +} + +.button-group { + display: flex; + border: 0.0625rem solid var(--button-group-border-color); + border-radius: var(--universal-border-radius); + margin: var(--universal-margin); +} + +.button-group > button, .button-group [type="button"], .button-group > [type="submit"], .button-group > [type="reset"], +.button-group > .button, .button-group > [role="button"] { + margin: 0; + max-width: 100%; + flex: 1 1 auto; + text-align: center; + border: 0; + border-radius: 0; + box-shadow: none; +} + +.button-group > :not(:first-child) { + border-left: 0.0625rem solid var(--button-group-border-color); +} + +@media screen and (max-width: 767px) { + .button-group { + flex-direction: column; + } + .button-group > :not(:first-child) { + border: 0; + border-top: 0.0625rem solid var(--button-group-border-color); + } +} + +/* + Custom elements for forms and input elements. +*/ +button.primary, [type="button"].primary, [type="submit"].primary, [type="reset"].primary, .button.primary, [role="button"].primary { + --button-back-color: #5e81ac; + --button-fore-color: #eceff4; +} + +button.primary:hover, button.primary:focus, [type="button"].primary:hover, [type="button"].primary:focus, [type="submit"].primary:hover, [type="submit"].primary:focus, [type="reset"].primary:hover, [type="reset"].primary:focus, .button.primary:hover, .button.primary:focus, [role="button"].primary:hover, [role="button"].primary:focus { + --button-hover-back-color: #5e81ac; +} + +button.secondary, [type="button"].secondary, [type="submit"].secondary, [type="reset"].secondary, .button.secondary, [role="button"].secondary { + --button-back-color: #bf616a; + --button-fore-color: #eceff4; +} + +button.secondary:hover, button.secondary:focus, [type="button"].secondary:hover, [type="button"].secondary:focus, [type="submit"].secondary:hover, [type="submit"].secondary:focus, [type="reset"].secondary:hover, [type="reset"].secondary:focus, .button.secondary:hover, .button.secondary:focus, [role="button"].secondary:hover, [role="button"].secondary:focus { + --button-hover-back-color: #bf616a; +} + +button.tertiary, [type="button"].tertiary, [type="submit"].tertiary, [type="reset"].tertiary, .button.tertiary, [role="button"].tertiary { + --button-back-color: #a3be8c; + --button-fore-color: #434c5e; +} + +button.tertiary:hover, button.tertiary:focus, [type="button"].tertiary:hover, [type="button"].tertiary:focus, [type="submit"].tertiary:hover, [type="submit"].tertiary:focus, [type="reset"].tertiary:hover, [type="reset"].tertiary:focus, .button.tertiary:hover, .button.tertiary:focus, [role="button"].tertiary:hover, [role="button"].tertiary:focus { + --button-hover-back-color: #a3be8c; +} + +button.inverse, [type="button"].inverse, [type="submit"].inverse, [type="reset"].inverse, .button.inverse, [role="button"].inverse { + --button-back-color: #3b4252; + --button-fore-color: #eceff4; +} + +button.inverse:hover, button.inverse:focus, [type="button"].inverse:hover, [type="button"].inverse:focus, [type="submit"].inverse:hover, [type="submit"].inverse:focus, [type="reset"].inverse:hover, [type="reset"].inverse:focus, .button.inverse:hover, .button.inverse:focus, [role="button"].inverse:hover, [role="button"].inverse:focus { + --button-hover-back-color: #2e3440; +} + +button.small, [type="button"].small, [type="submit"].small, [type="reset"].small, .button.small, [role="button"].small { + padding: calc(0.5 * var(--universal-padding)) calc(0.75 * var(--universal-padding)); + margin: var(--universal-margin); +} + +button.large, [type="button"].large, [type="submit"].large, [type="reset"].large, .button.large, [role="button"].large { + padding: calc(1.5 * var(--universal-padding)) calc(2 * var(--universal-padding)); + margin: var(--universal-margin); +} + +/* + Definitions for navigation elements. +*/ +/* Navigation module CSS variable definitions */ +:root { + --header-back-color: #eceff4; + --header-hover-back-color: #e5e9f0; + --header-fore-color: #3b4252; + --header-border-color: #e5e9f0; + --nav-back-color: #eceff4; + --nav-hover-back-color: #e5e9f0; + --nav-fore-color: #3b4252; + --nav-border-color: #e5e9f0; + --nav-link-color: #88c0d0; + --footer-fore-color: #3b4252; + --footer-back-color: #eceff4; + --footer-border-color: #e5e9f0; + --footer-link-color: #88c0d0; + --drawer-back-color: #eceff4; + --drawer-hover-back-color: #e5e9f0; + --drawer-border-color: #e5e9f0; + --drawer-close-color: #3b4252; +} + +header { + height: 3.1875rem; + background: var(--header-back-color); + color: var(--header-fore-color); + border-bottom: 0.0625rem solid var(--header-border-color); + padding: calc(var(--universal-padding) / 4) 0; + white-space: nowrap; + overflow-x: auto; + overflow-y: hidden; +} + +header.row { + box-sizing: content-box; +} + +header .logo { + color: var(--header-fore-color); + font-size: 1.75rem; + padding: var(--universal-padding) calc(2 * var(--universal-padding)); + text-decoration: none; +} + +header button, header [type="button"], header .button, header [role="button"] { + box-sizing: border-box; + position: relative; + top: calc(0rem - var(--universal-padding) / 4); + height: calc(3.1875rem + var(--universal-padding) / 2); + background: var(--header-back-color); + line-height: calc(3.1875rem - var(--universal-padding) * 1.5); + text-align: center; + color: var(--header-fore-color); + border: 0; + border-radius: 0; + margin: 0; + text-transform: uppercase; +} + +header button:hover, header button:focus, header [type="button"]:hover, header [type="button"]:focus, header .button:hover, header .button:focus, header [role="button"]:hover, header [role="button"]:focus { + background: var(--header-hover-back-color); +} + +nav { + background: var(--nav-back-color); + color: var(--nav-fore-color); + border: 0.0625rem solid var(--nav-border-color); + border-radius: var(--universal-border-radius); + margin: var(--universal-margin); +} + +nav * { + padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); +} + +nav a, nav a:visited { + display: block; + color: var(--nav-link-color); + border-radius: var(--universal-border-radius); + transition: background 0.3s; +} + +nav a:hover, nav a:focus, nav a:visited:hover, nav a:visited:focus { + text-decoration: none; + background: var(--nav-hover-back-color); +} + +nav .sublink-1 { + position: relative; + margin-left: calc(2 * var(--universal-padding)); +} + +nav .sublink-1:before { + position: absolute; + left: calc(var(--universal-padding) - 1 * var(--universal-padding)); + top: -0.0625rem; + content: ''; + height: 100%; + border: 0.0625rem solid var(--nav-border-color); + border-left: 0; +} + +nav .sublink-2 { + position: relative; + margin-left: calc(4 * var(--universal-padding)); +} + +nav .sublink-2:before { + position: absolute; + left: calc(var(--universal-padding) - 3 * var(--universal-padding)); + top: -0.0625rem; + content: ''; + height: 100%; + border: 0.0625rem solid var(--nav-border-color); + border-left: 0; +} + +footer { + background: var(--footer-back-color); + color: var(--footer-fore-color); + border-top: 0.0625rem solid var(--footer-border-color); + padding: calc(2 * var(--universal-padding)) var(--universal-padding); + font-size: 0.875rem; +} + +footer a, footer a:visited { + color: var(--footer-link-color); +} + +header.sticky { + position: -webkit-sticky; + position: sticky; + z-index: 1101; + top: 0; +} + +footer.sticky { + position: -webkit-sticky; + position: sticky; + z-index: 1101; + bottom: 0; +} + +.drawer-toggle:before { + display: inline-block; + position: relative; + vertical-align: bottom; + content: '\00a0\2261\00a0'; + font-family: sans-serif; + font-size: 1.5em; +} + +@media screen and (min-width: 768px) { + .drawer-toggle:not(.persistent) { + display: none; + } +} + +[type="checkbox"].drawer { + height: 1px; + width: 1px; + margin: -1px; + overflow: hidden; + position: absolute; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); +} + +[type="checkbox"].drawer + * { + display: block; + box-sizing: border-box; + position: fixed; + top: 0; + width: 320px; + height: 100vh; + overflow-y: auto; + background: var(--drawer-back-color); + border: 0.0625rem solid var(--drawer-border-color); + border-radius: 0; + margin: 0; + z-index: 1110; + right: -320px; + transition: right 0.3s; +} + +[type="checkbox"].drawer + * .drawer-close { + position: absolute; + top: var(--universal-margin); + right: var(--universal-margin); + z-index: 1111; + width: 2rem; + height: 2rem; + border-radius: var(--universal-border-radius); + padding: var(--universal-padding); + margin: 0; + cursor: pointer; + transition: background 0.3s; +} + +[type="checkbox"].drawer + * .drawer-close:before { + display: block; + content: '\00D7'; + color: var(--drawer-close-color); + position: relative; + font-family: sans-serif; + font-size: 2rem; + line-height: 1; + text-align: center; +} + +[type="checkbox"].drawer + * .drawer-close:hover, [type="checkbox"].drawer + * .drawer-close:focus { + background: var(--drawer-hover-back-color); +} + +@media screen and (max-width: 320px) { + [type="checkbox"].drawer + * { + width: 100%; + } +} + +[type="checkbox"].drawer:checked + * { + right: 0; +} + +@media screen and (min-width: 768px) { + [type="checkbox"].drawer:not(.persistent) + * { + position: static; + height: 100%; + z-index: 1100; + } + [type="checkbox"].drawer:not(.persistent) + * .drawer-close { + display: none; + } +} + +/* + Definitions for the responsive table component. +*/ +/* Table module CSS variable definitions. */ +:root { + --table-border-color: #d8dee9; + --table-border-separator-color: #434c5e; + --table-head-back-color: #e5e9f0; + --table-head-fore-color: #2e3440; + --table-body-back-color: #eceff4; + --table-body-fore-color: #2e3440; + --table-body-alt-back-color: #e5e9f0; +} + +table { + border-collapse: separate; + border-spacing: 0; + margin: 0; + display: flex; + flex: 0 1 auto; + flex-flow: row wrap; + padding: var(--universal-padding); + padding-top: 0; +} + +table caption { + font-size: 1.5rem; + margin: calc(2 * var(--universal-margin)) 0; + max-width: 100%; + flex: 0 0 100%; +} + +table thead, table tbody { + display: flex; + flex-flow: row wrap; + border: 0.0625rem solid var(--table-border-color); +} + +table thead { + z-index: 999; + border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0; + border-bottom: 0.0625rem solid var(--table-border-separator-color); +} + +table tbody { + border-top: 0; + margin-top: calc(0 - var(--universal-margin)); + border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); +} + +table tr { + display: flex; + padding: 0; +} + +table th, table td { + padding: calc(2 * var(--universal-padding)); +} + +table th { + text-align: left; + background: var(--table-head-back-color); + color: var(--table-head-fore-color); +} + +table td { + background: var(--table-body-back-color); + color: var(--table-body-fore-color); + border-top: 0.0625rem solid var(--table-border-color); +} + +table:not(.horizontal) { + overflow: auto; + max-height: 400px; +} + +table:not(.horizontal) thead, table:not(.horizontal) tbody { + max-width: 100%; + flex: 0 0 100%; +} + +table:not(.horizontal) tr { + flex-flow: row wrap; + flex: 0 0 100%; +} + +table:not(.horizontal) th, table:not(.horizontal) td { + flex: 1 0 0%; + overflow: hidden; + text-overflow: ellipsis; +} + +table:not(.horizontal) thead { + position: sticky; + top: 0; +} + +table:not(.horizontal) tbody tr:first-child td { + border-top: 0; +} + +table.horizontal { + border: 0; +} + +table.horizontal thead, table.horizontal tbody { + border: 0; + flex: .2 0 0; + flex-flow: row nowrap; +} + +table.horizontal tbody { + overflow: auto; + justify-content: space-between; + flex: .8 0 0; + margin-left: 0; + padding-bottom: calc(var(--universal-padding) / 4); +} + +table.horizontal tr { + flex-direction: column; + flex: 1 0 auto; +} + +table.horizontal th, table.horizontal td { + width: auto; + border: 0; + border-bottom: 0.0625rem solid var(--table-border-color); +} + +table.horizontal th:not(:first-child), table.horizontal td:not(:first-child) { + border-top: 0; +} + +table.horizontal th { + text-align: right; + border-left: 0.0625rem solid var(--table-border-color); + border-right: 0.0625rem solid var(--table-border-separator-color); +} + +table.horizontal thead tr:first-child { + padding-left: 0; +} + +table.horizontal th:first-child, table.horizontal td:first-child { + border-top: 0.0625rem solid var(--table-border-color); +} + +table.horizontal tbody tr:last-child td { + border-right: 0.0625rem solid var(--table-border-color); +} + +table.horizontal tbody tr:last-child td:first-child { + border-top-right-radius: 0.25rem; +} + +table.horizontal tbody tr:last-child td:last-child { + border-bottom-right-radius: 0.25rem; +} + +table.horizontal thead tr:first-child th:first-child { + border-top-left-radius: 0.25rem; +} + +table.horizontal thead tr:first-child th:last-child { + border-bottom-left-radius: 0.25rem; +} + +@media screen and (max-width: 767px) { + table, table.horizontal { + border-collapse: collapse; + border: 0; + width: 100%; + display: table; + } + table thead, table th, table.horizontal thead, table.horizontal th { + border: 0; + height: 1px; + width: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); + } + table tbody, table.horizontal tbody { + border: 0; + display: table-row-group; + } + table tr, table.horizontal tr { + display: block; + border: 0.0625rem solid var(--table-border-color); + border-radius: var(--universal-border-radius); + background: #fafafa; + padding: var(--universal-padding); + margin: var(--universal-margin); + margin-bottom: calc(2 * var(--universal-margin)); + } + table th, table td, table.horizontal th, table.horizontal td { + width: auto; + } + table td, table.horizontal td { + display: block; + border: 0; + text-align: right; + } + table td:before, table.horizontal td:before { + content: attr(data-label); + float: left; + font-weight: 600; + } + table th:first-child, table td:first-child, table.horizontal th:first-child, table.horizontal td:first-child { + border-top: 0; + } + table tbody tr:last-child td, table.horizontal tbody tr:last-child td { + border-right: 0; + } +} + +:root { + --table-body-alt-back-color: #e5e9f0; +} + +table.striped tr:nth-of-type(2n) > td { + background: var(--table-body-alt-back-color); +} + +@media screen and (max-width: 768px) { + table.striped tr:nth-of-type(2n) { + background: var(--table-body-alt-back-color); + } +} + +:root { + --table-body-hover-back-color: #88c0d0; +} + +table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td { + background: var(--table-body-hover-back-color); +} + +@media screen and (max-width: 768px) { + table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td { + background: var(--table-body-hover-back-color); + } +} + +/* + Definitions for contextual background elements, toasts and tooltips. +*/ +/* Contextual module CSS variable definitions */ +:root { + --mark-back-color: #5e81ac; + --mark-fore-color: #fafafa; +} + +mark { + background: var(--mark-back-color); + color: var(--mark-fore-color); + font-size: 0.95em; + line-height: 1em; + border-radius: var(--universal-border-radius); + padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); +} + +mark.inline-block { + display: inline-block; + font-size: 1em; + line-height: 1.5; + padding: calc(var(--universal-padding) / 2) var(--universal-padding); +} + +:root { + --toast-back-color: #2e3440; + --toast-fore-color: #eceff4; +} + +.toast { + position: fixed; + bottom: calc(var(--universal-margin) * 3); + left: 50%; + transform: translate(-50%, -50%); + z-index: 1111; + color: var(--toast-fore-color); + background: var(--toast-back-color); + border-radius: calc(var(--universal-border-radius) * 16); + padding: var(--universal-padding) calc(var(--universal-padding) * 3); +} + +:root { + --tooltip-back-color: #2e3440; + --tooltip-fore-color: #eceff4; +} + +.tooltip { + position: relative; + display: inline-block; +} + +.tooltip:before, .tooltip:after { + position: absolute; + opacity: 0; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); + transition: all 0.3s; + z-index: 1010; + left: 50%; +} + +.tooltip:not(.bottom):before, .tooltip:not(.bottom):after { + bottom: 75%; +} + +.tooltip.bottom:before, .tooltip.bottom:after { + top: 75%; +} + +.tooltip:hover:before, .tooltip:hover:after, .tooltip:focus:before, .tooltip:focus:after { + opacity: 1; + clip: auto; + -webkit-clip-path: inset(0%); + clip-path: inset(0%); +} + +.tooltip:before { + content: ''; + background: transparent; + border: var(--universal-margin) solid transparent; + left: calc(50% - var(--universal-margin)); +} + +.tooltip:not(.bottom):before { + border-top-color: #2e3440; +} + +.tooltip.bottom:before { + border-bottom-color: #2e3440; +} + +.tooltip:after { + content: attr(aria-label); + color: var(--tooltip-fore-color); + background: var(--tooltip-back-color); + border-radius: var(--universal-border-radius); + padding: var(--universal-padding); + white-space: nowrap; + transform: translateX(-50%); +} + +.tooltip:not(.bottom):after { + margin-bottom: calc(2 * var(--universal-margin)); +} + +.tooltip.bottom:after { + margin-top: calc(2 * var(--universal-margin)); +} + +:root { + --modal-overlay-color: rgba(0, 0, 0, 0.45); + --modal-close-color: #3b4252; + --modal-close-hover-color: #e5e9f0; +} + +[type="checkbox"].modal { + height: 1px; + width: 1px; + margin: -1px; + overflow: hidden; + position: absolute; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); +} + +[type="checkbox"].modal + div { + position: fixed; + top: 0; + left: 0; + display: none; + width: 100vw; + height: 100vh; + background: var(--modal-overlay-color); +} + +[type="checkbox"].modal + div .card { + margin: 0 auto; + max-height: 50vh; + overflow: auto; +} + +[type="checkbox"].modal + div .card .modal-close { + position: absolute; + top: 0; + right: 0; + width: 1.75rem; + height: 1.75rem; + border-radius: var(--universal-border-radius); + padding: var(--universal-padding); + margin: 0; + cursor: pointer; + transition: background 0.3s; +} + +[type="checkbox"].modal + div .card .modal-close:before { + display: block; + content: '\00D7'; + color: var(--modal-close-color); + position: relative; + font-family: sans-serif; + font-size: 1.75rem; + line-height: 1; + text-align: center; +} + +[type="checkbox"].modal + div .card .modal-close:hover, [type="checkbox"].modal + div .card .modal-close:focus { + background: var(--modal-close-hover-color); +} + +[type="checkbox"].modal:checked + div { + display: flex; + flex: 0 1 auto; + z-index: 1200; +} + +[type="checkbox"].modal:checked + div .card .modal-close { + z-index: 1211; +} + +:root { + --collapse-label-back-color: #e5e9f0; + --collapse-label-fore-color: #2e3440; + --collapse-label-hover-back-color: #e5e9f0; + --collapse-selected-label-back-color: #e5e9f0; + --collapse-border-color: #e5e9f0; + --collapse-content-back-color: #fafafa; + --collapse-selected-label-border-color: #88c0d0; +} + +.collapse { + width: calc(100% - 2 * var(--universal-margin)); + opacity: 1; + display: flex; + flex-direction: column; + margin: var(--universal-margin); + border-radius: var(--universal-border-radius); +} + +.collapse > [type="radio"], .collapse > [type="checkbox"] { + height: 1px; + width: 1px; + margin: -1px; + overflow: hidden; + position: absolute; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); +} + +.collapse > label { + flex-grow: 1; + display: inline-block; + height: 1.5rem; + cursor: pointer; + transition: background 0.3s; + color: var(--collapse-label-fore-color); + background: var(--collapse-label-back-color); + border: 0.0625rem solid var(--collapse-border-color); + padding: calc(1.5 * var(--universal-padding)); +} + +.collapse > label:hover, .collapse > label:focus { + background: var(--collapse-label-hover-back-color); +} + +.collapse > label + div { + flex-basis: auto; + height: 1px; + width: 1px; + margin: -1px; + overflow: hidden; + position: absolute; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); + transition: max-height 0.3s; + max-height: 1px; +} + +.collapse > :checked + label { + background: var(--collapse-selected-label-back-color); + border-bottom-color: var(--collapse-selected-label-border-color); +} + +.collapse > :checked + label + div { + box-sizing: border-box; + position: relative; + width: 100%; + height: auto; + overflow: auto; + margin: 0; + background: var(--collapse-content-back-color); + border: 0.0625rem solid var(--collapse-border-color); + border-top: 0; + padding: var(--universal-padding); + clip: auto; + -webkit-clip-path: inset(0%); + clip-path: inset(0%); + max-height: 400px; +} + +.collapse > label:not(:first-of-type) { + border-top: 0; +} + +.collapse > label:first-of-type { + border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0; +} + +.collapse > label:last-of-type:not(:first-of-type) { + border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); +} + +.collapse > label:last-of-type:first-of-type { + border-radius: var(--universal-border-radius); +} + +.collapse > :checked:last-of-type:not(:first-of-type) + label { + border-radius: 0; +} + +.collapse > :checked:last-of-type + label + div { + border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); +} + +/* + Custom elements for contextual background elements, toasts and tooltips. +*/ +mark.secondary { + --mark-back-color: #bf616a; +} + +mark.tertiary { + --mark-back-color: #a3be8c; +} + +mark.tag { + padding: calc(var(--universal-padding)/2) var(--universal-padding); + border-radius: 1em; +} + +/* + Definitions for progress elements and spinners. +*/ +/* Progess module CSS variable definitions */ +:root { + --progress-back-color: #e5e9f0; + --progress-fore-color: #434c5e; +} + +progress { + display: block; + vertical-align: baseline; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 0.75rem; + width: calc(100% - 2 * var(--universal-margin)); + margin: var(--universal-margin); + border: 0; + border-radius: calc(2 * var(--universal-border-radius)); + background: var(--progress-back-color); + color: var(--progress-fore-color); +} + +progress::-webkit-progress-value { + background: var(--progress-fore-color); + border-top-left-radius: calc(2 * var(--universal-border-radius)); + border-bottom-left-radius: calc(2 * var(--universal-border-radius)); +} + +progress::-webkit-progress-bar { + background: var(--progress-back-color); +} + +progress::-moz-progress-bar { + background: var(--progress-fore-color); + border-top-left-radius: calc(2 * var(--universal-border-radius)); + border-bottom-left-radius: calc(2 * var(--universal-border-radius)); +} + +progress[value="1000"]::-webkit-progress-value { + border-radius: calc(2 * var(--universal-border-radius)); +} + +progress[value="1000"]::-moz-progress-bar { + border-radius: calc(2 * var(--universal-border-radius)); +} + +progress.inline { + display: inline-block; + vertical-align: middle; + width: 60%; +} + +:root { + --spinner-back-color: #d8dee9; + --spinner-fore-color: #434c5e; +} + +@keyframes spinner-donut-anim { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +.spinner { + display: inline-block; + margin: var(--universal-margin); + border: 0.25rem solid var(--spinner-back-color); + border-left: 0.25rem solid var(--spinner-fore-color); + border-radius: 50%; + width: 1.25rem; + height: 1.25rem; + animation: spinner-donut-anim 1.2s linear infinite; +} + +/* + Custom elements for progress bars and spinners. +*/ +progress.primary { + --progress-fore-color: #5e81ac; +} + +progress.secondary { + --progress-fore-color: #bf616a; +} + +progress.tertiary { + --progress-fore-color: #a3be8c; +} + +.spinner.primary { + --spinner-fore-color: #5e81ac; +} + +.spinner.secondary { + --spinner-fore-color: #bf616a; +} + +.spinner.tertiary { + --spinner-fore-color: #a3be8c; +} + +/* + Definitions for icons - powered by Feather (https://feathericons.com/). +*/ +span[class^='icon-'] { + display: inline-block; + height: 1em; + width: 1em; + vertical-align: -0.125em; + background-size: contain; + margin: 0 calc(var(--universal-margin) / 4); +} + +span[class^='icon-'].secondary { + -webkit-filter: invert(25%); + filter: invert(25%); +} + +span[class^='icon-'].inverse { + -webkit-filter: invert(100%); + filter: invert(100%); +} + +span.icon-alert { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12' y2='16'%3E%3C/line%3E%3C/svg%3E"); +} + +span.icon-bookmark { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'%3E%3C/path%3E%3C/svg%3E"); +} + +span.icon-calendar { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); +} + +span.icon-credit { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='1' y1='10' x2='23' y2='10'%3E%3C/line%3E%3C/svg%3E"); +} + +span.icon-edit { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.66V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.34'%3E%3C/path%3E%3Cpolygon points='18 2 22 6 12 16 8 16 8 12 18 2'%3E%3C/polygon%3E%3C/svg%3E"); +} + +span.icon-link { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E"); +} + +span.icon-help { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'%3E%3C/path%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='17' x2='12' y2='17'%3E%3C/line%3E%3C/svg%3E"); +} + +span.icon-home { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'%3E%3C/path%3E%3Cpolyline points='9 22 9 12 15 12 15 22'%3E%3C/polyline%3E%3C/svg%3E"); +} + +span.icon-info { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='16' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='8' x2='12' y2='8'%3E%3C/line%3E%3C/svg%3E"); +} + +span.icon-lock { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E"); +} + +span.icon-mail { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'%3E%3C/path%3E%3Cpolyline points='22,6 12,13 2,6'%3E%3C/polyline%3E%3C/svg%3E"); +} + +span.icon-location { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'%3E%3C/path%3E%3Ccircle cx='12' cy='10' r='3'%3E%3C/circle%3E%3C/svg%3E"); +} + +span.icon-phone { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'%3E%3C/path%3E%3C/svg%3E"); +} + +span.icon-rss { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'%3E%3C/path%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'%3E%3C/path%3E%3Ccircle cx='5' cy='19' r='1'%3E%3C/circle%3E%3C/svg%3E"); +} + +span.icon-search { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); +} + +span.icon-settings { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E"); +} + +span.icon-share { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='3'%3E%3C/circle%3E%3Ccircle cx='6' cy='12' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='19' r='3'%3E%3C/circle%3E%3Cline x1='8.59' y1='13.51' x2='15.42' y2='17.49'%3E%3C/line%3E%3Cline x1='15.41' y1='6.51' x2='8.59' y2='10.49'%3E%3C/line%3E%3C/svg%3E"); +} + +span.icon-cart { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='21' r='1'%3E%3C/circle%3E%3Ccircle cx='20' cy='21' r='1'%3E%3C/circle%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6'%3E%3C/path%3E%3C/svg%3E"); +} + +span.icon-upload { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'%3E%3C/path%3E%3Cpolyline points='17 8 12 3 7 8'%3E%3C/polyline%3E%3Cline x1='12' y1='3' x2='12' y2='15'%3E%3C/line%3E%3C/svg%3E"); +} + +span.icon-user { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='12' cy='7' r='4'%3E%3C/circle%3E%3C/svg%3E"); +} + +/* + Definitions for utilities and helper classes. +*/ +/* Utility module CSS variable definitions */ +:root { + --generic-border-color: rgba(0, 0, 0, 0.3); + --generic-box-shadow: 0 0.25rem 0.25rem 0 rgba(0, 0, 0, 0.125), 0 0.125rem 0.125rem -0.125rem rgba(0, 0, 0, 0.125); +} + +.hidden { + display: none !important; +} + +.visually-hidden { + position: absolute !important; + width: 1px !important; + height: 1px !important; + margin: -1px !important; + border: 0 !important; + padding: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + overflow: hidden !important; +} + +.bordered { + border: 0.0625rem solid var(--generic-border-color) !important; +} + +.rounded { + border-radius: var(--universal-border-radius) !important; +} + +.circular { + border-radius: 50% !important; +} + +.shadowed { + box-shadow: var(--generic-box-shadow) !important; +} + +.responsive-margin { + margin: calc(var(--universal-margin) / 4) !important; +} + +@media screen and (min-width: 768px) { + .responsive-margin { + margin: calc(var(--universal-margin) / 2) !important; + } +} + +@media screen and (min-width: 1280px) { + .responsive-margin { + margin: var(--universal-margin) !important; + } +} + +.responsive-padding { + padding: calc(var(--universal-padding) / 4) !important; +} + +@media screen and (min-width: 768px) { + .responsive-padding { + padding: calc(var(--universal-padding) / 2) !important; + } +} + +@media screen and (min-width: 1280px) { + .responsive-padding { + padding: var(--universal-padding) !important; + } +} + +@media screen and (max-width: 767px) { + .hidden-sm { + display: none !important; + } +} + +@media screen and (min-width: 768px) and (max-width: 1279px) { + .hidden-md { + display: none !important; + } +} + +@media screen and (min-width: 1280px) { + .hidden-lg { + display: none !important; + } +} + +@media screen and (max-width: 767px) { + .visually-hidden-sm { + position: absolute !important; + width: 1px !important; + height: 1px !important; + margin: -1px !important; + border: 0 !important; + padding: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + overflow: hidden !important; + } +} + +@media screen and (min-width: 768px) and (max-width: 1279px) { + .visually-hidden-md { + position: absolute !important; + width: 1px !important; + height: 1px !important; + margin: -1px !important; + border: 0 !important; + padding: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + overflow: hidden !important; + } +} + +@media screen and (min-width: 1280px) { + .visually-hidden-lg { + position: absolute !important; + width: 1px !important; + height: 1px !important; + margin: -1px !important; + border: 0 !important; + padding: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + overflow: hidden !important; + } +} \ No newline at end of file diff --git a/main/static/index.html b/main/static/index.html new file mode 100644 index 0000000..830a059 --- /dev/null +++ b/main/static/index.html @@ -0,0 +1,48 @@ + + + + + + + + + + + + +
+
+ App + System + +
+
+ +
+
+ +
+

Loading

+

Loading content... Please make sure that JavaScript is enabled.

+
+ +

+
+
+ +
+
+

+ Copyright © Łukasz Chodyła 2022 +

+
+
+ + + + + + \ No newline at end of file diff --git a/main/static/index.js b/main/static/index.js new file mode 100644 index 0000000..768feb5 --- /dev/null +++ b/main/static/index.js @@ -0,0 +1,126 @@ +function ip2int(ip) { + return ip.split('.').reduce(function(ipInt, octet) { return (ipInt<<8) + parseInt(octet, 10)}, 0) >>> 0; +} + +function sendClickHandler(event) { + console.log("Sending form..."); + //console.debug(event); + let form = event.srcElement.form; + console.debug(form); + + let params = ''; + Array.from(form.elements).forEach(element => { + console.log(element); + console.log(element.name); + console.log(element.value); + + if (element.value) { //TODO: checkbox/radio + params += params ? '&' : ''; + + if (element.hasAttribute('data-ip32')) { + console.log("IPv4 32"); + params += element.name + '=' + ip2int(element.value); + } + else { + params += element.name + '=' + element.value; + } + } + + + }); + + console.log("params: " + params); + + postParams(form.getAttribute('action'), params); + console.log("Form sent"); +} + +function initFormSendButtons(form) { + const btns = form.querySelectorAll('.send'); + for (i = 0; i < btns.length; ++i) { + btns[i].addEventListener('click', sendClickHandler); + } +} + +function loadContent(url) { + let http = new XMLHttpRequest(); + http.open('GET', url, true); + + let element = document.getElementById('content'); + element.innerHTML = "LOADING..."; //TODO: add spinner + + //Send the proper header information along with the request + //http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); + + http.onreadystatechange = function () {//Call a function when the state changes. + if (http.readyState == 4 && http.status == 200) { + console.log("Content received"); + element.innerHTML = http.responseText; + loadValues(element); + initFormSendButtons(element); + } + } + http.send(); +} + +function loadValues(element) { + const forms = element.querySelectorAll('form'); + for (i = 0; i < forms.length; ++i) { + const srcUrl = forms[i].getAttribute('data-values-src'); + if (!srcUrl) { + continue; + } + console.log("Getting values from " + srcUrl); + + let http = new XMLHttpRequest(); + http.open('GET', srcUrl, true); + + //Send the proper header information along with the request + //http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); + + http.onreadystatechange = function () {//Call a function when the state changes. + if (http.readyState == 4 && http.status == 200) { + console.log("Values received: " + http.responseText); + let obj = JSON.parse(http.responseText); + if (obj) { + for (var key of Object.keys(obj)) { + console.log(key + " -> " + obj[key]) + let input = element.querySelector("[name='" + key + "'"); + if (input) { //TODO: checkbox/radio + input.value = obj[key]; + } + } + } + } + } + http.send(); + + } +} + +function postParams(url, params) { + var http = new XMLHttpRequest(); + http.open('POST', url, true); + //Send the proper header information along with the request + http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); + + http.onreadystatechange = function () {//Call a function when the state changes. + if (http.readyState == 4 && http.status == 200) { + alert(http.responseText); + } + } + http.send(params); +} + +function navClickHandler(event) { + console.log('Button Clicked'); + console.log('Destination: ' + this.getAttribute('data-dst')); + loadContent(this.getAttribute('data-dst')); +} + +function initNavButtons() { + const btns = document.querySelectorAll('.nav-btn'); + for (i = 0; i < btns.length; ++i) { + btns[i].addEventListener('click', navClickHandler); + } +} \ No newline at end of file diff --git a/main/static/min/app.html b/main/static/min/app.html new file mode 100644 index 0000000..4f715c8 --- /dev/null +++ b/main/static/min/app.html @@ -0,0 +1,10 @@ +

Application settings

MQTT settings

NOTE: device reboot is required

Restore defaults


Reboot

\ No newline at end of file diff --git a/main/static/min/index.css b/main/static/min/index.css new file mode 100644 index 0000000..3a8c646 --- /dev/null +++ b/main/static/min/index.css @@ -0,0 +1 @@ +@charset "UTF-8";:root{--fore-color: #2e3440;--secondary-fore-color: #3b4252;--back-color: #eceff4;--secondary-back-color: #e5e9f0;--blockquote-color: #d08770;--pre-color: #b48ead;--border-color: #d8dee9;--secondary-border-color: #e5e9f0;--heading-ratio: 1.19;--universal-margin: 0.5rem;--universal-padding: 0.5rem;--universal-border-radius: 0.125rem;--a-link-color: #88c0d0;--a-visited-color: #5e81ac}html{font-size:16px}a,b,del,em,i,ins,q,span,strong,u{font-size:1em}html,*{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Ubuntu,helvetica neue,Helvetica,sans-serif;line-height:1.5;-webkit-text-size-adjust:100%}*{font-size:1rem}body{margin:0;color:var(--fore-color);background:var(--back-color)}details{display:block}summary{display:list-item}abbr[title]{border-bottom:none;text-decoration:underline dotted}input{overflow:visible}img{max-width:100%;height:auto}h1,h2,h3,h4,h5,h6{line-height:1.2;margin:calc(1.5 * var(--universal-margin))var(--universal-margin);font-weight:500}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:var(--secondary-fore-color);display:block;margin-top:-.25rem}h1{font-size:calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio))}h2{font-size:calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio))}h3{font-size:calc(1rem * var(--heading-ratio) * var(--heading-ratio))}h4{font-size:calc(1rem * var(--heading-ratio))}h5{font-size:1rem}h6{font-size:calc(1rem/var(--heading-ratio))}p{margin:var(--universal-margin)}ol,ul{margin:var(--universal-margin);padding-left:calc(2 * var(--universal-margin))}b,strong{font-weight:700}hr{box-sizing:content-box;border:0;line-height:1.25em;margin:var(--universal-margin);height:.0625rem;background:linear-gradient(to right,transparent,var(--border-color) 20%,var(--border-color) 80%,transparent)}blockquote{display:block;position:relative;font-style:italic;color:var(--secondary-fore-color);margin:var(--universal-margin);padding:calc(3 * var(--universal-padding));border:.0625rem solid var(--secondary-border-color);border-left:.375rem solid var(--blockquote-color);border-radius:0 var(--universal-border-radius)var(--universal-border-radius)0}blockquote:before{position:absolute;top:calc(0 - var(--universal-padding));left:0;font-family:sans-serif;font-size:3rem;font-weight:700;content:"\201c";color:var(--blockquote-color)}blockquote[cite]:after{font-style:normal;font-size:.75em;font-weight:700;content:"\a— " attr(cite);white-space:pre}code,kbd,pre,samp{font-family:Menlo,Consolas,monospace;font-size:.85em}code{background:var(--secondary-back-color);border-radius:var(--universal-border-radius);padding:calc(var(--universal-padding)/4)calc(var(--universal-padding)/2)}kbd{background:var(--fore-color);color:var(--back-color);border-radius:var(--universal-border-radius);padding:calc(var(--universal-padding)/4)calc(var(--universal-padding)/2)}pre{overflow:auto;background:var(--secondary-back-color);padding:calc(1.5 * var(--universal-padding));margin:var(--universal-margin);border:.0625rem solid var(--secondary-border-color);border-left:.25rem solid var(--pre-color);border-radius:0 var(--universal-border-radius)var(--universal-border-radius)0}sup,sub,code,kbd{line-height:0;position:relative;vertical-align:baseline}small,sup,sub,figcaption{font-size:.75em}sup{top:-.5em}sub{bottom:-.25em}figure{margin:var(--universal-margin)}figcaption{color:var(--secondary-fore-color)}a{text-decoration:none}a:link{color:var(--a-link-color)}a:visited{color:var(--a-visited-color)}a:hover,a:focus{text-decoration:underline}.container{margin:0 auto;padding:0 calc(1.5 * var(--universal-padding))}.row{box-sizing:border-box;display:flex;flex:0 1;flex-flow:row wrap}.col-sm,[class^=col-sm-],[class^=col-sm-offset-],.row[class*=cols-sm-]>*{box-sizing:border-box;flex:0 0;padding:0 calc(var(--universal-padding)/2)}.col-sm,.row.cols-sm>*{max-width:100%;flex-grow:1;flex-basis:0}.col-sm-1,.row.cols-sm-1>*{max-width:8.33333%;flex-basis:8.33333%}.col-sm-offset-0{margin-left:0}.col-sm-2,.row.cols-sm-2>*{max-width:16.66667%;flex-basis:16.66667%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-3,.row.cols-sm-3>*{max-width:25%;flex-basis:25%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-4,.row.cols-sm-4>*{max-width:33.33333%;flex-basis:33.33333%}.col-sm-offset-3{margin-left:25%}.col-sm-5,.row.cols-sm-5>*{max-width:41.66667%;flex-basis:41.66667%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-6,.row.cols-sm-6>*{max-width:50%;flex-basis:50%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-7,.row.cols-sm-7>*{max-width:58.33333%;flex-basis:58.33333%}.col-sm-offset-6{margin-left:50%}.col-sm-8,.row.cols-sm-8>*{max-width:66.66667%;flex-basis:66.66667%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-9,.row.cols-sm-9>*{max-width:75%;flex-basis:75%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-10,.row.cols-sm-10>*{max-width:83.33333%;flex-basis:83.33333%}.col-sm-offset-9{margin-left:75%}.col-sm-11,.row.cols-sm-11>*{max-width:91.66667%;flex-basis:91.66667%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-12,.row.cols-sm-12>*{max-width:100%;flex-basis:100%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-normal{order:0}.col-sm-first{order:-999}.col-sm-last{order:999}@media screen and (min-width:768px){.col-md,[class^=col-md-],[class^=col-md-offset-],.row[class*=cols-md-]>*{box-sizing:border-box;flex:0 0;padding:0 calc(var(--universal-padding)/2)}.col-md,.row.cols-md>*{max-width:100%;flex-grow:1;flex-basis:0}.col-md-1,.row.cols-md-1>*{max-width:8.33333%;flex-basis:8.33333%}.col-md-offset-0{margin-left:0}.col-md-2,.row.cols-md-2>*{max-width:16.66667%;flex-basis:16.66667%}.col-md-offset-1{margin-left:8.33333%}.col-md-3,.row.cols-md-3>*{max-width:25%;flex-basis:25%}.col-md-offset-2{margin-left:16.66667%}.col-md-4,.row.cols-md-4>*{max-width:33.33333%;flex-basis:33.33333%}.col-md-offset-3{margin-left:25%}.col-md-5,.row.cols-md-5>*{max-width:41.66667%;flex-basis:41.66667%}.col-md-offset-4{margin-left:33.33333%}.col-md-6,.row.cols-md-6>*{max-width:50%;flex-basis:50%}.col-md-offset-5{margin-left:41.66667%}.col-md-7,.row.cols-md-7>*{max-width:58.33333%;flex-basis:58.33333%}.col-md-offset-6{margin-left:50%}.col-md-8,.row.cols-md-8>*{max-width:66.66667%;flex-basis:66.66667%}.col-md-offset-7{margin-left:58.33333%}.col-md-9,.row.cols-md-9>*{max-width:75%;flex-basis:75%}.col-md-offset-8{margin-left:66.66667%}.col-md-10,.row.cols-md-10>*{max-width:83.33333%;flex-basis:83.33333%}.col-md-offset-9{margin-left:75%}.col-md-11,.row.cols-md-11>*{max-width:91.66667%;flex-basis:91.66667%}.col-md-offset-10{margin-left:83.33333%}.col-md-12,.row.cols-md-12>*{max-width:100%;flex-basis:100%}.col-md-offset-11{margin-left:91.66667%}.col-md-normal{order:0}.col-md-first{order:-999}.col-md-last{order:999}}@media screen and (min-width:1280px){.col-lg,[class^=col-lg-],[class^=col-lg-offset-],.row[class*=cols-lg-]>*{box-sizing:border-box;flex:0 0;padding:0 calc(var(--universal-padding)/2)}.col-lg,.row.cols-lg>*{max-width:100%;flex-grow:1;flex-basis:0}.col-lg-1,.row.cols-lg-1>*{max-width:8.33333%;flex-basis:8.33333%}.col-lg-offset-0{margin-left:0}.col-lg-2,.row.cols-lg-2>*{max-width:16.66667%;flex-basis:16.66667%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-3,.row.cols-lg-3>*{max-width:25%;flex-basis:25%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-4,.row.cols-lg-4>*{max-width:33.33333%;flex-basis:33.33333%}.col-lg-offset-3{margin-left:25%}.col-lg-5,.row.cols-lg-5>*{max-width:41.66667%;flex-basis:41.66667%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-6,.row.cols-lg-6>*{max-width:50%;flex-basis:50%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-7,.row.cols-lg-7>*{max-width:58.33333%;flex-basis:58.33333%}.col-lg-offset-6{margin-left:50%}.col-lg-8,.row.cols-lg-8>*{max-width:66.66667%;flex-basis:66.66667%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-9,.row.cols-lg-9>*{max-width:75%;flex-basis:75%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-10,.row.cols-lg-10>*{max-width:83.33333%;flex-basis:83.33333%}.col-lg-offset-9{margin-left:75%}.col-lg-11,.row.cols-lg-11>*{max-width:91.66667%;flex-basis:91.66667%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-12,.row.cols-lg-12>*{max-width:100%;flex-basis:100%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-normal{order:0}.col-lg-first{order:-999}.col-lg-last{order:999}}:root{--card-back-color: #eceff4;--card-fore-color: #2e3440;--card-border-color: #e5e9f0}.card{display:flex;flex-direction:column;justify-content:space-between;align-self:center;position:relative;width:100%;background:var(--card-back-color);color:var(--card-fore-color);border:.0625rem solid var(--card-border-color);border-radius:var(--universal-border-radius);margin:var(--universal-margin);overflow:hidden}@media screen and (min-width:320px){.card{max-width:320px}}.card>.section{background:var(--card-back-color);color:var(--card-fore-color);box-sizing:border-box;margin:0;border:0;border-radius:0;border-bottom:.0625rem solid var(--card-border-color);padding:var(--universal-padding);width:100%}.card>.section.media{height:200px;padding:0;-o-object-fit:cover;object-fit:cover}.card>.section:last-child{border-bottom:0}@media screen and (min-width:240px){.card.small{max-width:240px}}@media screen and (min-width:480px){.card.large{max-width:480px}}.card.fluid{max-width:100%;width:auto}.card.warning{--card-back-color: #ebcb8b;--card-border-color: #d08770}.card.error{--card-back-color: #bf616a;--card-border-color: #434c5e}.card>.section.dark{--card-back-color: #d8dee9}.card>.section.double-padded{padding:calc(1.5 * var(--universal-padding))}:root{--form-back-color: #e5e9f0;--form-fore-color: #2e3440;--form-border-color: #e5e9f0;--input-back-color: #eceff4;--input-fore-color: #2e3440;--input-border-color: #e5e9f0;--input-focus-color: #88c0d0;--input-invalid-color: #bf616a;--button-back-color: #e5e9f0;--button-hover-back-color: #d8dee9;--button-fore-color: #2e3440;--button-border-color: transparent;--button-hover-border-color: transparent;--button-group-border-color: rgba(124, 124, 124, 0.54)}form{background:var(--form-back-color);color:var(--form-fore-color);border:.0625rem solid var(--form-border-color);border-radius:var(--universal-border-radius);margin:var(--universal-margin);padding:calc(2 * var(--universal-padding))var(--universal-padding)}fieldset{border:.0625rem solid var(--form-border-color);border-radius:var(--universal-border-radius);margin:calc(var(--universal-margin)/4);padding:var(--universal-padding)}legend{box-sizing:border-box;display:table;max-width:100%;white-space:normal;font-weight:700;padding:calc(var(--universal-padding)/2)}label{padding:calc(var(--universal-padding)/2)var(--universal-padding)}.input-group{display:inline-block}.input-group.fluid{display:flex;align-items:center;justify-content:center}.input-group.fluid>input{max-width:100%;flex-grow:1;flex-basis:0}@media screen and (max-width:767px){.input-group.fluid{align-items:stretch;flex-direction:column}}.input-group.vertical{display:flex;align-items:stretch;flex-direction:column}.input-group.vertical>input{max-width:100%;flex-grow:1;flex-basis:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:not([type]),[type=text],[type=email],[type=number],[type=search],[type=password],[type=url],[type=tel],[type=checkbox],[type=radio],textarea,select{box-sizing:border-box;background:var(--input-back-color);color:var(--input-fore-color);border:.0625rem solid var(--input-border-color);border-radius:var(--universal-border-radius);margin:calc(var(--universal-margin)/2);padding:var(--universal-padding)calc(1.5 * var(--universal-padding))}input:not([type=button]):not([type=submit]):not([type=reset]):hover,input:not([type=button]):not([type=submit]):not([type=reset]):focus,textarea:hover,textarea:focus,select:hover,select:focus{border-color:var(--input-focus-color);box-shadow:0 0}input:not([type=button]):not([type=submit]):not([type=reset]):invalid,input:not([type=button]):not([type=submit]):not([type=reset]):focus:invalid,textarea:invalid,textarea:focus:invalid,select:invalid,select:focus:invalid{border-color:var(--input-invalid-color);box-shadow:0 0}input:not([type=button]):not([type=submit]):not([type=reset])[readonly],textarea[readonly],select[readonly]{background:var(--secondary-back-color)}select{max-width:100%}option{overflow:hidden;text-overflow:ellipsis}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;height:calc(1rem + var(--universal-padding)/2);width:calc(1rem + var(--universal-padding)/2);vertical-align:text-bottom;padding:0;flex-basis:calc(1rem + var(--universal-padding)/2)!important;flex-grow:0!important}[type=checkbox]:checked:before,[type=radio]:checked:before{position:absolute}[type=checkbox]:checked:before{content:'\2713';font-family:sans-serif;font-size:calc(1rem + var(--universal-padding)/2);top:calc(0 - var(--universal-padding));left:calc(var(--universal-padding)/4)}[type=radio]{border-radius:100%}[type=radio]:checked:before{border-radius:100%;content:'';top:calc(.0625rem + var(--universal-padding)/2);left:calc(.0625rem + var(--universal-padding)/2);background:var(--input-fore-color);width:.5rem;height:.5rem}:placeholder-shown{color:var(--input-fore-color)}::-ms-placeholder{color:var(--input-fore-color);opacity:.54}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button{overflow:visible;text-transform:none}button,[type=button],[type=submit],[type=reset],a.button,label.button,.button,a[role=button],label[role=button],[role=button]{display:inline-block;background:var(--button-back-color);color:var(--button-fore-color);border:.0625rem solid var(--button-border-color);border-radius:var(--universal-border-radius);padding:var(--universal-padding)calc(1.5 * var(--universal-padding));margin:var(--universal-margin);text-decoration:none;cursor:pointer;transition:background .3s}button:hover,button:focus,[type=button]:hover,[type=button]:focus,[type=submit]:hover,[type=submit]:focus,[type=reset]:hover,[type=reset]:focus,a.button:hover,a.button:focus,label.button:hover,label.button:focus,.button:hover,.button:focus,a[role=button]:hover,a[role=button]:focus,label[role=button]:hover,label[role=button]:focus,[role=button]:hover,[role=button]:focus{background:var(--button-hover-back-color);border-color:var(--button-hover-border-color)}input:disabled,input[disabled],textarea:disabled,textarea[disabled],select:disabled,select[disabled],button:disabled,button[disabled],.button:disabled,.button[disabled],[role=button]:disabled,[role=button][disabled]{cursor:not-allowed;opacity:.75}.button-group{display:flex;border:.0625rem solid var(--button-group-border-color);border-radius:var(--universal-border-radius);margin:var(--universal-margin)}.button-group>button,.button-group [type=button],.button-group>[type=submit],.button-group>[type=reset],.button-group>.button,.button-group>[role=button]{margin:0;max-width:100%;flex:1 1;text-align:center;border:0;border-radius:0;box-shadow:0 0}.button-group>:not(:first-child){border-left:.0625rem solid var(--button-group-border-color)}@media screen and (max-width:767px){.button-group{flex-direction:column}.button-group>:not(:first-child){border:0;border-top:.0625rem solid var(--button-group-border-color)}}button.primary,[type=button].primary,[type=submit].primary,[type=reset].primary,.button.primary,[role=button].primary{--button-back-color: #5e81ac;--button-fore-color: #eceff4}button.primary:hover,button.primary:focus,[type=button].primary:hover,[type=button].primary:focus,[type=submit].primary:hover,[type=submit].primary:focus,[type=reset].primary:hover,[type=reset].primary:focus,.button.primary:hover,.button.primary:focus,[role=button].primary:hover,[role=button].primary:focus{--button-hover-back-color: #5e81ac}button.secondary,[type=button].secondary,[type=submit].secondary,[type=reset].secondary,.button.secondary,[role=button].secondary{--button-back-color: #bf616a;--button-fore-color: #eceff4}button.secondary:hover,button.secondary:focus,[type=button].secondary:hover,[type=button].secondary:focus,[type=submit].secondary:hover,[type=submit].secondary:focus,[type=reset].secondary:hover,[type=reset].secondary:focus,.button.secondary:hover,.button.secondary:focus,[role=button].secondary:hover,[role=button].secondary:focus{--button-hover-back-color: #bf616a}button.tertiary,[type=button].tertiary,[type=submit].tertiary,[type=reset].tertiary,.button.tertiary,[role=button].tertiary{--button-back-color: #a3be8c;--button-fore-color: #434c5e}button.tertiary:hover,button.tertiary:focus,[type=button].tertiary:hover,[type=button].tertiary:focus,[type=submit].tertiary:hover,[type=submit].tertiary:focus,[type=reset].tertiary:hover,[type=reset].tertiary:focus,.button.tertiary:hover,.button.tertiary:focus,[role=button].tertiary:hover,[role=button].tertiary:focus{--button-hover-back-color: #a3be8c}button.inverse,[type=button].inverse,[type=submit].inverse,[type=reset].inverse,.button.inverse,[role=button].inverse{--button-back-color: #3b4252;--button-fore-color: #eceff4}button.inverse:hover,button.inverse:focus,[type=button].inverse:hover,[type=button].inverse:focus,[type=submit].inverse:hover,[type=submit].inverse:focus,[type=reset].inverse:hover,[type=reset].inverse:focus,.button.inverse:hover,.button.inverse:focus,[role=button].inverse:hover,[role=button].inverse:focus{--button-hover-back-color: #2e3440}button.small,[type=button].small,[type=submit].small,[type=reset].small,.button.small,[role=button].small{padding:calc(.5 * var(--universal-padding))calc(.75 * var(--universal-padding));margin:var(--universal-margin)}button.large,[type=button].large,[type=submit].large,[type=reset].large,.button.large,[role=button].large{padding:calc(1.5 * var(--universal-padding))calc(2 * var(--universal-padding));margin:var(--universal-margin)}:root{--header-back-color: #eceff4;--header-hover-back-color: #e5e9f0;--header-fore-color: #3b4252;--header-border-color: #e5e9f0;--nav-back-color: #eceff4;--nav-hover-back-color: #e5e9f0;--nav-fore-color: #3b4252;--nav-border-color: #e5e9f0;--nav-link-color: #88c0d0;--footer-fore-color: #3b4252;--footer-back-color: #eceff4;--footer-border-color: #e5e9f0;--footer-link-color: #88c0d0;--drawer-back-color: #eceff4;--drawer-hover-back-color: #e5e9f0;--drawer-border-color: #e5e9f0;--drawer-close-color: #3b4252}header{height:3.1875rem;background:var(--header-back-color);color:var(--header-fore-color);border-bottom:.0625rem solid var(--header-border-color);padding:calc(var(--universal-padding)/4)0;white-space:nowrap;overflow-x:auto;overflow-y:hidden}header.row{box-sizing:content-box}header .logo{color:var(--header-fore-color);font-size:1.75rem;padding:var(--universal-padding)calc(2 * var(--universal-padding));text-decoration:none}header button,header [type=button],header .button,header [role=button]{box-sizing:border-box;position:relative;top:calc(0 - var(--universal-padding)/4);height:calc(3.1875rem + var(--universal-padding)/2);background:var(--header-back-color);line-height:calc(3.1875rem - var(--universal-padding) * 1.5);text-align:center;color:var(--header-fore-color);border:0;border-radius:0;margin:0;text-transform:uppercase}header button:hover,header button:focus,header [type=button]:hover,header [type=button]:focus,header .button:hover,header .button:focus,header [role=button]:hover,header [role=button]:focus{background:var(--header-hover-back-color)}nav{background:var(--nav-back-color);color:var(--nav-fore-color);border:.0625rem solid var(--nav-border-color);border-radius:var(--universal-border-radius);margin:var(--universal-margin)}nav *{padding:var(--universal-padding)calc(1.5 * var(--universal-padding))}nav a,nav a:visited{display:block;color:var(--nav-link-color);border-radius:var(--universal-border-radius);transition:background .3s}nav a:hover,nav a:focus,nav a:visited:hover,nav a:visited:focus{text-decoration:none;background:var(--nav-hover-back-color)}nav .sublink-1{position:relative;margin-left:calc(2 * var(--universal-padding))}nav .sublink-1:before{position:absolute;left:calc(var(--universal-padding) - 1 * var(--universal-padding));top:-.0625rem;content:'';height:100%;border:.0625rem solid var(--nav-border-color);border-left:0}nav .sublink-2{position:relative;margin-left:calc(4 * var(--universal-padding))}nav .sublink-2:before{position:absolute;left:calc(var(--universal-padding) - 3 * var(--universal-padding));top:-.0625rem;content:'';height:100%;border:.0625rem solid var(--nav-border-color);border-left:0}footer{background:var(--footer-back-color);color:var(--footer-fore-color);border-top:.0625rem solid var(--footer-border-color);padding:calc(2 * var(--universal-padding))var(--universal-padding);font-size:.875rem}footer a,footer a:visited{color:var(--footer-link-color)}header.sticky{position:-webkit-sticky;position:sticky;z-index:1101;top:0}footer.sticky{position:-webkit-sticky;position:sticky;z-index:1101;bottom:0}.drawer-toggle:before{display:inline-block;position:relative;vertical-align:bottom;content:'\00a0\2261\00a0';font-family:sans-serif;font-size:1.5em}@media screen and (min-width:768px){.drawer-toggle:not(.persistent){display:none}}[type=checkbox].drawer{height:1px;width:1px;margin:-1px;overflow:hidden;position:absolute;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%)}[type=checkbox].drawer+*{display:block;box-sizing:border-box;position:fixed;top:0;width:320px;height:100vh;overflow-y:auto;background:var(--drawer-back-color);border:.0625rem solid var(--drawer-border-color);border-radius:0;margin:0;z-index:1110;right:-320px;transition:right .3s}[type=checkbox].drawer+* .drawer-close{position:absolute;top:var(--universal-margin);right:var(--universal-margin);z-index:1111;width:2rem;height:2rem;border-radius:var(--universal-border-radius);padding:var(--universal-padding);margin:0;cursor:pointer;transition:background .3s}[type=checkbox].drawer+* .drawer-close:before{display:block;content:'\00D7';color:var(--drawer-close-color);position:relative;font-family:sans-serif;font-size:2rem;line-height:1;text-align:center}[type=checkbox].drawer+* .drawer-close:hover,[type=checkbox].drawer+* .drawer-close:focus{background:var(--drawer-hover-back-color)}@media screen and (max-width:320px){[type=checkbox].drawer+*{width:100%}}[type=checkbox].drawer:checked+*{right:0}@media screen and (min-width:768px){[type=checkbox].drawer:not(.persistent)+*{position:static;height:100%;z-index:1100}[type=checkbox].drawer:not(.persistent)+* .drawer-close{display:none}}:root{--table-border-color: #d8dee9;--table-border-separator-color: #434c5e;--table-head-back-color: #e5e9f0;--table-head-fore-color: #2e3440;--table-body-back-color: #eceff4;--table-body-fore-color: #2e3440;--table-body-alt-back-color: #e5e9f0}table{border-collapse:separate;border-spacing:0;margin:0;display:flex;flex:0 1;flex-flow:row wrap;padding:var(--universal-padding);padding-top:0}table caption{font-size:1.5rem;margin:calc(2 * var(--universal-margin))0;max-width:100%;flex:0 0 100%}table thead,table tbody{display:flex;flex-flow:row wrap;border:.0625rem solid var(--table-border-color)}table thead{z-index:999;border-radius:var(--universal-border-radius)var(--universal-border-radius)0 0;border-bottom:.0625rem solid var(--table-border-separator-color)}table tbody{border-top:0;margin-top:calc(0 - var(--universal-margin));border-radius:0 0 var(--universal-border-radius)var(--universal-border-radius)}table tr{display:flex;padding:0}table th,table td{padding:calc(2 * var(--universal-padding))}table th{text-align:left;background:var(--table-head-back-color);color:var(--table-head-fore-color)}table td{background:var(--table-body-back-color);color:var(--table-body-fore-color);border-top:.0625rem solid var(--table-border-color)}table:not(.horizontal){overflow:auto;max-height:400px}table:not(.horizontal) thead,table:not(.horizontal) tbody{max-width:100%;flex:0 0 100%}table:not(.horizontal) tr{flex-flow:row wrap;flex:0 0 100%}table:not(.horizontal) th,table:not(.horizontal) td{flex:1 0 0;overflow:hidden;text-overflow:ellipsis}table:not(.horizontal) thead{position:sticky;top:0}table:not(.horizontal) tbody tr:first-child td{border-top:0}table.horizontal{border:0}table.horizontal thead,table.horizontal tbody{border:0;flex:.2 0 0;flex-flow:row nowrap}table.horizontal tbody{overflow:auto;justify-content:space-between;flex:.8 0 0;margin-left:0;padding-bottom:calc(var(--universal-padding)/4)}table.horizontal tr{flex-direction:column;flex:1 0}table.horizontal th,table.horizontal td{width:auto;border:0;border-bottom:.0625rem solid var(--table-border-color)}table.horizontal th:not(:first-child),table.horizontal td:not(:first-child){border-top:0}table.horizontal th{text-align:right;border-left:.0625rem solid var(--table-border-color);border-right:.0625rem solid var(--table-border-separator-color)}table.horizontal thead tr:first-child{padding-left:0}table.horizontal th:first-child,table.horizontal td:first-child{border-top:.0625rem solid var(--table-border-color)}table.horizontal tbody tr:last-child td{border-right:.0625rem solid var(--table-border-color)}table.horizontal tbody tr:last-child td:first-child{border-top-right-radius:.25rem}table.horizontal tbody tr:last-child td:last-child{border-bottom-right-radius:.25rem}table.horizontal thead tr:first-child th:first-child{border-top-left-radius:.25rem}table.horizontal thead tr:first-child th:last-child{border-bottom-left-radius:.25rem}@media screen and (max-width:767px){table,table.horizontal{border-collapse:collapse;border:0;width:100%;display:table}table thead,table th,table.horizontal thead,table.horizontal th{border:0;height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%)}table tbody,table.horizontal tbody{border:0;display:table-row-group}table tr,table.horizontal tr{display:block;border:.0625rem solid var(--table-border-color);border-radius:var(--universal-border-radius);background:#fafafa;padding:var(--universal-padding);margin:var(--universal-margin);margin-bottom:calc(2 * var(--universal-margin))}table th,table td,table.horizontal th,table.horizontal td{width:auto}table td,table.horizontal td{display:block;border:0;text-align:right}table td:before,table.horizontal td:before{content:attr(data-label);float:left;font-weight:600}table th:first-child,table td:first-child,table.horizontal th:first-child,table.horizontal td:first-child{border-top:0}table tbody tr:last-child td,table.horizontal tbody tr:last-child td{border-right:0}}:root{--table-body-alt-back-color: #e5e9f0}table.striped tr:nth-of-type(2n)>td{background:var(--table-body-alt-back-color)}@media screen and (max-width:768px){table.striped tr:nth-of-type(2n){background:var(--table-body-alt-back-color)}}:root{--table-body-hover-back-color: #88c0d0}table.hoverable tr:hover,table.hoverable tr:hover>td,table.hoverable tr:focus,table.hoverable tr:focus>td{background:var(--table-body-hover-back-color)}@media screen and (max-width:768px){table.hoverable tr:hover,table.hoverable tr:hover>td,table.hoverable tr:focus,table.hoverable tr:focus>td{background:var(--table-body-hover-back-color)}}:root{--mark-back-color: #5e81ac;--mark-fore-color: #fafafa}mark{background:var(--mark-back-color);color:var(--mark-fore-color);font-size:.95em;line-height:1em;border-radius:var(--universal-border-radius);padding:calc(var(--universal-padding)/4)calc(var(--universal-padding)/2)}mark.inline-block{display:inline-block;font-size:1em;line-height:1.5;padding:calc(var(--universal-padding)/2)var(--universal-padding)}:root{--toast-back-color: #2e3440;--toast-fore-color: #eceff4}.toast{position:fixed;bottom:calc(var(--universal-margin) * 3);left:50%;transform:translate(-50%,-50%);z-index:1111;color:var(--toast-fore-color);background:var(--toast-back-color);border-radius:calc(var(--universal-border-radius) * 16);padding:var(--universal-padding)calc(var(--universal-padding) * 3)}:root{--tooltip-back-color: #2e3440;--tooltip-fore-color: #eceff4}.tooltip{position:relative;display:inline-block}.tooltip:before,.tooltip:after{position:absolute;opacity:0;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%);transition:all .3s;z-index:1010;left:50%}.tooltip:not(.bottom):before,.tooltip:not(.bottom):after{bottom:75%}.tooltip.bottom:before,.tooltip.bottom:after{top:75%}.tooltip:hover:before,.tooltip:hover:after,.tooltip:focus:before,.tooltip:focus:after{opacity:1;clip:auto;-webkit-clip-path:inset(0%);clip-path:inset(0%)}.tooltip:before{content:'';background:0 0;border:var(--universal-margin)solid transparent;left:calc(50% - var(--universal-margin))}.tooltip:not(.bottom):before{border-top-color:#2e3440}.tooltip.bottom:before{border-bottom-color:#2e3440}.tooltip:after{content:attr(aria-label);color:var(--tooltip-fore-color);background:var(--tooltip-back-color);border-radius:var(--universal-border-radius);padding:var(--universal-padding);white-space:nowrap;transform:translateX(-50%)}.tooltip:not(.bottom):after{margin-bottom:calc(2 * var(--universal-margin))}.tooltip.bottom:after{margin-top:calc(2 * var(--universal-margin))}:root{--modal-overlay-color: rgba(0, 0, 0, 0.45);--modal-close-color: #3b4252;--modal-close-hover-color: #e5e9f0}[type=checkbox].modal{height:1px;width:1px;margin:-1px;overflow:hidden;position:absolute;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%)}[type=checkbox].modal+div{position:fixed;top:0;left:0;display:none;width:100vw;height:100vh;background:var(--modal-overlay-color)}[type=checkbox].modal+div .card{margin:0 auto;max-height:50vh;overflow:auto}[type=checkbox].modal+div .card .modal-close{position:absolute;top:0;right:0;width:1.75rem;height:1.75rem;border-radius:var(--universal-border-radius);padding:var(--universal-padding);margin:0;cursor:pointer;transition:background .3s}[type=checkbox].modal+div .card .modal-close:before{display:block;content:'\00D7';color:var(--modal-close-color);position:relative;font-family:sans-serif;font-size:1.75rem;line-height:1;text-align:center}[type=checkbox].modal+div .card .modal-close:hover,[type=checkbox].modal+div .card .modal-close:focus{background:var(--modal-close-hover-color)}[type=checkbox].modal:checked+div{display:flex;flex:0 1;z-index:1200}[type=checkbox].modal:checked+div .card .modal-close{z-index:1211}:root{--collapse-label-back-color: #e5e9f0;--collapse-label-fore-color: #2e3440;--collapse-label-hover-back-color: #e5e9f0;--collapse-selected-label-back-color: #e5e9f0;--collapse-border-color: #e5e9f0;--collapse-content-back-color: #fafafa;--collapse-selected-label-border-color: #88c0d0}.collapse{width:calc(100% - 2 * var(--universal-margin));opacity:1;display:flex;flex-direction:column;margin:var(--universal-margin);border-radius:var(--universal-border-radius)}.collapse>[type=radio],.collapse>[type=checkbox]{height:1px;width:1px;margin:-1px;overflow:hidden;position:absolute;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%)}.collapse>label{flex-grow:1;display:inline-block;height:1.5rem;cursor:pointer;transition:background .3s;color:var(--collapse-label-fore-color);background:var(--collapse-label-back-color);border:.0625rem solid var(--collapse-border-color);padding:calc(1.5 * var(--universal-padding))}.collapse>label:hover,.collapse>label:focus{background:var(--collapse-label-hover-back-color)}.collapse>label+div{flex-basis:auto;height:1px;width:1px;margin:-1px;overflow:hidden;position:absolute;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%);transition:max-height .3s;max-height:1px}.collapse>:checked+label{background:var(--collapse-selected-label-back-color);border-bottom-color:var(--collapse-selected-label-border-color)}.collapse>:checked+label+div{box-sizing:border-box;position:relative;width:100%;height:auto;overflow:auto;margin:0;background:var(--collapse-content-back-color);border:.0625rem solid var(--collapse-border-color);border-top:0;padding:var(--universal-padding);clip:auto;-webkit-clip-path:inset(0%);clip-path:inset(0%);max-height:400px}.collapse>label:not(:first-of-type){border-top:0}.collapse>label:first-of-type{border-radius:var(--universal-border-radius)var(--universal-border-radius)0 0}.collapse>label:last-of-type:not(:first-of-type){border-radius:0 0 var(--universal-border-radius)var(--universal-border-radius)}.collapse>label:last-of-type:first-of-type{border-radius:var(--universal-border-radius)}.collapse>:checked:last-of-type:not(:first-of-type)+label{border-radius:0}.collapse>:checked:last-of-type+label+div{border-radius:0 0 var(--universal-border-radius)var(--universal-border-radius)}mark.secondary{--mark-back-color: #bf616a}mark.tertiary{--mark-back-color: #a3be8c}mark.tag{padding:calc(var(--universal-padding)/2)var(--universal-padding);border-radius:1em}:root{--progress-back-color: #e5e9f0;--progress-fore-color: #434c5e}progress{display:block;vertical-align:baseline;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:.75rem;width:calc(100% - 2 * var(--universal-margin));margin:var(--universal-margin);border:0;border-radius:calc(2 * var(--universal-border-radius));background:var(--progress-back-color);color:var(--progress-fore-color)}progress::-webkit-progress-value{background:var(--progress-fore-color);border-top-left-radius:calc(2 * var(--universal-border-radius));border-bottom-left-radius:calc(2 * var(--universal-border-radius))}progress::-webkit-progress-bar{background:var(--progress-back-color)}progress::-moz-progress-bar{background:var(--progress-fore-color);border-top-left-radius:calc(2 * var(--universal-border-radius));border-bottom-left-radius:calc(2 * var(--universal-border-radius))}progress[value="1000"]::-webkit-progress-value{border-radius:calc(2 * var(--universal-border-radius))}progress[value="1000"]::-moz-progress-bar{border-radius:calc(2 * var(--universal-border-radius))}progress.inline{display:inline-block;vertical-align:middle;width:60%}:root{--spinner-back-color: #d8dee9;--spinner-fore-color: #434c5e}@keyframes spinner-donut-anim{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.spinner{display:inline-block;margin:var(--universal-margin);border:.25rem solid var(--spinner-back-color);border-left:.25rem solid var(--spinner-fore-color);border-radius:50%;width:1.25rem;height:1.25rem;animation:spinner-donut-anim 1.2s linear infinite}progress.primary{--progress-fore-color: #5e81ac}progress.secondary{--progress-fore-color: #bf616a}progress.tertiary{--progress-fore-color: #a3be8c}.spinner.primary{--spinner-fore-color: #5e81ac}.spinner.secondary{--spinner-fore-color: #bf616a}.spinner.tertiary{--spinner-fore-color: #a3be8c}span[class^=icon-]{display:inline-block;height:1em;width:1em;vertical-align:-.125em;background-size:contain;margin:0 calc(var(--universal-margin)/4)}span[class^=icon-].secondary{-webkit-filter:invert(25%);filter:invert(25%)}span[class^=icon-].inverse{-webkit-filter:invert(100%);filter:invert(100%)}span.icon-alert{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12' y2='16'%3E%3C/line%3E%3C/svg%3E")}span.icon-bookmark{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'%3E%3C/path%3E%3C/svg%3E")}span.icon-calendar{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E")}span.icon-credit{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='1' y1='10' x2='23' y2='10'%3E%3C/line%3E%3C/svg%3E")}span.icon-edit{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.66V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.34'%3E%3C/path%3E%3Cpolygon points='18 2 22 6 12 16 8 16 8 12 18 2'%3E%3C/polygon%3E%3C/svg%3E")}span.icon-link{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E")}span.icon-help{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'%3E%3C/path%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='17' x2='12' y2='17'%3E%3C/line%3E%3C/svg%3E")}span.icon-home{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'%3E%3C/path%3E%3Cpolyline points='9 22 9 12 15 12 15 22'%3E%3C/polyline%3E%3C/svg%3E")}span.icon-info{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='16' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='8' x2='12' y2='8'%3E%3C/line%3E%3C/svg%3E")}span.icon-lock{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E")}span.icon-mail{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'%3E%3C/path%3E%3Cpolyline points='22,6 12,13 2,6'%3E%3C/polyline%3E%3C/svg%3E")}span.icon-location{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'%3E%3C/path%3E%3Ccircle cx='12' cy='10' r='3'%3E%3C/circle%3E%3C/svg%3E")}span.icon-phone{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'%3E%3C/path%3E%3C/svg%3E")}span.icon-rss{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'%3E%3C/path%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'%3E%3C/path%3E%3Ccircle cx='5' cy='19' r='1'%3E%3C/circle%3E%3C/svg%3E")}span.icon-search{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E")}span.icon-settings{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E")}span.icon-share{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='3'%3E%3C/circle%3E%3Ccircle cx='6' cy='12' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='19' r='3'%3E%3C/circle%3E%3Cline x1='8.59' y1='13.51' x2='15.42' y2='17.49'%3E%3C/line%3E%3Cline x1='15.41' y1='6.51' x2='8.59' y2='10.49'%3E%3C/line%3E%3C/svg%3E")}span.icon-cart{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='21' r='1'%3E%3C/circle%3E%3Ccircle cx='20' cy='21' r='1'%3E%3C/circle%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6'%3E%3C/path%3E%3C/svg%3E")}span.icon-upload{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'%3E%3C/path%3E%3Cpolyline points='17 8 12 3 7 8'%3E%3C/polyline%3E%3Cline x1='12' y1='3' x2='12' y2='15'%3E%3C/line%3E%3C/svg%3E")}span.icon-user{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232e3440' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='12' cy='7' r='4'%3E%3C/circle%3E%3C/svg%3E")}:root{--generic-border-color: rgba(0, 0, 0, 0.3);--generic-box-shadow: 0 0.25rem 0.25rem 0 rgba(0, 0, 0, 0.125), 0 0.125rem 0.125rem -0.125rem rgba(0, 0, 0, 0.125)}.hidden{display:none!important}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;border:0!important;padding:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(100%)!important;clip-path:inset(100%)!important;overflow:hidden!important}.bordered{border:.0625rem solid var(--generic-border-color)!important}.rounded{border-radius:var(--universal-border-radius)!important}.circular{border-radius:50%!important}.shadowed{box-shadow:var(--generic-box-shadow)!important}.responsive-margin{margin:calc(var(--universal-margin)/4)!important}@media screen and (min-width:768px){.responsive-margin{margin:calc(var(--universal-margin)/2)!important}}@media screen and (min-width:1280px){.responsive-margin{margin:var(--universal-margin)!important}}.responsive-padding{padding:calc(var(--universal-padding)/4)!important}@media screen and (min-width:768px){.responsive-padding{padding:calc(var(--universal-padding)/2)!important}}@media screen and (min-width:1280px){.responsive-padding{padding:var(--universal-padding)!important}}@media screen and (max-width:767px){.hidden-sm{display:none!important}}@media screen and (min-width:768px) and (max-width:1279px){.hidden-md{display:none!important}}@media screen and (min-width:1280px){.hidden-lg{display:none!important}}@media screen and (max-width:767px){.visually-hidden-sm{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;border:0!important;padding:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(100%)!important;clip-path:inset(100%)!important;overflow:hidden!important}}@media screen and (min-width:768px) and (max-width:1279px){.visually-hidden-md{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;border:0!important;padding:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(100%)!important;clip-path:inset(100%)!important;overflow:hidden!important}}@media screen and (min-width:1280px){.visually-hidden-lg{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;border:0!important;padding:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(100%)!important;clip-path:inset(100%)!important;overflow:hidden!important}} \ No newline at end of file diff --git a/main/static/min/index.html b/main/static/min/index.html new file mode 100644 index 0000000..6621101 --- /dev/null +++ b/main/static/min/index.html @@ -0,0 +1,2 @@ +

Loading

Loading content... Please make sure that JavaScript is enabled.


Copyright © Łukasz Chodyła 2022

\ No newline at end of file diff --git a/main/static/min/index.js b/main/static/min/index.js new file mode 100644 index 0000000..7536e1a --- /dev/null +++ b/main/static/min/index.js @@ -0,0 +1,14 @@ +function ip2int(ip){return ip.split('.').reduce(function(ipInt,octet){return(ipInt<<8)+parseInt(octet,10)},0)>>>0;} +function sendClickHandler(event){console.log("Sending form...");let form=event.srcElement.form;console.debug(form);let params='';Array.from(form.elements).forEach(element=>{console.log(element);console.log(element.name);console.log(element.value);if(element.value){params+=params?'&':'';if(element.hasAttribute('data-ip32')){console.log("IPv4 32");params+=element.name+'='+ip2int(element.value);} +else{params+=element.name+'='+element.value;}}});console.log("params: "+params);postParams(form.getAttribute('action'),params);console.log("Form sent");} +function initFormSendButtons(form){const btns=form.querySelectorAll('.send');for(i=0;i "+obj[key]) +let input=element.querySelector("[name='"+key+"'");if(input){input.value=obj[key];}}}}} +http.send();}} +function postParams(url,params){var http=new XMLHttpRequest();http.open('POST',url,true);http.setRequestHeader('Content-type','application/x-www-form-urlencoded');http.onreadystatechange=function(){if(http.readyState==4&&http.status==200){alert(http.responseText);}} +http.send(params);} +function navClickHandler(event){console.log('Button Clicked');console.log('Destination: '+this.getAttribute('data-dst'));loadContent(this.getAttribute('data-dst'));} +function initNavButtons(){const btns=document.querySelectorAll('.nav-btn');for(i=0;iDevice system management


Restore defaults


Reboot

\ No newline at end of file diff --git a/main/static/minify.sh b/main/static/minify.sh new file mode 100755 index 0000000..0f93182 --- /dev/null +++ b/main/static/minify.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +minify index.html > min/index.html +minify index.js > min/index.js +minify index.css > min/index.css +minify sys.html > min/sys.html +minify app.html > min/app.html diff --git a/main/static/sys.html b/main/static/sys.html new file mode 100644 index 0000000..01e1bde --- /dev/null +++ b/main/static/sys.html @@ -0,0 +1,91 @@ +

Device system management

+ +
+

+ +

+

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+

+ +

+

+ +

+

+ +

+ +

+ +

+ +

+ +

+ + +
+ +
+
+
+ +

Restore defaults

+
+ +

+ +

+
+ +
+
+
+ +

Reboot

+
+ +

+ +

+