CINXE.COM
udp · GitHub Topics · GitHub
<!DOCTYPE html> <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true" > <head> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://github.githubassets.com"> <link rel="dns-prefetch" href="https://avatars.githubusercontent.com"> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> <link rel="preconnect" href="https://github.githubassets.com" crossorigin> <link rel="preconnect" href="https://avatars.githubusercontent.com"> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-3e154969b9f9.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-9c5b7a476542.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-afda8eb0fb33.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-2494e44ccdc5.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-56fff47acadc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-71cd4cc132ec.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-fd5499848985.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-31d17ba3e139.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-68d6b2c79663.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-4cf0d59ab51a.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-af846850481e.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-e41ff91f8baa.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-d3b66f11d613.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/site-0293a3496b30.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/explore-742a7653565b.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dashboard-f3c837831149.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/discussions-adf1d1b8b95c.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["copilot_new_references_ui","copilot_beta_features_opt_in","copilot_chat_static_thread_suggestions","copilot_conversational_ux_history_refs","copilot_implicit_context","copilot_smell_icebreaker_ux","experimentation_azure_variant_endpoint","failbot_handle_non_errors","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","hovercard_accessibility","issues_react_new_timeline","issues_react_avatar_refactor","issues_react_remove_placeholders","issues_react_cache_fix_workaround","issues_react_blur_item_picker_on_close","marketing_pages_search_explore_provider","remove_child_patch","sample_network_conn_type","site_metered_billing_update","issues_react_first_time_contribution_banner","jk_navigation_in_list_view","ui_commands_respect_modals","lifecycle_label_name_updates"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-118ecaabd77e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_js-b73fdff77a4e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-aff936e590ed.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-247092-740e4ddd559d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-a46544e9ee5e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-cd35650c2e9c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-4aa4b0e95669.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-6d3967acd51c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_combobox-nav_dist_index_js-node_modules_github_g-emoji-element_di-6ce195-53781cbc550f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-6afc16-3cdfa69a0406.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-f5498b8d4e5d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b5f1d7-492b5042c841.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-1f651a-1e3d784c897c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-7671f1-dc6cac136d88.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-71486356f507.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-e3ab8405ef80.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-bb80ec-634de60bacfa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-ce7225a304c5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_hydro-analytics-client_dist_analytics-client_js-node_modules_gith-f3aee1-e6893db9c19e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-f8a5485c982a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-858e043fcf76.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-6cf3320416b8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_scroll-anchoring_dist_scroll-anchoring_esm_js-node_modules_stacktrace-pa-a71630-6f3c4f0189d8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-0e07cc183eed.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-0b5e12-889cec8cf448.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-eae9df0dd562.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-18d1c91a7872.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-7cbef09a422c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-d0d0a6-0e9fa537dc4f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-c89801ebbe15.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-93287f4de493.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-f6223d90c7ba.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-3366f6b6298e.js"></script> <title>udp · GitHub Topics · GitHub</title> <meta name="route-pattern" content="/topics/:topic_name(.:format)" data-turbo-transient> <meta name="route-controller" content="topics" data-turbo-transient> <meta name="route-action" content="show" data-turbo-transient> <meta name="current-catalog-service-hash" content="82c569b93da5c18ed649ebd4c2c79437db4611a6a1373e805a3cb001c64130b7"> <meta name="request-id" content="BFAA:E4DEB:371012:3D2FD4:6743297B" data-pjax-transient="true"/><meta name="html-safe-nonce" content="078af75e21505792fad2285faff2ed3855f15d9e1a551068dc398496df6c36e2" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCRkFBOkU0REVCOjM3MTAxMjozRDJGRDQ6Njc0MzI5N0IiLCJ2aXNpdG9yX2lkIjoiNzIwNTgyODIxMDkwMTMzMDI5OSIsInJlZ2lvbl9lZGdlIjoic291dGhlYXN0YXNpYSIsInJlZ2lvbl9yZW5kZXIiOiJzb3V0aGVhc3Rhc2lhIn0=" data-pjax-transient="true"/><meta name="visitor-hmac" content="4b467744f25d35caa540c131039f562b1df18a929569e64840311d45b24fb4f7" data-pjax-transient="true"/> <meta name="github-keyboard-shortcuts" content="copilot" data-turbo-transient="true" /> <meta name="selected-link" value="/topics/udp" data-turbo-transient> <link rel="assets" href="https://github.githubassets.com/"> <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I"> <meta name="octolytics-url" content="https://collector.github.com/github/collect" /> <meta name="user-login" content=""> <meta name="viewport" content="width=device-width"> <meta name="description" content="GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects."> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/topics/udp" /> <meta property="og:url" content="https://github.com"> <meta property="og:site_name" content="GitHub"> <meta property="og:title" content="Build software better, together"> <meta property="og:description" content="GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects."> <meta property="og:image" content="https://github.githubassets.com/assets/github-logo-55c5b9a1fe52.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="1200"> <meta property="og:image" content="https://github.githubassets.com/assets/github-mark-57519b92ca4e.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="620"> <meta property="og:image" content="https://github.githubassets.com/assets/github-octocat-13c86b8b336d.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="620"> <meta property="twitter:site" content="github"> <meta property="twitter:site:id" content="13334762"> <meta property="twitter:creator" content="github"> <meta property="twitter:creator:id" content="13334762"> <meta property="twitter:card" content="summary_large_image"> <meta property="twitter:title" content="GitHub"> <meta property="twitter:description" content="GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects."> <meta property="twitter:image" content="https://github.githubassets.com/assets/github-logo-55c5b9a1fe52.png"> <meta property="twitter:image:width" content="1200"> <meta property="twitter:image:height" content="1200"> <meta name="hostname" content="github.com"> <meta name="expected-hostname" content="github.com"> <meta http-equiv="x-pjax-version" content="8361516d1dea1fff22052932afd1fd4d506e12e23b478e7c9fd076ac40fb5cdd" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="463ee08ca3497fca0ad4eda59bb472c35eea254161aa1aec5f7ce12f247d2ecd" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="8968ee26e93ec8c6d3c4e91c77fb9d206091689d451ebbcddeca3832587a5b30" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="c4972ae1cf5d4607c47252349fc1b47a24ff0ea303e5a8fbbe18ec27725a87ee" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> <meta name="turbo-body-classes" content="logged-out env-production page-responsive"> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png"> <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon"> <meta name="theme-color" content="#1e2327"> <meta name="color-scheme" content="light dark" /> <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials"> </head> <body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div class="position-relative header-wrapper js-header-wrapper "> <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a> <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full"> <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span> </span> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-765944243383.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-cd0a67881543.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-7b7b5264f6c1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-45c3a19dd792.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-62da9f-54c0c921f04b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-285fc29e9fa5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-4896ddd4b7bb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-d25fac54a6bc.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-ed30662f9578.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.9fa170e9435ed4b922b9.module.css" /> <react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false" data-attempted-ssr="false" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script> <div data-target="react-partial.reactRoot"></div> </react-partial> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-cf3dd69d89eb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-8fa3b694f335.js"></script> <header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=light data-light-theme=light data-dark-theme=dark> <h2 class="sr-only">Navigation Menu</h2> <button type="button" class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation"> <span class="d-none">Toggle navigation</span> </button> <div class="d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1"> <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto"> <div class="flex-1"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1"> <span class="Button-content"> <span class="Button-label"><div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div></span> </span> </button> </div> <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav" href="/" aria-label="Homepage" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Logomark;ref_loc:Header"}"> <svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"></path> </svg> </a> <div class="flex-1 flex-order-2 text-right"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Ftopics%2Fudp" class="HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="196be23a8565a133d6d61cafd58a2934cf8b61176fd25667ba29bbaef2f96204" data-analytics-event="{"category":"Marketing nav","action":"click to Sign in","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> </div> <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0"> <div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0"> <nav class="HeaderMenu-nav" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Product <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"github_copilot","context":"product","tag":"link","label":"github_copilot_link_product_navbar"}" href="https://github.com/features/copilot"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Write better code with AI </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"security","context":"product","tag":"link","label":"security_link_product_navbar"}" href="https://github.com/features/security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Security</div> Find and fix vulnerabilities </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"actions","context":"product","tag":"link","label":"actions_link_product_navbar"}" href="https://github.com/features/actions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3"> <path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path> </svg> <div> <div class="color-fg-default h4">Actions</div> Automate any workflow </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"codespaces","context":"product","tag":"link","label":"codespaces_link_product_navbar"}" href="https://github.com/features/codespaces"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3"> <path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> <div> <div class="color-fg-default h4">Codespaces</div> Instant dev environments </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"issues","context":"product","tag":"link","label":"issues_link_product_navbar"}" href="https://github.com/features/issues"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3"> <path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path> </svg> <div> <div class="color-fg-default h4">Issues</div> Plan and track work </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"code_review","context":"product","tag":"link","label":"code_review_link_product_navbar"}" href="https://github.com/features/code-review"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3"> <path d="M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Review</div> Manage code changes </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"discussions","context":"product","tag":"link","label":"discussions_link_product_navbar"}" href="https://github.com/features/discussions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Discussions</div> Collaborate outside of code </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"code_search","context":"product","tag":"link","label":"code_search_link_product_navbar"}" href="https://github.com/features/code-search"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-square color-fg-subtle mr-3"> <path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Search</div> Find more, search less </div> </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="product-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"all_features","context":"product","tag":"link","label":"all_features_link_product_navbar"}" href="https://github.com/features"> All features </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"documentation","context":"product","tag":"link","label":"documentation_link_product_navbar"}" href="https://docs.github.com"> Documentation <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"github_skills","context":"product","tag":"link","label":"github_skills_link_product_navbar"}" href="https://skills.github.com"> GitHub Skills <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"blog","context":"product","tag":"link","label":"blog_link_product_navbar"}" href="https://github.blog"> Blog <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Solutions <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-company-size-heading">By company size</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-company-size-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"enterprises","context":"solutions","tag":"link","label":"enterprises_link_solutions_navbar"}" href="https://github.com/enterprise"> Enterprises </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"small_and_medium_teams","context":"solutions","tag":"link","label":"small_and_medium_teams_link_solutions_navbar"}" href="https://github.com/team"> Small and medium teams </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"startups","context":"solutions","tag":"link","label":"startups_link_solutions_navbar"}" href="https://github.com/enterprise/startups"> Startups </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devsecops","context":"solutions","tag":"link","label":"devsecops_link_solutions_navbar"}" href="/solutions/use-case/devsecops"> DevSecOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"solutions","tag":"link","label":"devops_link_solutions_navbar"}" href="/solutions/use-case/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ci_cd","context":"solutions","tag":"link","label":"ci_cd_link_solutions_navbar"}" href="/solutions/use-case/ci-cd"> CI/CD </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_use_cases","context":"solutions","tag":"link","label":"view_all_use_cases_link_solutions_navbar"}" href="/solutions/use-case"> View all use cases </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By industry</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"healthcare","context":"solutions","tag":"link","label":"healthcare_link_solutions_navbar"}" href="/solutions/industry/healthcare"> Healthcare </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"financial_services","context":"solutions","tag":"link","label":"financial_services_link_solutions_navbar"}" href="/solutions/industry/financial-services"> Financial services </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"manufacturing","context":"solutions","tag":"link","label":"manufacturing_link_solutions_navbar"}" href="/solutions/industry/manufacturing"> Manufacturing </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"government","context":"solutions","tag":"link","label":"government_link_solutions_navbar"}" href="/solutions/industry/government"> Government </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_industries","context":"solutions","tag":"link","label":"view_all_industries_link_solutions_navbar"}" href="/solutions/industry"> View all industries </a></li> </ul> </div> </div> <div class="HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold"> <a href="/solutions"> View all solutions <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right HeaderMenu-trailing-link-icon"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Resources <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span> <ul class="list-style-none f5" aria-labelledby="resources-topics-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ai","context":"resources","tag":"link","label":"ai_link_resources_navbar"}" href="/resources/articles/ai"> AI </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"resources","tag":"link","label":"devops_link_resources_navbar"}" href="/resources/articles/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"security","context":"resources","tag":"link","label":"security_link_resources_navbar"}" href="/resources/articles/security"> Security </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"software_development","context":"resources","tag":"link","label":"software_development_link_resources_navbar"}" href="/resources/articles/software-development"> Software Development </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all","context":"resources","tag":"link","label":"view_all_link_resources_navbar"}" href="/resources/articles"> View all </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="resources-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"learning_pathways","context":"resources","tag":"link","label":"learning_pathways_link_resources_navbar"}" href="https://resources.github.com/learn/pathways"> Learning Pathways <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"white_papers_ebooks_webinars","context":"resources","tag":"link","label":"white_papers_ebooks_webinars_link_resources_navbar"}" href="https://resources.github.com"> White papers, Ebooks, Webinars <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"customer_stories","context":"resources","tag":"link","label":"customer_stories_link_resources_navbar"}" href="https://github.com/customer-stories"> Customer Stories </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"partners","context":"resources","tag":"link","label":"partners_link_resources_navbar"}" href="https://partner.github.com"> Partners <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Open Source <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"github_sponsors","context":"open_source","tag":"link","label":"github_sponsors_link_open_source_navbar"}" href="/sponsors"> <div> <div class="color-fg-default h4">GitHub Sponsors</div> Fund open source developers </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"the_readme_project","context":"open_source","tag":"link","label":"the_readme_project_link_open_source_navbar"}" href="https://github.com/readme"> <div> <div class="color-fg-default h4">The ReadME Project</div> GitHub community articles </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="open-source-repositories-heading">Repositories</span> <ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"topics","context":"open_source","tag":"link","label":"topics_link_open_source_navbar"}" href="https://github.com/topics"> Topics </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"trending","context":"open_source","tag":"link","label":"trending_link_open_source_navbar"}" href="https://github.com/trending"> Trending </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"collections","context":"open_source","tag":"link","label":"collections_link_open_source_navbar"}" href="https://github.com/collections"> Collections </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Enterprise <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"enterprise_platform","context":"enterprise","tag":"link","label":"enterprise_platform_link_enterprise_navbar"}" href="/enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-stack color-fg-subtle mr-3"> <path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path> </svg> <div> <div class="color-fg-default h4">Enterprise platform</div> AI-powered developer platform </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="enterprise-available-add-ons-heading">Available add-ons</span> <ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"advanced_security","context":"enterprise","tag":"link","label":"advanced_security_link_enterprise_navbar"}" href="https://github.com/enterprise/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Advanced Security</div> Enterprise-grade security features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"github_copilot","context":"enterprise","tag":"link","label":"github_copilot_link_enterprise_navbar"}" href="/features/copilot#enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Enterprise-grade AI features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"premium_support","context":"enterprise","tag":"link","label":"premium_support_link_enterprise_navbar"}" href="/premium-support"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Premium Support</div> Enterprise-grade 24/7 support </div> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{"location":"navbar","action":"pricing","context":"global","tag":"link","label":"pricing_link_global_navbar"}" href="https://github.com/pricing">Pricing</a> </li> </ul> </nav> <div class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3"> <qbsearch-input class="search-input" data-scope="" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="SbacoedbMbcWh157DXdIccm0_HypQ3adAYhdgsUjcsPlyr4_bZ0O3j3z-MmGPDdQ_7i1dYYfS7ZrYhholVUO-g" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="" data-current-org="" data-current-owner="" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> <div class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded" data-action="click:qbsearch-input#searchInputContainerClicked" > <button type="button" class="header-search-button placeholder input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none" data-target="qbsearch-input.inputButton" aria-label="Search or jump to…" aria-haspopup="dialog" placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off" data-analytics-event="{"location":"navbar","action":"searchbar","context":"global","tag":"input","label":"searchbar_input_global_navbar"}" data-action="click:qbsearch-input#handleExpand" > <div class="mr-2 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </div> <span class="flex-1" data-target="qbsearch-input.inputButtonText">Search or jump to...</span> <div class="d-flex" data-target="qbsearch-input.hotkeyIndicator"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg> </div> </button> <input type="hidden" name="type" class="js-site-search-type-field"> <div class="Overlay--hidden " data-modal-dialog-overlay> <modal-dialog data-action="close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose" data-target="qbsearch-input.searchSuggestionsDialog" role="dialog" id="search-suggestions-dialog" aria-modal="true" aria-labelledby="search-suggestions-dialog-header" data-view-component="true" class="Overlay Overlay--width-large Overlay--height-auto"> <h1 id="search-suggestions-dialog-header" class="sr-only">Search code, repositories, users, issues, pull requests...</h1> <div class="Overlay-body Overlay-body--paddingNone"> <div data-view-component="true"> <div class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container" style="border-radius: 12px;" data-target="qbsearch-input.queryBuilderContainer" hidden > <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get"> <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder"> <div class="FormControl FormControl--fullWidth"> <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label> <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput" > <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </span> <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer"> <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent" ></div> <div class="QueryBuilder-InputWrapper"> <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div> <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-e20397c7-9ec1-4880-bd40-56f7c30a24e4" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown focus:query-builder#inputFocus " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" /> </div> </div> <span class="sr-only" id="query-builder-test-clear">Clear</span> <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action=" click:query-builder#clear focus:query-builder#clearButtonFocus blur:query-builder#clearButtonBlur " variant="small" hidden="hidden" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual"> <path d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z"></path> </svg> </button> </div> <template id="search-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </template> <template id="code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="file-code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code"> <path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path> </svg> </template> <template id="history-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history"> <path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path> </svg> </template> <template id="repo-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </template> <template id="bookmark-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark"> <path d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="plus-circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> </template> <template id="trash-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash"> <path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path> </svg> </template> <template id="team-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people"> <path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path> </svg> </template> <template id="project-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project"> <path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z"></path> </svg> </template> <template id="pencil-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil"> <path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path> </svg> </template> <template id="copilot-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot"> <path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="copilot-error-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot-error"> <path d="M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z"></path> </svg> </template> <template id="workflow-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-workflow"> <path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="book-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> </template> <template id="code-review-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-review"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="codespaces-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-codespaces"> <path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> </template> <template id="comment-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment"> <path d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="comment-discussion-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </template> <template id="organization-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization"> <path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="rocket-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-rocket"> <path d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </template> <template id="shield-check-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield-check"> <path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="heart-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> </template> <template id="server-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-server"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="globe-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-globe"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path> </svg> </template> <template id="issue-opened-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </template> <template id="device-mobile-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile"> <path d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg> </template> <template id="package-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> </template> <template id="credit-card-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-credit-card"> <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path><path d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z"></path> </svg> </template> <template id="play-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </template> <template id="gift-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-gift"> <path d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z"></path> </svg> </template> <template id="code-square-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-square"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="device-desktop-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop"> <path d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z"></path> </svg> </template> <div class="position-relative"> <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action=" combobox-commit:query-builder#comboboxCommit mousedown:query-builder#resultsMousedown " data-target="query-builder.resultsList" data-persist-list=false id="query-builder-test-results" ></ul> </div> <div class="FormControl-inlineValidation" id="validation-e20397c7-9ec1-4880-bd40-56f7c30a24e4" hidden="hidden"> <span class="FormControl-inlineValidation--visual"> <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> </svg> </span> <span></span> </div> </div> <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div> </query-builder></form> <div class="d-flex flex-row color-fg-muted px-3 text-small color-bg-default search-feedback-prompt"> <a target="_blank" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax" data-view-component="true" class="Link color-fg-accent text-normal ml-2"> Search syntax tips </a> <div class="d-flex flex-1"></div> </div> </div> </div> </div> </modal-dialog></div> </div> <div data-action="click:qbsearch-input#retract" class="dark-backdrop position-fixed" hidden data-target="qbsearch-input.darkBackdrop"></div> <div class="color-fg-default"> <dialog-helper> <dialog data-target="qbsearch-input.feedbackDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="feedback-dialog" aria-modal="true" aria-labelledby="feedback-dialog-title" aria-describedby="feedback-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="feedback-dialog-title"> Provide feedback </h1> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="feedback-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="feedback-dialog-title"> <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="JN+eIBip3J87Waj7iHtOCYH9fuCtRRGAh5ClpeHmgcxeSFets4i2pEhqBQkEiHQPhnuKLI7/0zlEieCX01R6fA==" /> <p>We read every piece of feedback, and take your input very seriously.</p> <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea> <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox"> <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label> </form></div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback" type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback </button> </div> </dialog></dialog-helper> <custom-scopes data-target="qbsearch-input.customScopesManager"> <dialog-helper> <dialog data-target="custom-scopes.customScopesModalDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title" aria-describedby="custom-scopes-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header Overlay-header--divided"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="custom-scopes-dialog-title"> Saved searches </h1> <h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches to filter your results more quickly</h2> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="custom-scopes-dialog-title"> <div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="hmtcAgCLlNb9tzRDpPC3vEX1JmA9AARh2S9/pPFrhpupyTty3ACsHjfQMGQl73HXHWnJXTixmsTmRGlnRpZucw==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> <div class="form-group"> <label for="custom_scope_name">Name</label> <auto-check src="/search/custom_scopes/check_name" required> <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required maxlength="50"> <input type="hidden" data-csrf="true" value="d0n30z2KbtGvr9ZWNScMWPVVsVaG12bJo3tcQLm9IxZ1+C3pfhADucUQ+NaD4M7QjsRzEsm6EBcig8Rgqek09g==" /> </auto-check> </div> <div class="form-group"> <label for="custom_scope_query">Query</label> <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required maxlength="500"> </div> <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p> </form> </div> <div data-target="custom-scopes.manageCustomScopesForm"> <div data-target="custom-scopes.list"></div> </div> </div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> <button data-action="click:custom-scopes#customScopesCancel" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="custom-scopes-dialog-form" data-action="click:custom-scopes#customScopesSubmit" data-target="custom-scopes.customScopesSubmitButton" type="submit" data-view-component="true" class="btn-primary btn"> Create saved search </button> </div> </dialog></dialog-helper> </custom-scopes> </div> </qbsearch-input> <div class="position-relative HeaderMenu-link-wrap d-lg-inline-block"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Ftopics%2Fudp" class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1" style="margin-left: 12px;" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="196be23a8565a133d6d61cafd58a2934cf8b61176fd25667ba29bbaef2f96204" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> <a href="/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2Ftopics%2Fudp&source=header" class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="196be23a8565a133d6d61cafd58a2934cf8b61176fd25667ba29bbaef2f96204" data-analytics-event="{"category":"Sign up","action":"click to sign up for account","label":"ref_page:/topics/udp;ref_cta:Sign up;ref_loc:header logged out"}" > Sign up </a> <button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Reseting focus</button> </div> </div> </div> </div> </header> <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <button id="icon-button-df8bed4b-d420-4137-ad0e-37cb77acb6bf" aria-labelledby="tooltip-076d2543-4a07-4f43-8145-f44296b6af7d" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button><tool-tip id="tooltip-076d2543-4a07-4f43-8145-f44296b6af7d" for="icon-button-df8bed4b-d420-4137-ad0e-37cb77acb6bf" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> </div> </div> <div id="start-of-content" class="show-on-focus"></div> <div id="js-flash-container" class="flash-container" data-turbo-replace> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div > <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div aria-atomic="true" role="alert" class="js-flash-alert"> <div>{{ message }}</div> </div> </div> </div> </template> </div> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled > <main> <div class="site-subnav color-bg-default site-subnav-sticky js-sticky" > <nav class="container-lg mx-auto p-responsive" role="navigation" aria-label="Explore navigation"> <div class="d-flex flex-wrap flex-items-center flex-justify-center flex-md-justify-start text-center text-md-left"> <a class="js-selected-navigation-item d-inline-block subnav-primary f5 py-0 py-md-3 mt-2 mt-md-0 mr-0 mr-md-4 no-underline subnav-link" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"NAVIGATION_BAR","click_target":"EXPLORE","click_visual_representation":"CLICK_VISUAL_REPRESENTATION_UNKNOWN","actor_id":null,"record_id":null,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b022dcf6dab9537f61ffb151b88283ea472b8bff2fd3d1f8bdd18c3b2889e431" data-selected-links="/explore /explore/email /explore" href="/explore">Explore</a> <a class="js-selected-navigation-item selected d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"NAVIGATION_BAR","click_target":"TOPICS","click_visual_representation":"CLICK_VISUAL_REPRESENTATION_UNKNOWN","actor_id":null,"record_id":null,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="28de336d62f815bd00f883b2b45babf5ec97e298d9cf0a7b86a633bf34f1b14a" aria-current="page" data-selected-links="topics_path /topics/udp /topics" href="/topics">Topics</a> <a class="js-selected-navigation-item d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"NAVIGATION_BAR","click_target":"TRENDING","click_visual_representation":"CLICK_VISUAL_REPRESENTATION_UNKNOWN","actor_id":null,"record_id":null,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="722cd4828db7f89165d0ddf87a85970eb51b8268f5b8ae74105ab3a302241c4a" data-selected-links="/trending /trending/developers /trending/developers /trending /trending" href="/trending">Trending</a> <a class="js-selected-navigation-item d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"NAVIGATION_BAR","click_target":"COLLECTIONS","click_visual_representation":"CLICK_VISUAL_REPRESENTATION_UNKNOWN","actor_id":null,"record_id":null,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="977947b18b8eded34abf3befbc4b6331d4834e60db0525a32d18ebfe243acf33" data-selected-links="collections_path /collections/ /collections" href="/collections">Collections</a> <a class="js-selected-navigation-item d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"NAVIGATION_BAR","click_target":"EVENTS","click_visual_representation":"CLICK_VISUAL_REPRESENTATION_UNKNOWN","actor_id":null,"record_id":null,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7b1aa712470bd93924f7150467f929f2139237fa7543e2802478e3961881b3ab" data-selected-links="events_path /events?id= /events" href="/events">Events</a> <a class="js-selected-navigation-item d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"NAVIGATION_BAR","click_target":"GITHUB_SPONSORS","click_visual_representation":"CLICK_VISUAL_REPRESENTATION_UNKNOWN","actor_id":null,"record_id":null,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="096e9e73b7687ff97c2726cb7e163836a4531252e53d842a1dff4dd8abaa2628" data-selected-links="sponsors_explore_index_path /sponsors/explore /sponsors/explore" href="/sponsors/explore">GitHub Sponsors</a> </div> </nav> </div> <div> <div class="container-lg p-responsive py-5"> <div class="gutter-md"> <div class="col-lg-9 col-md-8 d-flex flex-items-center mb-3 mb-sm-0"> <div class="d-flex flex-1"> <div class="border color-border-subtle color-bg-accent f4 color-fg-muted text-bold rounded flex-shrink-0 text-center mr-3" style="width: 48px; height: 48; line-height: 48px;" > # </div> <h1 class="h1"> udp </h1> </div> <topic-feeds-toast-trigger data-topic-display-name="udp" data-topic-name="udp"> <div data-view-component="true" class="d-block"> <a href="/login?return_to=%2Ftopic.udp" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":null,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4f2c0fe9e5eae856514b7834477fdb6f625b8261c5bb83bbb4cd4d8eeecf6974" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> </a></div> </topic-feeds-toast-trigger> </div> </div> </div> <div class="topic p-responsive container-lg"> <div class="d-md-flex gutter-md"> <div class="col-md-8 col-lg-9" data-hpc> <h2 class="h3 color-fg-muted"> Here are 3,479 public repositories matching this topic... </h2> <div class="d-sm-flex"> <details class="details-reset details-overlay mt-2 mr-3 select-menu"> <summary data-view-component="true" class="select-menu-button btn-sm btn"> <i>Language:</i> <span data-menu-button>All</span> </summary> <details-menu class="select-menu-modal position-absolute" style="z-index: 99;"> <div class="select-menu-header"> <span class="select-menu-title">Filter by language</span> </div> <div class="select-menu-list"> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/udp" aria-checked="true"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> All <span>3,479</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/udp?l=python" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Python <span>572</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/udp?l=c" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> C <span>535</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/udp?l=java" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Java <span>490</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/udp?l=c%2B%2B" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> C++ <span>455</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/udp?l=go" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Go <span>327</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/udp?l=c%23" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> C# <span>270</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/udp?l=javascript" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> JavaScript <span>157</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/udp?l=rust" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Rust <span>154</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/udp?l=typescript" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> TypeScript <span>55</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/udp?l=shell" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Shell <span>38</span> </span> </a> </div> </details-menu> </details> <details class="details-reset details-overlay select-menu mt-2"> <summary data-view-component="true" class="select-menu-button btn-sm btn"> <i>Sort:</i> <span data-menu-button >Most stars</span> </summary> <details-menu class="select-menu-modal position-absolute" style="z-index: 99;"> <div class="select-menu-header"> <span class="select-menu-title">Sort options</span> </div> <div class="select-menu-list"> <a class="select-menu-item" role="menuitemradio" aria-checked="true" href="/topics/udp?o=desc&s=stars"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Most stars </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/udp?o=asc&s=stars"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Fewest stars </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/udp?o=desc&s=forks"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Most forks </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/udp?o=asc&s=forks"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Fewest forks </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/udp?o=desc&s=updated"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Recently updated </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/udp?o=asc&s=updated"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Least recently updated </span> </a> </div> </details-menu> </details> </div> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":10577978,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b7f3d6634264565ebb3dcf90e450bb8ea147fa40b70fad28880953d491e8ecb6" data-turbo="false" href="/ngosang" data-view-component="true" class="Link"> ngosang </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":56969116,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="6289b032ea8068974d9b0327a11f4e1042f21054cdbd433240a07354709160b2" data-turbo="false" href="/ngosang/trackerslist" data-view-component="true" class="Link text-bold wb-break-word"> trackerslist </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fngosang%2Ftrackerslist" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":56969116,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="e38106b6c2ba2a894b0bbbb505e785d7b15905089abe3542e87bcd91bf1b2587" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="47411 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="47,411" data-view-component="true" class="Counter js-social-count">47.4k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-56969116" aria-current="true" href="/ngosang/trackerslist" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":56969116,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c4e933af40167507826e5d6e0b98df10dc342b8bbcc0b88043c0bd96f27b77a8" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-56969116" href="/ngosang/trackerslist/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":56969116,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5f47decc684e3a24339868dfc9196f188221cf5d9a58f30ceb2967c42c75dccf" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-56969116" href="/ngosang/trackerslist/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":56969116,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ca69ce036d6319daf04622c5f5ea4a162ec9b52f9ba38b87a1dd53ec8a02209d" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Updated list of public BitTorrent trackers</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":65,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f58e1a05b9ea3b29c54c2da32f9992c45063ce41bd9967b220bfe9da6e088430" title="Topic: tracker" href="/topics/tracker" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tracker </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":379,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="be9f2674500b042e190d41defc52ce8db547ea207b70a4d03669288570d278ee" title="Topic: lists" href="/topics/lists" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> lists </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":473,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ec771acda08f191d3c4e7b4c6b4b466031015951c6d419ac9fdbaf02d652ec71" title="Topic: http" href="/topics/http" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> http </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2133,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="90752771ddd7e3916b565127c374a2be761a76a3b5bea72017cdec53f506d8c3" title="Topic: torrent" href="/topics/torrent" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> torrent </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2141,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="2827f94a9cf83ebe238e505b0b36377e222b26d405e99640368bdb18d5c82a3a" title="Topic: list" href="/topics/list" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> list </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9590,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="03d5c704f9121e8552e770883f71774d49835d3d397ca863fad4c4482c46d34b" title="Topic: bittorrent" href="/topics/bittorrent" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> bittorrent </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39019,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5abb58dfbd3dfdc99d6874ec1fc9dbc91ad1be01e09ae7d073babf410179c461" title="Topic: webtorrent" href="/topics/webtorrent" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webtorrent </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39344,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a288df8d31ab5299b0e5fbb6daefcdb9954ea754edeb8e3ade42138544feb29c" title="Topic: bittorrent-tracker" href="/topics/bittorrent-tracker" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> bittorrent-tracker </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":48598,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b361e6c1f45df8cc62eba0d97047356ed49f7fc0c430a6c8337c923ac8518a51" title="Topic: ws" href="/topics/ws" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ws </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":135813,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4d76f43214d072be8e7407d4ca1250327827f1e8dba846b378e75700da06b66e" title="Topic: trackers" href="/topics/trackers" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> trackers </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":617049,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="23fb723093f53c22ebf281c6d5873b0bd62cf98787c11d8d9211a04b645ccc3b" title="Topic: trackerslist" href="/topics/trackerslist" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> trackerslist </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1166124,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="0c7a726dea1a7ccddcbdce03ff268785956cfe5adf84ae909d462284ccf302e8" title="Topic: public-trackers" href="/topics/public-trackers" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> public-trackers </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1342768,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1d116c0c03e2754a7981609519a919dc2fb2645df6b4d84f425ce6418ac3c215" title="Topic: bittorrent-trackers" href="/topics/bittorrent-trackers" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> bittorrent-trackers </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1385753,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="cae923ccebeb483def24c67c4fc1910b2d568975bfe459a6e0341411fe58b488" title="Topic: public-tracker" href="/topics/public-tracker" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> public-tracker </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-23T23:07:03Z" class="no-wrap">Nov 23, 2024</relative-time> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":59558731,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5b85d6c58c570e454bc1f0434b81a5672734ed963ad4451ee0cd18ad91d6f06e" data-turbo="false" href="/ehang-io" data-view-component="true" class="Link"> ehang-io </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":156084530,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="963f69a69259a2260a188685f2d22f6e0d8a9889a14b5ba8bbf2b431d2acd526" data-turbo="false" href="/ehang-io/nps" data-view-component="true" class="Link text-bold wb-break-word"> nps </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fehang-io%2Fnps" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":156084530,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="fd3b4eed40dc58f81abe441521ba265da75c3ed8508696937b9e6e0b7991e5ad" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="30839 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="30,839" data-view-component="true" class="Counter js-social-count">30.8k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-156084530" aria-current="true" href="/ehang-io/nps" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":156084530,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b086d3272adabe20b63643e9ffbdc339d28a857f299241612bdb4201881556fb" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-156084530" href="/ehang-io/nps/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":156084530,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f780c55b582f24cf9c5a3e7d24eeebe1b583a1876b1e21f18ce39706c69c1052" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-156084530" href="/ehang-io/nps/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":156084530,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5d33482b58ec0f3c052d53ebdd16a5e7c50bf308d5b7ac97e7a5b6ebb9427f01" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":194,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="8f3cf9a44cf2399894b24dc6bf9efcf62cb58d68df147c1ce08038558b493c0a" title="Topic: go" href="/topics/go" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> go </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":274,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="cba4c9c34c2748712ef42a782bedcfa17d0ccdd8ddc8d9796e9adc4375c7782f" title="Topic: dns" href="/topics/dns" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> dns </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":342,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="9a1dd6cf3cfa0910a3ce5cb58ec63e594b33e0d8e3f02711e8194b8db3592712" title="Topic: tunnel" href="/topics/tunnel" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tunnel </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":343,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="211629a71df9e53edc8c124fa8c8561788bcbaafd9808b546c764026f616201a" title="Topic: ssh" href="/topics/ssh" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ssh </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":473,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ec771acda08f191d3c4e7b4c6b4b466031015951c6d419ac9fdbaf02d652ec71" title="Topic: http" href="/topics/http" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> http </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9719,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="8b10554e67970031969a82f92e7cbe22695246a6e67b91b46d397a0c8c9f9f2f" title="Topic: gzip" href="/topics/gzip" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> gzip </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12839,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="85b6d4887eff070e602c09d84af43698b64acbb78e9f71b0e7dcf154070a57fb" title="Topic: https" href="/topics/https" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> https </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13388,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ae7fd4c312aff66b7df260ccf9bfeefa983a3d7e0e13e8fb9b541f55775a1770" title="Topic: firewall" href="/topics/firewall" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> firewall </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":14095,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="df7ba8d0d377533e05359bbfbde6e029088597fbf8038bd27ba678bec2b2a01e" title="Topic: nat" href="/topics/nat" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> nat </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22187,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a9f84dc8d9d8fc4dc3f1bc7a0d9aa89542201012ea246b745c91706fc637f29f" title="Topic: socks" href="/topics/socks" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> socks </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22190,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f3b02ea79cc27d06c1ded96c136611c247cd3aabc61cff5f244857b7c326561f" title="Topic: socks5" href="/topics/socks5" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> socks5 </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":73016,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="9803ce757800c1ded67e6f2c17bb9c7e6ce9027bf0af191f941f8271d6d93cd6" title="Topic: nps" href="/topics/nps" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> nps </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":911757,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="435d04ca176e52f3bd25ea66608b4d95106139401386468b3fbf0c0c0a1e436a" title="Topic: snnapy" href="/topics/snnapy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> snnapy </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-05-30T03:51:08Z" class="no-wrap">May 30, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #00ADD8"></span> <span itemprop="programmingLanguage">Go</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":2801795,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c5657cec05058a150bbfaf0e5eadc985717861190ffb3b3401892b6cab4689d2" data-turbo="false" href="/ginuerzh" data-view-component="true" class="Link"> ginuerzh </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":32575637,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="d7edaaf0ea57aadf59248d62ff46f44866025564c4699458f2e5ed6a4e7de808" data-turbo="false" href="/ginuerzh/gost" data-view-component="true" class="Link text-bold wb-break-word"> gost </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fginuerzh%2Fgost" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":32575637,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="96bf50968f573774d915fab01b864398a676f0148b904a131ef460c4aa5da030" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="16057 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="16,057" data-view-component="true" class="Counter js-social-count">16.1k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-32575637" aria-current="true" href="/ginuerzh/gost" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":32575637,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a72910eeedb4ab4cc7ffd2ac4b492fb45f8b00efc4a4f4eba59c8ed260d2739c" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-32575637" href="/ginuerzh/gost/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":32575637,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="2f57bd3e28ed8d4c2e2c8787d5f29677a9cd73b999c20f253834f17b3e6da119" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-32575637" href="/ginuerzh/gost/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":32575637,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="8c2d535b78de3cf672ce0b1680655ff0ab2427d0f07e94426b0d0be047aab528" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >GO Simple Tunnel - a simple tunnel written in golang</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":194,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="8f3cf9a44cf2399894b24dc6bf9efcf62cb58d68df147c1ce08038558b493c0a" title="Topic: go" href="/topics/go" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> go </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":274,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="cba4c9c34c2748712ef42a782bedcfa17d0ccdd8ddc8d9796e9adc4375c7782f" title="Topic: dns" href="/topics/dns" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> dns </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":283,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="95bdad7cd0f9c8c5f185ef9d7207361a4ff1c09ce30c7c580d722123059d352a" title="Topic: tls" href="/topics/tls" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tls </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":342,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="9a1dd6cf3cfa0910a3ce5cb58ec63e594b33e0d8e3f02711e8194b8db3592712" title="Topic: tunnel" href="/topics/tunnel" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tunnel </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":343,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="211629a71df9e53edc8c124fa8c8561788bcbaafd9808b546c764026f616201a" title="Topic: ssh" href="/topics/ssh" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ssh </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":344,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f3350ecbf78ec29b04dc4a14be04a93a46db669f46293fd532739537e6aaa679" title="Topic: golang" href="/topics/golang" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> golang </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13419,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="af53a06d4f753c527553810b7b4b2593a2833fa5dd9abafd1b9c4b8d2a99d1c3" title="Topic: http2" href="/topics/http2" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> http2 </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22190,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f3b02ea79cc27d06c1ded96c136611c247cd3aabc61cff5f244857b7c326561f" title="Topic: socks5" href="/topics/socks5" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> socks5 </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":34713,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="6fbe6a4d73df424931c5d97a9da8dbb924396490064fa9976f6967a6c06f38ae" title="Topic: shadowsocks" href="/topics/shadowsocks" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> shadowsocks </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":83405,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="941f216966f70b164dd2572d5dafc61d48d64c1ab7afd4647c31f3cad94eac04" title="Topic: kcp" href="/topics/kcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> kcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":99676,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="af18bd0933bddda72203e31889a7b0a956309e1629f7dcd8610710019af00b9c" title="Topic: quic" href="/topics/quic" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> quic </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":251754,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7d33e30510eb5082591ddd56a6b32f57697d603cf1197e563b03b380c1e0db29" title="Topic: tuntap" href="/topics/tuntap" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tuntap </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":311798,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ca770d576aad2d4cb186769e0d37126fef672291808db32b36bda80bbe3aa154" title="Topic: sni" href="/topics/sni" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> sni </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":547696,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5ff4726b07bc5704bda6e57b690784caf881d5ba3f498f45d53e67aa5f00bd2d" title="Topic: obfs4" href="/topics/obfs4" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> obfs4 </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-10-11T08:02:49Z" class="no-wrap">Oct 11, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #00ADD8"></span> <span itemprop="programmingLanguage">Go</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":4533203,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="e27eb0c1084b1efcdba8fd6735c94023d352398c6cd99b0cc23431c3f552c2ba" data-turbo="false" href="/snail007" data-view-component="true" class="Link"> snail007 </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":103126070,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="fb8440108f9d15baaffe2678cab032efa05df79263d95e6090ff939c18117c11" data-turbo="false" href="/snail007/goproxy" data-view-component="true" class="Link text-bold wb-break-word"> goproxy </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fsnail007%2Fgoproxy" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":103126070,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f2e67ba0fdaf263d50652969ea4e94e059a81a1c9342a8bc47a020d15caae785" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="15857 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="15,857" data-view-component="true" class="Counter js-social-count">15.9k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-103126070" aria-current="true" href="/snail007/goproxy" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":103126070,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="42cc8ac2aa0308f2ee853448311e71d687657515c0b98c3c1c3ef5fb3431a50b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-103126070" href="/snail007/goproxy/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":103126070,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b5d5ee054f3d8f6098c3c39e75c474481da74cc6eab4a23e8b3ef17a16fa65c3" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-103126070" href="/snail007/goproxy/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":103126070,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="86e7c5e24132b8a4e9a30157ff9860cbd79e96aad89104ecf912eb0865ce2f8a" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-103126070" href="/snail007/goproxy/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":103126070,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="62fc08aa81a05d129ae1874a97a23877e5541a37194326979af83eab7754e540" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >🔥 Proxy is a high performance HTTP(S) proxies, SOCKS5 proxies,WEBSOCKET, TCP, UDP proxy server implemented by golang. Now, it supports chain-style proxies,nat forwarding in different lan,TCP/UDP port forwarding, SSH forwarding.Proxy是golang实现的高性能http,https,websocket,tcp,socks5代理服务器,支持内网穿透,链式代理,通讯加密,智能HTTP,SOCKS5代理,黑白名单,限速,限流量,限连接数,跨平台,KCP支持,认证API。</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":283,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="95bdad7cd0f9c8c5f185ef9d7207361a4ff1c09ce30c7c580d722123059d352a" title="Topic: tls" href="/topics/tls" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tls </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":473,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ec771acda08f191d3c4e7b4c6b4b466031015951c6d419ac9fdbaf02d652ec71" title="Topic: http" href="/topics/http" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> http </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":868,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="150e29cc691a878e613d6a179f42944e1ba45c8a5afe3296551e9eab46252f96" title="Topic: socket" href="/topics/socket" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> socket </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":21170,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="17977076792e7538018b8f5ad879153e6130024aacaf3d3b7877b220a42c62a5" title="Topic: http-proxy" href="/topics/http-proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> http-proxy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":21177,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4b1f5ce1cf3f89c003c2b5bfcf78472feb15ea19789fe1ad06f82f5ecd2bcc10" title="Topic: https-proxy" href="/topics/https-proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> https-proxy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22190,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f3b02ea79cc27d06c1ded96c136611c247cd3aabc61cff5f244857b7c326561f" title="Topic: socks5" href="/topics/socks5" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> socks5 </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":23587,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="76497289dd9d968f322bfceea3088ac3457212aea10c17e6c6a23843f26a6a45" title="Topic: reverse-proxy" href="/topics/reverse-proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> reverse-proxy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":34592,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="91d6316e8a45317e2b3c439583496a497bbb39b5487e1085576a5f8d57208206" title="Topic: tcp-proxy" href="/topics/tcp-proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp-proxy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":39562,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="2ec2df69b4481268090b5fa433cf92891eef0d3abe52594f8d153c904590a8d5" title="Topic: websocket-proxy" href="/topics/websocket-proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> websocket-proxy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":177560,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="2c72b58a158d608a94eccb244a387f44b813a610476fbd5a05aa0d947bb0214a" title="Topic: kcptun" href="/topics/kcptun" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> kcptun </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":225810,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="6b60917c4a8f531cc1b460bcb94c2c8042102e6f56acc43f25f499ed54a3eb20" title="Topic: socks5-proxy" href="/topics/socks5-proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> socks5-proxy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":318205,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5b66af31d5e811dcc7bf5d59a4f59ff893b25bf0e829163676fe4a8745c0babb" title="Topic: transparent-proxy" href="/topics/transparent-proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> transparent-proxy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":358644,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b2f56cbaf7c5b4cd42b52b2464653ef85a22478b6f5c0c0561cf5198633e9db4" title="Topic: udp-proxy" href="/topics/udp-proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp-proxy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":366294,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="022e929b3521fb40319d3a55bf97b368e97c3cd268b22dc7873b2c8498296b17" title="Topic: dns-proxy" href="/topics/dns-proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> dns-proxy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":408582,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="48297e169604f506244bcc7ae694b22850d7b836c4d379e4956f2901a94eddd1" title="Topic: tls-proxy" href="/topics/tls-proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tls-proxy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1120098,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a34529d0cb8ee5ff8ee45ac5f277a9fa3cf92e3ae3da350a501613ce21ad631a" title="Topic: upstream-proxies" href="/topics/upstream-proxies" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> upstream-proxies </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1120099,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="6e68ef64e49810005ee00e8047730151ba85c09b28b005bf6ee94307e523b275" title="Topic: ss-proxy" href="/topics/ss-proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ss-proxy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1120101,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="0a3fa6de521cb7f6dd0e447039d4dd241fcb8c38f6e840fdbb30b9148bb36fdd" title="Topic: encryption-proxy" href="/topics/encryption-proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> encryption-proxy </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-10-27T09:30:36Z" class="no-wrap">Oct 27, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #00ADD8"></span> <span itemprop="programmingLanguage">Go</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":3035071,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="08e55d9077f17fbdedfb28b992b07149a0d3fba407e2055b2ec8499c13a09733" data-turbo="false" href="/skywind3000" data-view-component="true" class="Link"> skywind3000 </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":28515839,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b4a762f02900764c1b1e033c8311680ba4b958703153ef6fc972f404ee52e3cf" data-turbo="false" href="/skywind3000/kcp" data-view-component="true" class="Link text-bold wb-break-word"> kcp </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fskywind3000%2Fkcp" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":28515839,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="cd52c32559961e15c422ed0c6d109db4b4319c0e3d98b6abc7011b4f9534051b" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="15414 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="15,414" data-view-component="true" class="Counter js-social-count">15.4k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-28515839" aria-current="true" href="/skywind3000/kcp" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":28515839,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ba3c2f2b961d98cf25afc5fba05cf9cb567615bcb7df3026be5ddf7e000b2558" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-28515839" href="/skywind3000/kcp/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":28515839,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="d2e434fa3833de6f25e6f29d8c9710d06f5a38e08ffe92ae70378c5b4728a0f4" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-28515839" href="/skywind3000/kcp/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":28515839,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4a477b7548c0cd12d03c346a815d0c05e221a0f16dc1d3f6ef583fca964e4259" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >⚡ KCP - A Fast and Reliable ARQ Protocol</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":107,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b001911874b8afcaed75f02861e02e3d0dd81be970058eb6e83f2923cd7301eb" title="Topic: c" href="/topics/c" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> c </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":342,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="9a1dd6cf3cfa0910a3ce5cb58ec63e594b33e0d8e3f02711e8194b8db3592712" title="Topic: tunnel" href="/topics/tunnel" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tunnel </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":868,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="150e29cc691a878e613d6a179f42944e1ba45c8a5afe3296551e9eab46252f96" title="Topic: socket" href="/topics/socket" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> socket </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13070,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="e0b502274c3651c6519380c7e89dd699c2a71103d351fac2fceb2f1edb080598" title="Topic: accelerator" href="/topics/accelerator" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> accelerator </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13252,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="828e297b580ef68a8c7928115c79f3916833c2ee0c4a3015169c54b0d30c9e40" title="Topic: protocol" href="/topics/protocol" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> protocol </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":74800,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="99e1cc99926e64d55fda2e55e57871586a6ebfc8bbfb476daff3f2096f34685d" title="Topic: srt" href="/topics/srt" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> srt </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":75014,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f2dc2894ffce4275a7851bd431639a907224399d90019870d4e134d78eaa5f81" title="Topic: low-latency" href="/topics/low-latency" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> low-latency </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":83405,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="941f216966f70b164dd2572d5dafc61d48d64c1ab7afd4647c31f3cad94eac04" title="Topic: kcp" href="/topics/kcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> kcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":99676,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="af18bd0933bddda72203e31889a7b0a956309e1629f7dcd8610710019af00b9c" title="Topic: quic" href="/topics/quic" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> quic </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":114287,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="358bbb7aaa6540dc582231dacc679ee206e049fd9f34f3458b5ddbe836350653" title="Topic: rtc" href="/topics/rtc" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> rtc </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":117751,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="cac472ddfbc4d51b6ca1baf1595670437193fa89cb77c3c00b86abfde5bb5685" title="Topic: ack" href="/topics/ack" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ack </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":177560,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="2c72b58a158d608a94eccb244a387f44b813a610476fbd5a05aa0d947bb0214a" title="Topic: kcptun" href="/topics/kcptun" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> kcptun </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":238934,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="76d2e3068e716ee0e277c52711f1003b30ae2dbc99bbd37fd0e64671e6cbff0e" title="Topic: rtt" href="/topics/rtt" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> rtt </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":377013,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7416972c81a941d06a0753bdb2a4d407a3dc5dc269ccb3da04d5d9848f13aba8" title="Topic: arq" href="/topics/arq" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> arq </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-23T09:30:32Z" class="no-wrap">Nov 23, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #555555"></span> <span itemprop="programmingLanguage">C</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":5111322,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="af8cbce23874c5cd06b371ba21e4822108ad53bd79be8db504081f5e539af7da" data-turbo="false" href="/cesanta" data-view-component="true" class="Link"> cesanta </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":5414488,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1a57558db564c8e9ba808ce00f844b3f6576f1e9056dd0c8e4107dfedf67c197" data-turbo="false" href="/cesanta/mongoose" data-view-component="true" class="Link text-bold wb-break-word"> mongoose </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fcesanta%2Fmongoose" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":5414488,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1341db0a521052dca774887d593ce47fe8e3f238769f5d6e3fd1c5a0f53c8e23" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="11174 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="11,174" data-view-component="true" class="Counter js-social-count">11.2k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-5414488" aria-current="true" href="/cesanta/mongoose" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":5414488,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="66151b6d63b799ea52f4b91993d974bdc92c884bb8d43b9053ba6024d963c1cc" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-5414488" href="/cesanta/mongoose/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":5414488,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a660035a48d2ea341a9e237c4388d396ca1adc91e6fcf4ad1d4ab1bcd21f962f" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-5414488" href="/cesanta/mongoose/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":5414488,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="cbdf7f33a17c002a1e6d2ec67de3241eb4e0836967c219b2e5f093829daf26fa" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-5414488" href="/cesanta/mongoose/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":5414488,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="dd1cab2b6418ca51b08f2184fde15ff1bbfabc7c15eaff0f2b7b4fd578afd830" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Embedded Web Server</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":473,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ec771acda08f191d3c4e7b4c6b4b466031015951c6d419ac9fdbaf02d652ec71" title="Topic: http" href="/topics/http" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> http </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":488,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="21ea35ee952338f96791ef94a54fc51b17d3d30b124c75cca42cc9d41d10cb91" title="Topic: mqtt" href="/topics/mqtt" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> mqtt </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":618,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="6e97e2f20e9dd97a7ebd9de8b09f0e862eb344afadffe59376e78344cf790f1e" title="Topic: iot" href="/topics/iot" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> iot </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":7595,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="606eb904f84b04e454e82d0b426450cda900f9bc65ea40f442a2866910d12bb0" title="Topic: embedded" href="/topics/embedded" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> embedded </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":8920,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5ae2abc56560863fed8776b5a12633e8b9b861eecb6c9e9a4dbbb00adcfb8d3b" title="Topic: web-server" href="/topics/web-server" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> web-server </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12829,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f752ab37d6f4650b806f263b4ce503b42fed9aa19deebd9f25dc278c4b7cfc69" title="Topic: webserver" href="/topics/webserver" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webserver </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13060,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b1f9814ba883c500262c0132baac83f07f5ba9e0c5fab82156fb67ea3cada9a1" title="Topic: websocket" href="/topics/websocket" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> websocket </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":396664,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ed94cc8c6435b5c511aa6edb83a2dfd35a3df10377ea1334c42f474bda5ed1e1" title="Topic: tcpip" href="/topics/tcpip" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcpip </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":505883,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="088ce970ff519355f47bc8f828f98ddd2d3a44122a5d5a0e67955a0e02dc7a7c" title="Topic: tls13" href="/topics/tls13" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tls13 </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-23T08:22:57Z" class="no-wrap">Nov 23, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #555555"></span> <span itemprop="programmingLanguage">C</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_IMAGE","actor_id":null,"record_id":172292744,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="cdb99bb6923323ed164669a268a5981d22c53b020903cc63635b7e9e7e739d8d" data-turbo="false" style="max-height:275px" href="/panjf2000/gnet" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"> <img loading="lazy" src="https://repository-images.githubusercontent.com/172292744/269afe80-78bf-11ea-94aa-21c0f0a1d9e9" alt="gnet" class="d-block width-full" > </a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":7496278,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="d008b0ddb821ab73f726f077dffc3f096904f29dd1f563ac3e4077726f2346f3" data-turbo="false" href="/panjf2000" data-view-component="true" class="Link"> panjf2000 </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":172292744,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="598fbaa3be99b7b78808830951565f68aee4b0d1d2c72da0f6c1d1ba0a3c421e" data-turbo="false" href="/panjf2000/gnet" data-view-component="true" class="Link text-bold wb-break-word"> gnet </a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/panjf2000" aria-label="Sponsor @panjf2000" data-hydro-click="{"event_type":"sponsors.button_click","payload":{"button":"TOPIC_PAGE_SPONSOR","sponsorable_login":"panjf2000","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="eb4490151bc1f30e936f8df8a9d09e2175c9305304fb2d87ccb29d933668fdd3" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fpanjf2000%2Fgnet" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":172292744,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="0a88b8651e10c79c14fff06366effcd4896abd1bbad011900e424074a2734be7" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="9689 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="9,689" data-view-component="true" class="Counter js-social-count">9.7k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-172292744" aria-current="true" href="/panjf2000/gnet" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":172292744,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4cdbbc719a1ebf893442006a8c90f17ba2ca5d9ea08b03455c1eb633b7a6a01c" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-172292744" href="/panjf2000/gnet/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":172292744,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="2d032c4f595065ff14b76acf15dfee7e387948319179d63a7fe2389715a3fe13" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-172292744" href="/panjf2000/gnet/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":172292744,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f30ef6dd26c35f8cad0267e3a77a1d63cd0c92c3310c0b498eafcaa1b0574c4f" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-172292744" href="/panjf2000/gnet/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":172292744,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="6209d43508fa8dd0b6949df0fc204a0efa7adcb345275cf03c3cc27ec9d46ad6" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >🚀 gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":194,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="8f3cf9a44cf2399894b24dc6bf9efcf62cb58d68df147c1ce08038558b493c0a" title="Topic: go" href="/topics/go" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> go </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":344,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f3350ecbf78ec29b04dc4a14be04a93a46db669f46293fd532739537e6aaa679" title="Topic: golang" href="/topics/golang" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> golang </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9150,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f77e41d80cf8e990d11b454734b89a107cc48ef0ea0a30855c3773820d45f670" title="Topic: networking" href="/topics/networking" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> networking </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12079,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a15002e2c91725717b3c0687d651d7e07417249bf0549e4c0bbc96055b5c266d" title="Topic: async" href="/topics/async" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> async </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12403,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="6473f4ab9f562effc09f41accb1ef4ecb96946012e145320ac4beb75575ce602" title="Topic: asynchronous" href="/topics/asynchronous" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> asynchronous </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12924,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5167abc22bde3e118b7450f2ab609680f111a555ee4b7a05db5339e073b06d96" title="Topic: network" href="/topics/network" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> network </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":43904,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="19b4cf0b6f3248815b3d03b3e8486faaf6a7cb201a8460fb29b604cd399881ab" title="Topic: io" href="/topics/io" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> io </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":45041,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="af7066eae4ce19e802fa88e2bb2ddc07f3e81fb16d2659f4f42d4ba3b0011c99" title="Topic: event-loop" href="/topics/event-loop" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> event-loop </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":45592,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="2d73679bf24693336778354f2e5995114b416f3720db7eb75a0a40926b5fcb82" title="Topic: reactor" href="/topics/reactor" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> reactor </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":50141,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="581012a7db6104c403ed59f626e8fd0c20ea854807803264643afd9c221eaded" title="Topic: event-driven" href="/topics/event-driven" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> event-driven </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":74312,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="614df1311577cce2389537d893422034731e95a48141d712d7f43c75d67a2eec" title="Topic: kqueue" href="/topics/kqueue" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> kqueue </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":84636,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="8e108bd6e548d1b0a092c9002ffa7ee95fe069ee003c563358600098aa616362" title="Topic: epoll" href="/topics/epoll" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> epoll </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":106093,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="9d0fe6f00b1b9756b7bea9d7afc111a1f1ae15e217a597041e2c8cf7589d051f" title="Topic: goroutine" href="/topics/goroutine" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> goroutine </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":196490,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="682d4b31a41779d26b43887aa9335b68714324b11b6cd4a0e3d72b1737b29da6" title="Topic: non-blocking" href="/topics/non-blocking" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> non-blocking </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-16T15:51:03Z" class="no-wrap">Nov 16, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #00ADD8"></span> <span itemprop="programmingLanguage">Go</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":4922024,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f33e6f36d59bf6cc15dfacbecf3fb34b5c3ea103c0b25bde947a2232a08d0587" data-turbo="false" href="/wangyu-" data-view-component="true" class="Link"> wangyu- </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":99302204,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ebd6f3bf21f724da30b17faf8e0a2e754919ba3587fdd47b593cd6cc49b71877" data-turbo="false" href="/wangyu-/udp2raw" data-view-component="true" class="Link text-bold wb-break-word"> udp2raw </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fwangyu-%2Fudp2raw" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":99302204,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="eb174c7429080d3619b28dbbfb2a8fe8c3182a497872ec0974794f27641ddf17" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="7339 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="7,339" data-view-component="true" class="Counter js-social-count">7.3k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-99302204" aria-current="true" href="/wangyu-/udp2raw" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":99302204,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="e7a39b72b714fc4f0ff8784f2fff7f00f5786dfcca6416fa2f6cf5b91c98840d" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-99302204" href="/wangyu-/udp2raw/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":99302204,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="3e24feb3db347b3c80db030893703dba640188222ed6343235451f5d293aa692" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-99302204" href="/wangyu-/udp2raw/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":99302204,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="777dc0bb10b3bf385cce3c840ab6b89b9b86f684013d655d1b67de379a854896" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-99302204" href="/wangyu-/udp2raw/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":99302204,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="18a9055623f9b65643b322f9eec9a9407883ec27ca0e7e64ef02c3cf81758df2" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >A Tunnel which Turns UDP Traffic into Encrypted UDP/FakeTCP/ICMP Traffic by using Raw Socket,helps you Bypass UDP FireWalls(or Unstable UDP Environment)</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":342,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="9a1dd6cf3cfa0910a3ce5cb58ec63e594b33e0d8e3f02711e8194b8db3592712" title="Topic: tunnel" href="/topics/tunnel" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tunnel </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":17574,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="9f0133800dbc6c756eace19a5e9e1fa44b18d14049f22346f5cb1d0d76f6d8a1" title="Topic: icmp" href="/topics/icmp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> icmp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":368572,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="2f6025d6e2562f91fc62cb25f8ef8875031012bf62a66b94e1fb75c9c9b197f5" title="Topic: raw-socket" href="/topics/raw-socket" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> raw-socket </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":388084,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="3809edf139aa513c92ee79af9bf31f8a58dee5ad48f422a903aa679f9551b72d" title="Topic: udp-tunnel" href="/topics/udp-tunnel" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp-tunnel </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":551503,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="3f387e6938e8abfab34442d01e6104bbac1fd4309fce2129844edd85b4b3b0e2" title="Topic: raw-tunnel" href="/topics/raw-tunnel" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> raw-tunnel </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":551505,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4093bba073dc24b447aa05d72f1106e1d3471eedf3a428dfa133ac31b6631d77" title="Topic: faketcp" href="/topics/faketcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> faketcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":551544,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="fb6ab76e6dca9dec512e0bead7bc3900004045354e4bbeeef1c90840f8533504" title="Topic: fake-header" href="/topics/fake-header" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> fake-header </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":551572,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="25c9eb0000dbd88b2df42ed16ec086cd278367dbfe801c132d5ab60b9448fca3" title="Topic: icmp-tunnel" href="/topics/icmp-tunnel" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> icmp-tunnel </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":552334,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="eea21365f44bb26f5343b7d938710f83b40bac9e09e4254e09bd0ec58f3bf243" title="Topic: bypass-firewall" href="/topics/bypass-firewall" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> bypass-firewall </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":556201,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="cc7f46a152562ae8c15f271dfbb4e15f97cf8cfb4f126284506bcf91d431597b" title="Topic: icmptunnel" href="/topics/icmptunnel" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> icmptunnel </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-06-10T09:22:32Z" class="no-wrap">Jun 10, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #f34b7d"></span> <span itemprop="programmingLanguage">C++</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_IMAGE","actor_id":null,"record_id":278003645,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="54627b7a0cbca868a61e49e1522b54134edb024c4e325399c94d72b4acec92c2" data-turbo="false" style="max-height:275px" href="/open-mmlab/mmpose" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"> <img loading="lazy" src="https://repository-images.githubusercontent.com/278003645/4f7b6b00-08c5-11eb-8da5-f00148f59f88" alt="mmpose" class="d-block width-full" > </a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":10245193,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f0a21f36e0665ee63c899c46af4ef9a2da18da3f3ae4f433f71a5cbafec53f2f" data-turbo="false" href="/open-mmlab" data-view-component="true" class="Link"> open-mmlab </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":278003645,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f19816d885a4c5695319782e62f2e834028fbcea959cff3829ffa764792a88ce" data-turbo="false" href="/open-mmlab/mmpose" data-view-component="true" class="Link text-bold wb-break-word"> mmpose </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fopen-mmlab%2Fmmpose" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":278003645,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="54590eed49d4f3cc54f065b93f64b60bf54ea8b260433e9910187e73bb5f4573" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="5883 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="5,883" data-view-component="true" class="Counter js-social-count">5.9k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-278003645" aria-current="true" href="/open-mmlab/mmpose" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":278003645,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="e52b90562df9785a89fda4ba50ba944507210f57302fe90b109f1fb916479315" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-278003645" href="/open-mmlab/mmpose/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":278003645,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ed1e2d6ec0576c2f4bfe83454481cd95347c86759713c35bbe8346cedb6489b0" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-278003645" href="/open-mmlab/mmpose/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":278003645,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5efc8a02f23efc1e5d75c6a69146d94ed095312b27a81e9332a76e297f4f07d0" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-278003645" href="/open-mmlab/mmpose/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":278003645,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="38f85afc1715ad7bf16bb6891c94b0c5fd352ae136696a41c64d80ff833a4b4a" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >OpenMMLab Pose Estimation Toolbox and Benchmark.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2149,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="77d2faf8b938ad7ae70dcd239c217b9be50f5f78fd074eebcf36a4a0c737af73" title="Topic: benchmark" href="/topics/benchmark" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> benchmark </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":23301,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b03ce4ada4d55f26a139975b1309e7117b7b268cca9b432ab0bdaf000c629bbc" title="Topic: pytorch" href="/topics/pytorch" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> pytorch </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":223445,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f127ff0c79ef243b60bf029fd7d7ab5a33b7c5f5702b066e98e57d9cf2df6ef7" title="Topic: cpm" href="/topics/cpm" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> cpm </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":353527,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4019a680cf2194a7071c97cd72f6ce50e39dab468352e96f51d23c74057cf8a1" title="Topic: pose-estimation" href="/topics/pose-estimation" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> pose-estimation </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":385818,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="e7615d7c61630a5c4e1e9340047d775f5a247db5703d413ff093fa3f1187bb1c" title="Topic: hourglass" href="/topics/hourglass" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> hourglass </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":447188,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4b5f7030add2a6e4457f1f93fb6e0f4235fd14a19b40ed2d3fb8be75d70d951c" title="Topic: hand-pose-estimation" href="/topics/hand-pose-estimation" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> hand-pose-estimation </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":509994,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a82ee5da384cfbd9bcf6a7ac59f0ae925c0dc48ee7481a842cf32605fb963a8b" title="Topic: mpii" href="/topics/mpii" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> mpii </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":730956,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c69890f478cd726621904dfc734c9e52ec114236e001763379499318c1465122" title="Topic: human-pose" href="/topics/human-pose" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> human-pose </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1013378,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="d80e5b02d17a0e0bbb4fa3f01fc1bee4416738499f8a490883df41c5a377eaab" title="Topic: animal-pose-estimation" href="/topics/animal-pose-estimation" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> animal-pose-estimation </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1023705,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="3f3e0b3c8911d3ac7746e2ac650352035f105c0896d6a4119a2ad1042f79f262" title="Topic: face-keypoint" href="/topics/face-keypoint" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> face-keypoint </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1072574,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="28a0cfa9d716327059b4f7b1e5b0198719fcc6dce3169b149b454dad2e2360f1" title="Topic: hrnet" href="/topics/hrnet" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> hrnet </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1080326,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="941fec11e50132ec0ef65f9e6a6df8f37339a59313d3a1a910252be3a1bbdb26" title="Topic: rsn" href="/topics/rsn" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> rsn </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1215899,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="22dd54471788dc04dc83209c05d59ebc684e101339f44e5f3f033224950f1509" title="Topic: higher-hrnet" href="/topics/higher-hrnet" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> higher-hrnet </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1264526,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4c55a97824d8b2ded8d928c234c1d3ffa8d8660bfdbd58d4543348c42c3f764b" title="Topic: mspn" href="/topics/mspn" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> mspn </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1329886,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f9af765f35731de4b9524e28eb22475f16c9681225c07ba03022c3398717f626" title="Topic: crowdpose" href="/topics/crowdpose" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> crowdpose </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1365553,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4fd837b5ae860c0281aac66ea4f643b30c5958586522c2a1491a7501abcff93d" title="Topic: ochuman" href="/topics/ochuman" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ochuman </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1365555,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7919ae898315056d2a48056371cdbae6f3e0ec7e5dedd90f272ac94102ed52ca" title="Topic: freihand" href="/topics/freihand" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> freihand </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1507486,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c1b81112e340920dba6b3bed8da8701ed1dd2dd40f73fb45716ae4cfbc9add13" title="Topic: mmpose" href="/topics/mmpose" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> mmpose </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2048621,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="d4092f3f84f448c988343a6ff3a699e27db97946c5517bb13bc045f264d36904" title="Topic: rtmpose" href="/topics/rtmpose" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> rtmpose </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-08-07T12:09:05Z" class="no-wrap">Aug 7, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":5990337,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f8a29b804ea6c5f111775d7100684495432a970bea267c81fbc138a38b485e61" data-turbo="false" href="/ldcsaa" data-view-component="true" class="Link"> ldcsaa </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":15257213,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="36466267c2430330c2dd6c5dcb4ba676ba7cef78ddebd2752806cb954190c12b" data-turbo="false" href="/ldcsaa/HP-Socket" data-view-component="true" class="Link text-bold wb-break-word"> HP-Socket </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fldcsaa%2FHP-Socket" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":15257213,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="3fbb78adf8f9842c0b29053fb884082e0d858c0a9ad8242a0170a7a5ba429038" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="5732 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="5,732" data-view-component="true" class="Counter js-social-count">5.7k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-15257213" aria-current="true" href="/ldcsaa/HP-Socket" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":15257213,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="cea7742d5b729e67a2a92831c4ad7cdfcc79935b2e0c4cd49fa847e2fb61f8df" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-15257213" href="/ldcsaa/HP-Socket/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":15257213,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="29b994397ad2a87e281553184d973042c8fff9bce9f12a211ed05fb5993d58f8" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-15257213" href="/ldcsaa/HP-Socket/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":15257213,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b0b4e10a89dbf975bcdba0a5377841b2617db89870b48b899f07c0673bc7134e" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >High Performance TCP/UDP/HTTP Communication Component</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":67,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="59ccda997d8df3e6b142bcc24a284a0f69946ef1d44639c3e9c6abc1f04c68b9" title="Topic: android" href="/topics/android" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> android </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":107,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b001911874b8afcaed75f02861e02e3d0dd81be970058eb6e83f2923cd7301eb" title="Topic: c" href="/topics/c" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> c </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":198,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="609447424a79c6aa6f21c1dd588db8ff3f788692cdfe250b6e6646df44fd7569" title="Topic: windows" href="/topics/windows" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> windows </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":200,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1aed47d4f0ce4988f27347dc1e3fb02157cd9aad7554a2b5a947472e0ec5720c" title="Topic: linux" href="/topics/linux" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> linux </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":438,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="d4fd50fba6681f401440cc728ebc56b17b6a4b49f0bfe9ed8abd9d42bd4f1aeb" title="Topic: ssl" href="/topics/ssl" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ssl </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":473,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ec771acda08f191d3c4e7b4c6b4b466031015951c6d419ac9fdbaf02d652ec71" title="Topic: http" href="/topics/http" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> http </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":868,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="150e29cc691a878e613d6a179f42944e1ba45c8a5afe3296551e9eab46252f96" title="Topic: socket" href="/topics/socket" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> socket </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9150,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f77e41d80cf8e990d11b454734b89a107cc48ef0ea0a30855c3773820d45f670" title="Topic: networking" href="/topics/networking" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> networking </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9466,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7681916ffa6134f6df5ade0c987ced16b6d556f84fe1541b8d67ba52d6684e7f" title="Topic: ndk" href="/topics/ndk" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ndk </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9621,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c5a0e1307a467978e5546dceecd8f3f4fba145cc2f5153d8f88eb598b500ed1b" title="Topic: cross-platform" href="/topics/cross-platform" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> cross-platform </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9802,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="3878d8f81c0a0ee168cab7be22f3f1d5b7930b4b03de66c52aa0aa4749e1bd8e" title="Topic: cpp" href="/topics/cpp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> cpp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12839,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="85b6d4887eff070e602c09d84af43698b64acbb78e9f71b0e7dcf154070a57fb" title="Topic: https" href="/topics/https" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> https </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12924,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5167abc22bde3e118b7450f2ab609680f111a555ee4b7a05db5339e073b06d96" title="Topic: network" href="/topics/network" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> network </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13060,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b1f9814ba883c500262c0132baac83f07f5ba9e0c5fab82156fb67ea3cada9a1" title="Topic: websocket" href="/topics/websocket" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> websocket </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":27518,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4461d461cdf7f3b0be979f4d48120d4f4ad36b8348bef7a3442abbf8026b3e3d" title="Topic: netcore" href="/topics/netcore" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> netcore </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":84636,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="8e108bd6e548d1b0a092c9002ffa7ee95fe069ee003c563358600098aa616362" title="Topic: epoll" href="/topics/epoll" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> epoll </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":363521,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="11174b09cf803299070cf8a1253b57d806b23b0cecdedd0d53f1584c3f701248" title="Topic: iocp" href="/topics/iocp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> iocp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1060575,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="989fbcf869fe0bbe235578cf0ba98de62ed0ba1beb6ebdbea75105bf79dd4784" title="Topic: hpsocket" href="/topics/hpsocket" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> hpsocket </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-10-28T19:03:19Z" class="no-wrap">Oct 28, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #555555"></span> <span itemprop="programmingLanguage">C</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":5218365,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="2bc35ddcd68a3187052770c78af5434bc8542ae7d1041250b6cf6af3352833b5" data-turbo="false" href="/JackJiang2011" data-view-component="true" class="Link"> JackJiang2011 </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":43821045,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="00d9c94ab0eddf335989a7dd6489f4dc73d59c81d974854e3d7aed1b480eefae" data-turbo="false" href="/JackJiang2011/MobileIMSDK" data-view-component="true" class="Link text-bold wb-break-word"> MobileIMSDK </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2FJackJiang2011%2FMobileIMSDK" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":43821045,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="3f64632c8a3961402a1f48278df5e466623678c8b4d3ffb8e40501c83f66c406" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="5543 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="5,543" data-view-component="true" class="Counter js-social-count">5.5k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-43821045" aria-current="true" href="/JackJiang2011/MobileIMSDK" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":43821045,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7671b52a3f2a854e0d0dd75b8c75e51b1152f18959cce5947af66cdcde61a820" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-43821045" href="/JackJiang2011/MobileIMSDK/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":43821045,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="50fbea557c4cadfb19157fbe202c53374e3fc7f8b293db7ebbd9b4982de0b026" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-43821045" href="/JackJiang2011/MobileIMSDK/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":43821045,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="86a5ce87e88546d4414fdec061539508f21fa759c1dddaf92e1bb29374e5fbd2" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >一个原创多端IM通信层框架,轻量级、高度提炼,历经10年、久经考验。可能是市面上唯一同时支持UDP+TCP+WebSocket三种协议的同类开源框架,支持 iOS、Android、Java、H5、小程序、Uniapp,服务端基于Netty。</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12785,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="8dc81dfadcf8dd48953f4e741a4dab45f1a06654b62c63615c4330a61d8cd11f" title="Topic: netty" href="/topics/netty" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> netty </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13060,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b1f9814ba883c500262c0132baac83f07f5ba9e0c5fab82156fb67ea3cada9a1" title="Topic: websocket" href="/topics/websocket" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> websocket </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":34753,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a2efde7775ca0c119b1121c446639a106e18ee3e129e4d9e4853caad512252c5" title="Topic: nio" href="/topics/nio" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> nio </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":74853,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="241e2196695b8b6035c758fbdca795a3afaaca81f3439838d5a2a74bfada3d09" title="Topic: im" href="/topics/im" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> im </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":118967,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="8fac678318d92c4e0bb212780bd49bf72628a19bdc30bbb3d6bcebcb535e75ea" title="Topic: push" href="/topics/push" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> push </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":318432,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b3d05ed98541f61892249e140f8cdb8e96ebfe318b8db7bfe715ade679a1b593" title="Topic: uniapp" href="/topics/uniapp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> uniapp </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-06-29T09:22:35Z" class="no-wrap">Jun 29, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #438eff"></span> <span itemprop="programmingLanguage">Objective-C</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":65781588,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="db1256bb19e91b5e3fa676fe123f103a1863bcc83ad51b191574f8566a4988e6" data-turbo="false" href="/MirrorNetworking" data-view-component="true" class="Link"> MirrorNetworking </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":141745943,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="6b5ff5fde298dcb0498e915b75ab7afdb72e461f7867fb9ebecbf635f83e57fa" data-turbo="false" href="/MirrorNetworking/Mirror" data-view-component="true" class="Link text-bold wb-break-word"> Mirror </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2FMirrorNetworking%2FMirror" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":141745943,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ea2158b29378d5e0efd70756ce0e217b08abe5a7b36c67b72a139d2b3c29f728" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="5251 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="5,251" data-view-component="true" class="Counter js-social-count">5.3k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-141745943" aria-current="true" href="/MirrorNetworking/Mirror" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":141745943,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b4382ad9da53dff694404f563d7abc8da5acdcd85962f2f4d680ede4c92778da" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-141745943" href="/MirrorNetworking/Mirror/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":141745943,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="8b4a6a70c64aaa69e00a513331675839c4f1590af0efd55140d8e2bc3c0a17f4" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-141745943" href="/MirrorNetworking/Mirror/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":141745943,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="6d6c8de2d9b836740b1fbd160b19618aab4ff5efa9b98a5005ee1c089a984366" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >#1 Open Source Unity Networking Library</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":3402,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4dbf75913182aaffafcd6f501c1bb87dfc985928bac1256a7c262001f49f6dc1" title="Topic: games" href="/topics/games" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> games </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9150,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f77e41d80cf8e990d11b454734b89a107cc48ef0ea0a30855c3773820d45f670" title="Topic: networking" href="/topics/networking" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> networking </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":11962,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="503158a2d0d5dacfc3c4f01e169404117f136839c0033aeeec59de5860783208" title="Topic: unity" href="/topics/unity" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> unity </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12902,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="00d5e69c9dcf1ca34594ed246a27f4bd8dbd65eed8ea21ca69901245c7933249" title="Topic: mirror" href="/topics/mirror" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> mirror </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22873,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="0753d81d3d9458775f8a575097f03d72a88cbbcb97e84f300aaa00df5e4db6be" title="Topic: mmo" href="/topics/mmo" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> mmo </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":23940,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="3e3bd4b1cfb3dc0550c24b91e678063ebe1ed9fad23e4ef091b8892fd5fc0399" title="Topic: mmorpg" href="/topics/mmorpg" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> mmorpg </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":83405,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="941f216966f70b164dd2572d5dafc61d48d64c1ab7afd4647c31f3cad94eac04" title="Topic: kcp" href="/topics/kcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> kcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":133411,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="625325110fac9972459d8cc3928186a5a2b94569f2e675661cd42fa67ebde712" title="Topic: libuv" href="/topics/libuv" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> libuv </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":154259,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="37f09d6bd0d29d367f0baad848c0693010972b6b0226d437e32737d314d75b4f" title="Topic: unet" href="/topics/unet" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> unet </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":527663,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="949c666ddf62f049401e1f18eefeb7ec4607c24d3ae35c7ff0a5005ab42a1362" title="Topic: telepathy" href="/topics/telepathy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> telepathy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":647525,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f05332213a959426955d2758954999851d8f72176de51f486ac762e252a58680" title="Topic: ummorpg" href="/topics/ummorpg" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ummorpg </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":712993,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f9ffc6e0e0b009da25ea0e2b56048454e11652309052ba7a56d4cced47e6617d" title="Topic: hlapi" href="/topics/hlapi" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> hlapi </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1390653,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c407a2cfd087f2b6b8902da8444b7fd446c9e41bdc283f2c3aa38d3685190a09" title="Topic: mmos" href="/topics/mmos" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> mmos </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-22T18:45:48Z" class="no-wrap">Nov 22, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #178600"></span> <span itemprop="programmingLanguage">C#</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":13245940,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f60cc9a973f1c776ba9532f8b735580801a984350ebb65b433cdafb1136a0673" data-turbo="false" href="/baidu" data-view-component="true" class="Link"> baidu </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":440436833,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b8d25fdbc635f8fd4881100bd819e6685c7a4267a6e4cf9248ac96c0c8414fa9" data-turbo="false" href="/baidu/dperf" data-view-component="true" class="Link text-bold wb-break-word"> dperf </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fbaidu%2Fdperf" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":440436833,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a9a2c78203f8591a493d27385b946eab15196c47879266b8dc7497c3a86b6108" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="5064 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="5,064" data-view-component="true" class="Counter js-social-count">5.1k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-440436833" aria-current="true" href="/baidu/dperf" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":440436833,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="49abce7dc13ab16df1423341523e70f0abef8799693aa70186d61af9d5f68e9e" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-440436833" href="/baidu/dperf/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":440436833,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="d0e781b4647d0e62f37f6da79bcbe41a73154eaa471cebe96342515ac0640b80" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-440436833" href="/baidu/dperf/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":440436833,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="39ca82218a97fe724746b89d37fd2756e58c65226f00378b1cce1bd80f6df092" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-440436833" href="/baidu/dperf/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":440436833,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a0bbb5c529225f242ce6d1cf860e8bbcb5c84cdcd1ecba07c13bb93d068abd0e" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >dperf is a 100Gbps network load tester.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":282,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="768a8da72cc32c90829e8caeb55fc1f4a9f95516b4d805a5730adc91f999a525" title="Topic: nginx" href="/topics/nginx" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> nginx </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":473,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ec771acda08f191d3c4e7b4c6b4b466031015951c6d419ac9fdbaf02d652ec71" title="Topic: http" href="/topics/http" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> http </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2483,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="dc88b0acbb06033ad85d471f3fefad99788a27d9a976997bee95f5e85ad795d8" title="Topic: performance" href="/topics/performance" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> performance </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9843,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7d67ab4643b3b516d76d46d0a82c7b37d252fc78304db725fa49afc9fadda25f" title="Topic: ipv6" href="/topics/ipv6" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ipv6 </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12066,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b90994d564db9ade91e58fd2b7300f5c9facfaf84a56ca0f2815d17036ef33db" title="Topic: dpdk" href="/topics/dpdk" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> dpdk </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":177480,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="3532b28499273ad380c855d5e9a740d941747d6f2744a29480f73a3728503063" title="Topic: packet-loss" href="/topics/packet-loss" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> packet-loss </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":188107,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="59539a811c2e03ca13a02f84dc74a8b53c8a47bcc41ff1a5d66ddbc8f846059d" title="Topic: vlan" href="/topics/vlan" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> vlan </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":224205,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="d442523adae2545365f12142ac814adc314916bd15d6c1affe7ddf31452668f5" title="Topic: vxlan" href="/topics/vxlan" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> vxlan </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":406045,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a12f4471ccba14f0b93231e482fb44ffd91e24a582d387c2be765b6625b582c2" title="Topic: lvs" href="/topics/lvs" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> lvs </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":957366,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="e609df265e6460aaa465e6ffffe4d16a190fb29fb14db8e8e07084e776b1b2c0" title="Topic: load-tester" href="/topics/load-tester" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> load-tester </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1648166,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="12e4c8ce627278f376ff8e1d422fdff09be52562ff8df570fd00158bb10c9c3c" title="Topic: dpvs" href="/topics/dpvs" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> dpvs </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-07T06:02:00Z" class="no-wrap">Nov 7, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #555555"></span> <span itemprop="programmingLanguage">C</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":18096895,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="bfd663d3da5895ab38774c712bec718cc965f256ed6e83a041caba3af0b3dead" data-turbo="false" href="/moranzcw" data-view-component="true" class="Link"> moranzcw </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":55973114,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="d9fd511b83b7a7796d6efbad747da7ca06347efaae2d2b02fdccaa8d29ac17e6" data-turbo="false" href="/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES" data-view-component="true" class="Link text-bold wb-break-word"> Computer-Networking-A-Top-Down-Approach-NOTES </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fmoranzcw%2FComputer-Networking-A-Top-Down-Approach-NOTES" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":55973114,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="feaf98a7fbcafce9dd879764d44aca5c81c7470cad20f34b360dddb794a34ea5" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="5033 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="5,033" data-view-component="true" class="Counter js-social-count">5k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-55973114" aria-current="true" href="/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":55973114,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="2ed4cd1b1e63ff0642babf407fd06a3ea5011da7f471f99bae8f69db8ec0df60" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-55973114" href="/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":55973114,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5197095505d19a9b3027a30661000caf6d1568a9a6a29c0441e14acebae88f6b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-55973114" href="/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":55973114,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5f5a8093b95d3a764c6d60fcbd14c2329d303c2c7c561953f656b941609c3bb5" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >《计算机网络-自顶向下方法(原书第6版)》编程作业,Wireshark实验文档的翻译和解答。</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":84,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c18dc59ebe9f57832e88a1da7e3a023ea650f1616bdb0cf6eaa711c587ec82f4" title="Topic: python" href="/topics/python" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> python </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12532,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="6178ea4ac5e34e37843883f6194dd1cc399e66c1808d010a967c60beed1fb7e7" title="Topic: notes" href="/topics/notes" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> notes </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12829,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f752ab37d6f4650b806f263b4ce503b42fed9aa19deebd9f25dc278c4b7cfc69" title="Topic: webserver" href="/topics/webserver" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> webserver </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12924,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5167abc22bde3e118b7450f2ab609680f111a555ee4b7a05db5339e073b06d96" title="Topic: network" href="/topics/network" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> network </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":69015,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="740a01984845c045ca002b64ad73fe458dc737e46c653356efcd4eb53f47339f" title="Topic: wireshark" href="/topics/wireshark" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> wireshark </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":522855,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="e6a03fd7e4bf37e039671d4666f320a9626746419b41d2d1eee4a0923ce043fc" title="Topic: wireshark-http" href="/topics/wireshark-http" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> wireshark-http </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2021-03-08T09:59:21Z" class="no-wrap">Mar 8, 2021</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":4922024,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f33e6f36d59bf6cc15dfacbecf3fb34b5c3ea103c0b25bde947a2232a08d0587" data-turbo="false" href="/wangyu-" data-view-component="true" class="Link"> wangyu- </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":99672281,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="de0b57872dfca3ee1545fc46e716b43450a2c1f02c4136532005ae5848680eb0" data-turbo="false" href="/wangyu-/UDPspeeder" data-view-component="true" class="Link text-bold wb-break-word"> UDPspeeder </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fwangyu-%2FUDPspeeder" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":99672281,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7f0e8279b9041c9d6b56434a99b4357de52b6f806fc474b91de7ad0f043fc25d" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="4741 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="4,741" data-view-component="true" class="Counter js-social-count">4.7k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-99672281" aria-current="true" href="/wangyu-/UDPspeeder" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":99672281,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="17802004bbc1dddac55bde917e73b7d8356823ab74e79fda04e81730480dbb21" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-99672281" href="/wangyu-/UDPspeeder/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":99672281,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="61e20d8337ef2c55233a25ba983d1d4291fa54b582fc9da1344d5a9f8e64ead4" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-99672281" href="/wangyu-/UDPspeeder/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":99672281,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="61f7df00e8850d27389e77ddb448ec80554b2437404faa031252d41ffde971f9" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-99672281" href="/wangyu-/UDPspeeder/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":99672281,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="0627d79779d3bfcf5e6bf0ce9f11217ebe50aeb6d6a953bd54eafe36d614c487" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >A Tunnel which Improves your Network Quality on a High-latency Lossy Link by using Forward Error Correction, possible for All Traffics(TCP/UDP/ICMP)</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":342,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="9a1dd6cf3cfa0910a3ce5cb58ec63e594b33e0d8e3f02711e8194b8db3592712" title="Topic: tunnel" href="/topics/tunnel" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tunnel </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12790,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="150eda6816ca4ccdd32ea95c606d9881d267b76367b62ffe7a05169a744a76db" title="Topic: ecc" href="/topics/ecc" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> ecc </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13026,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="0bd2f0547aca114c2596e25c3a0974a51c5c8a631e14a89237eabdebe0c41b99" title="Topic: proxy" href="/topics/proxy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> proxy </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":60158,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="026bea6c2a0c9a900e9087b43a1f06f301875f88119387d34c57af854afd505d" title="Topic: reed-solomon" href="/topics/reed-solomon" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> reed-solomon </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":83406,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="80fe0257a4827e6deeff17a96db506b4da86ae83f6fa10329129b95328d2510a" title="Topic: fec" href="/topics/fec" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> fec </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":388084,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="3809edf139aa513c92ee79af9bf31f8a58dee5ad48f422a903aa679f9551b72d" title="Topic: udp-tunnel" href="/topics/udp-tunnel" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp-tunnel </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-06-16T14:42:03Z" class="no-wrap">Jun 16, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #f34b7d"></span> <span itemprop="programmingLanguage">C++</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_IMAGE","actor_id":null,"record_id":188995570,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="62d817e38f84610b06bc5041a61ee5e89633377c8e51a0cb079aa5a73788b779" data-turbo="false" style="max-height:275px" href="/pirate/wireguard-docs" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"> <img loading="lazy" src="https://repository-images.githubusercontent.com/188995570/3337da80-824a-11e9-92f6-3be5dcb648c6" alt="wireguard-docs" class="d-block width-full" > </a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":511499,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="fc38145388291c509ff99540257565070c498ba7469f1f25c979b909db268486" data-turbo="false" href="/pirate" data-view-component="true" class="Link"> pirate </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":188995570,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="25aff032c235227f4ada1d6e40ab5c6baf2e18525857451498198863e72b4c9c" data-turbo="false" href="/pirate/wireguard-docs" data-view-component="true" class="Link text-bold wb-break-word"> wireguard-docs </a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/pirate" aria-label="Sponsor @pirate" data-hydro-click="{"event_type":"sponsors.button_click","payload":{"button":"TOPIC_PAGE_SPONSOR","sponsorable_login":"pirate","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b33048489c5758574d2e9a37efb83eb268e7efd46630a6effe7ea8d93348847a" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fpirate%2Fwireguard-docs" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":188995570,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f7823a805860545017a92761a3d9f82b0b56ef55e0818ee94b63d31008ac637d" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="4631 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="4,631" data-view-component="true" class="Counter js-social-count">4.6k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-188995570" aria-current="true" href="/pirate/wireguard-docs" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":188995570,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="8f9c5e28cff03a2211ba3a198cc7ef3bab1decc82f42c43b034c1358aa792f6b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-188995570" href="/pirate/wireguard-docs/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":188995570,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7adfd6eb5bb58bc60ae389419b6ae3eccecc64a45a74e7bec9f5d6db2a2376b1" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-188995570" href="/pirate/wireguard-docs/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":188995570,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5d74ace69b698214a906035cfe89651f1e8d1853edbf9f0e1cf6771877648e76" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-188995570" href="/pirate/wireguard-docs/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":188995570,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4a187907032b8d42929762c67b844a32f331eee58b70b5240911196bf56b99a5" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >📖 Unofficial WireGuard Documentation: Setup, Usage, Configuration, and full example setups for VPNs supporting both servers & roaming clients.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":200,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1aed47d4f0ce4988f27347dc1e3fb02157cd9aad7554a2b5a947472e0ec5720c" title="Topic: linux" href="/topics/linux" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> linux </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":342,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="9a1dd6cf3cfa0910a3ce5cb58ec63e594b33e0d8e3f02711e8194b8db3592712" title="Topic: tunnel" href="/topics/tunnel" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tunnel </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":646,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f8ce48b2153e3fb8ffc93b38cd20817921c1a8d256b8344035bc76634aae6b57" title="Topic: security" href="/topics/security" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> security </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9150,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f77e41d80cf8e990d11b454734b89a107cc48ef0ea0a30855c3773820d45f670" title="Topic: networking" href="/topics/networking" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> networking </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12529,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="644d42a2eef87cb0557182dcbebdb3c5797e77584ec69fa4173979d6b75fe8d2" title="Topic: kernel-module" href="/topics/kernel-module" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> kernel-module </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12618,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="11d94eaebc11d29c1d8581785061352305f9f0248ed4672f549c45dcb3671420" title="Topic: internet" href="/topics/internet" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> internet </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":14095,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="df7ba8d0d377533e05359bbfbde6e029088597fbf8038bd27ba678bec2b2a01e" title="Topic: nat" href="/topics/nat" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> nat </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":35294,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="3d68745b1e716b0db28539f541c93fd7495c5951dc8bb2690fa74cef6627d664" title="Topic: vpn" href="/topics/vpn" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> vpn </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":251754,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7d33e30510eb5082591ddd56a6b32f57697d603cf1197e563b03b380c1e0db29" title="Topic: tuntap" href="/topics/tuntap" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tuntap </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":357383,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1348f80757be3696a98bf5beb617691ba3ff4e3cecba26c1f4cd062bb4c3df79" title="Topic: wireguard" href="/topics/wireguard" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> wireguard </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":957156,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="d9defeb6b5adc1496f27b745d9dbfb48d387732da12f9c44379b468896818412" title="Topic: mesh-networking" href="/topics/mesh-networking" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> mesh-networking </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":1037613,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="34fb878fc96b88024741b115af4f167264e675abe7d50b92df529ca371091c47" title="Topic: vpn-solution" href="/topics/vpn-solution" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> vpn-solution </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-10-19T04:51:05Z" class="no-wrap">Oct 19, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #89e051"></span> <span itemprop="programmingLanguage">Shell</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":15803194,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="09f2a511aff379ac9c744d0b043dc7c075fe75ac4bd839b3c401ca3b5fe7261f" data-turbo="false" href="/hundredrabbits" data-view-component="true" class="Link"> hundredrabbits </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":121553439,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="6728f563ad1997dbae1088545e622093ad301f9fc0f5d2849bf5a3dc672496bf" data-turbo="false" href="/hundredrabbits/Orca" data-view-component="true" class="Link text-bold wb-break-word"> Orca </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fhundredrabbits%2FOrca" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":121553439,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b619e7a38eefa33f3251de8be92724814bfe49c269c2049a77bc4f1960e9636f" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="4584 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="4,584" data-view-component="true" class="Counter js-social-count">4.6k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-121553439" aria-current="true" href="/hundredrabbits/Orca" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":121553439,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7e9a430c861dc9cc6db2d349bfcd75df5a46e6717a44eae33034fd963b480526" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-121553439" href="/hundredrabbits/Orca/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":121553439,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5d01c9f8ae9d3cdd5826b1921522129ba66efbf2fb6d1114aa9d8c502c5f5efb" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-121553439" href="/hundredrabbits/Orca/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":121553439,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="41e06e6988ebf9ec12276def18fdac960f08967a429fb7b42fa5b33b46b82a81" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Esoteric Programming Language</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":288,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="0c1ee6ba977da0549e79289f720782a5a8f67d6aec42a8b8b904d5e35ab908eb" title="Topic: programming-language" href="/topics/programming-language" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> programming-language </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9409,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="aa66579b52019c66a61cca97997f3906cbebd8d184d34eb76d212824d1862405" title="Topic: osc" href="/topics/osc" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> osc </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12472,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="940ae3b6371dc34724df2e308188fdb5aeeb034d50641b139f27153185a98dc1" title="Topic: midi" href="/topics/midi" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> midi </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":20677,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5da024aaa660635ccd0bf0de48c1987a1afb0107a83c992dbcadaa7586a764a8" title="Topic: esoteric-language" href="/topics/esoteric-language" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> esoteric-language </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":73807,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c32efce0b96e01a26ab4ba29dfb5e02dedddea127e48b2205e5a8bd5bad099f3" title="Topic: livecoding" href="/topics/livecoding" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> livecoding </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-07-10T20:54:49Z" class="no-wrap">Jul 10, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #f1e05a"></span> <span itemprop="programmingLanguage">JavaScript</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":507999,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c25bd54d9cd60eadcccd6abc8e321a310b3d205a5b8295d8f8e9185b74fdd506" data-turbo="false" href="/EmilHernvall" data-view-component="true" class="Link"> EmilHernvall </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":63241883,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4a409d3881132e19a326fcde433999d6b0e2c74194ec14124ab27f7cfb106c90" data-turbo="false" href="/EmilHernvall/dnsguide" data-view-component="true" class="Link text-bold wb-break-word"> dnsguide </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2FEmilHernvall%2Fdnsguide" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":63241883,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="fc18eb09baf2d595258bf537ae58cc33fcff68a8a5076a404b846c0e9da3a2a4" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="4097 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="4,097" data-view-component="true" class="Counter js-social-count">4.1k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-63241883" aria-current="true" href="/EmilHernvall/dnsguide" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":63241883,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="0d8b0d25d2b5a869555c3be0acf99726b6dd5eb650f773bee89ebaa5a7eaf179" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-63241883" href="/EmilHernvall/dnsguide/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":63241883,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="cd0bcd92696b484e4df59a663e73842296ce4638099c2c2b4309a0e71ae3ad7a" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-63241883" href="/EmilHernvall/dnsguide/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":63241883,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c04af5d85e632a9732ff39c77f691e74fc54d348e7da86bc91e26aa81d75ce6d" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >A guide to writing a DNS Server from scratch in Rust</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":274,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="cba4c9c34c2748712ef42a782bedcfa17d0ccdd8ddc8d9796e9adc4375c7782f" title="Topic: dns" href="/topics/dns" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> dns </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":300,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="702362e531af4c5edd45bd4599a96d4ceeff8d84276f4c4b84497a5de74a083b" title="Topic: rust" href="/topics/rust" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> rust </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12618,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="11d94eaebc11d29c1d8581785061352305f9f0248ed4672f549c45dcb3671420" title="Topic: internet" href="/topics/internet" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> internet </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":109935,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f5fc41216f477b03bca6efa6b45d9787435d1e25ea34672caa9cd49baaefd148" title="Topic: dns-server" href="/topics/dns-server" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> dns-server </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":180479,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="f140019214dd0e06e8ce8a4df8300059a4adb189b1d80154dea279656aee71f0" title="Topic: network-programming" href="/topics/network-programming" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> network-programming </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-09-09T07:43:57Z" class="no-wrap">Sep 9, 2024</relative-time> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":456060,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="5372053d2363f10805ea70455d82782a49a0d48c6e2930bac056230fbe6f3630" data-turbo="false" href="/kerryjiang" data-view-component="true" class="Link"> kerryjiang </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":5297370,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="9dc994a70b81e32bc645023b06f0b161a9cd49e22afcc0d99930cb817c19b383" data-turbo="false" href="/kerryjiang/SuperSocket" data-view-component="true" class="Link text-bold wb-break-word"> SuperSocket </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fkerryjiang%2FSuperSocket" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":5297370,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c99acaf3ec1ade241cc46a17578b660515db625820c6f9ce622f2f479fdfcb3a" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="3945 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="3,945" data-view-component="true" class="Counter js-social-count">3.9k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-5297370" aria-current="true" href="/kerryjiang/SuperSocket" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":5297370,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="633ec49e2b59ea6e91f17c314c162f7c3e294358addd26a911aca9f1317a1feb" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-5297370" href="/kerryjiang/SuperSocket/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":5297370,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b392168b2c773714465f40956d9aedc2a0997d4b728aab5bb14a81ddb328517e" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-5297370" href="/kerryjiang/SuperSocket/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":5297370,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="19a88e09cef03c4895bcfbbca1730b4edf905c2f0ab4f458c53b5fd982574ce9" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-5297370" href="/kerryjiang/SuperSocket/discussions" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_DISCUSSIONS","click_visual_representation":"DISCUSSIONS_TAB","actor_id":null,"record_id":5297370,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4dce82b12d54d20191b3a7e210724973485197152a70d41f7dce6c699536a879" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >SuperSocket is a light weight, cross platform and extensible socket server application framework.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":868,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="150e29cc691a878e613d6a179f42944e1ba45c8a5afe3296551e9eab46252f96" title="Topic: socket" href="/topics/socket" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> socket </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9295,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a7c337fbbe7841f5bf37f92aedd4a4e6e03a7caa421725d802dd319c11dea114" title="Topic: csharp" href="/topics/csharp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> csharp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":373117,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="d7c3b42b6aed7b41ddb7cfa8431f47c8df0fe98a33ae3cb68f3718401ac57513" title="Topic: socketserver" href="/topics/socketserver" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> socketserver </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":691549,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7cd20008bd3abc5bab3e34005aede0af6a7c75649de4b1328b63cb60b5f9483d" title="Topic: realtime-communication" href="/topics/realtime-communication" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> realtime-communication </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-11-10T19:05:35Z" class="no-wrap">Nov 10, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #178600"></span> <span itemprop="programmingLanguage">C#</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"OWNER","click_visual_representation":"REPOSITORY_OWNER_HEADING","actor_id":null,"record_id":7278743,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b8b5e4d01d61382e71eae01c6514061f8630583aed28430544fe9a52d56cfa72" data-turbo="false" href="/hhxsv5" data-view-component="true" class="Link"> hhxsv5 </a> / <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"REPOSITORY_NAME_HEADING","actor_id":null,"record_id":117649937,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="9104e9377f99b866451e2d765a6856f9d618ee9625411418b3dc5ad3e9242187" data-turbo="false" href="/hhxsv5/laravel-s" data-view-component="true" class="Link text-bold wb-break-word"> laravel-s </a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fhhxsv5%2Flaravel-s" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":117649937,"auth_type":"LOG_IN","originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="4ba5cad0c45633145b538f725538f7d9b8a0a52a7078793b48d93ea136b202e2" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="3839 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="3,839" data-view-component="true" class="Counter js-social-count">3.8k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-117649937" aria-current="true" href="/hhxsv5/laravel-s" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY","click_visual_representation":"CODE_TAB","actor_id":null,"record_id":117649937,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c8e1372cf529f5220a032a37fac508f20194598e2766319707099381a6f51811" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-117649937" href="/hhxsv5/laravel-s/issues" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_ISSUES","click_visual_representation":"ISSUES_TAB","actor_id":null,"record_id":117649937,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="c40d80a7fe06de889aea6fc2f30e3f05b3155fd3f72279fbfde9962d45fe46e1" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-117649937" href="/hhxsv5/laravel-s/pulls" data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"REPOSITORY_PULL_REQUESTS","click_visual_representation":"PULL_REQUESTS_TAB","actor_id":null,"record_id":117649937,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="2c68c4aefceff08d6f03b16549d36f3b8e12fc5c300d6e6db14fa6eddd576193" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >LaravelS is an out-of-the-box adapter between Laravel/Lumen and Swoole.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":473,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="ec771acda08f191d3c4e7b4c6b4b466031015951c6d419ac9fdbaf02d652ec71" title="Topic: http" href="/topics/http" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> http </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2142,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="919f9c9367b94a50ed77b57a8a102b2cb78360005b602567c79b46b43dbd3ef8" title="Topic: task" href="/topics/task" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> task </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2439,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="0877704f06e8707ad8ac369c4358e62c7a6cecf3bb20075b6909d3933c3fd57b" title="Topic: laravel" href="/topics/laravel" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> laravel </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":2483,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="dc88b0acbb06033ad85d471f3fefad99788a27d9a976997bee95f5e85ad795d8" title="Topic: performance" href="/topics/performance" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> performance </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9363,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="7810b8e5b2c4346e2707a9468e983fd1ace95b5798efb973bfa9ead341b42e67" title="Topic: tcp" href="/topics/tcp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> tcp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":9509,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b69fbf63a626332d646828577cbc05b36268dc1e7b118c9ed53822b1f01590e3" title="Topic: server" href="/topics/server" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> server </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":12079,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="a15002e2c91725717b3c0687d651d7e07417249bf0549e4c0bbc96055b5c266d" title="Topic: async" href="/topics/async" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> async </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13060,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="b1f9814ba883c500262c0132baac83f07f5ba9e0c5fab82156fb67ea3cada9a1" title="Topic: websocket" href="/topics/websocket" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> websocket </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13172,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="38aa12a36345eedbe9f61ab070aef582b8866924b4b682c072c47ae89fcf7847" title="Topic: timer" href="/topics/timer" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> timer </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13184,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="1e1f26fbe557a97bf073f2d0b51e4bc2fb5f6e3ab7ac45c2a6bc9dc912a31256" title="Topic: udp" href="/topics/udp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> udp </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":13327,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="3f9e7a19d4bce4ed3f9813a3b9d5a9bbb394a1820f0a39a37d434203da3494a5" title="Topic: lumen" href="/topics/lumen" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> lumen </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":22460,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="57b85e5074bfe4fcb203e1a37fc6e955287fb9ab9492bb5c274c174f78f240c3" title="Topic: process" href="/topics/process" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> process </a> <a data-hydro-click="{"event_type":"explore.click","payload":{"click_context":"REPOSITORY_CARD","click_target":"TOPIC","click_visual_representation":"TOPIC_TAG","actor_id":null,"record_id":60310,"originating_url":"https://github.com/topics/udp","user_id":null}}" data-hydro-click-hmac="abf150c33d78cf296898c7cb0ee3163366bec2c567025d3077ba600f0468fff8" title="Topic: swoole" href="/topics/swoole" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2"> swoole </a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-10-24T11:43:55Z" class="no-wrap">Oct 24, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #4F5D95"></span> <span itemprop="programmingLanguage">PHP</span> </span> </li> </ul> </div> </div> </article> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="ajax-pagination-form js-ajax-pagination" data-turbo="false" action="https://github.com/topics/udp" accept-charset="UTF-8" method="get"> <input name="page" type="hidden" value="2"> <button type="submit" class="ajax-pagination-btn btn color-border-default f6 mt-0 width-full" data-disable-with="Loading more…" > Load more… </button> </form> </div> <div class="col-md-4 col-lg-3"> <div class="mb-6"> <h2 class="h4 mb-2"> Improve this page </h2> <p class="color-fg-muted"> Add a description, image, and links to the <span class="text-bold">udp</span> topic page so that developers can more easily learn about it. </p> <p> <a href="https://github.com/github/explore/tree/master/CONTRIBUTING.md?source=add-description-udp" data-ga-click="Explore, add description, text:add description" > Curate this topic <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right ml-1"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </p> </div> <div class="mb-6"> <h2 class="h4 mb-2"> Add this topic to your repo </h2> <p class="color-fg-muted"> To associate your repository with the <span class="text-bold">udp</span> topic, visit your repo's landing page and select "manage topics." </p> <p> <a href="https://docs.github.com/en/articles/classifying-your-repository-with-topics"> Learn more <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right ml-1"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </p> </div> </div> </div> </div> </div> </main> </div> <footer class="footer pt-8 pb-6 f6 color-fg-muted p-responsive" role="contentinfo" > <h2 class='sr-only'>Footer</h2> <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap"> <div class="d-flex flex-items-center flex-shrink-0 mx-2"> <a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"></path> </svg> </a> <span> © 2024 GitHub, Inc. </span> </div> <nav aria-label="Footer"> <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3> <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading"> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to Terms","label":"text:terms"}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to privacy","label":"text:privacy"}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to security","label":"text:security"}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to status","label":"text:status"}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to docs","label":"text:docs"}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a> </li> <li class="mx-2"> <a data-analytics-event="{"category":"Footer","action":"go to contact","label":"text:contact"}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a> </li> <li class="mx-2" > <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","action":"cookies","context":"subfooter","tag":"link","label":"cookies_link_subfooter_footer"}" > Manage cookies </button> </cookie-consent-link> </li> <li class="mx-2"> <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","action":"dont_share_info","context":"subfooter","tag":"link","label":"dont_share_info_link_subfooter_footer"}" > Do not share my personal information </button> </cookie-consent-link> </li> </ul> </nav> </div> </footer> <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999" data-initial-cookie-consent-allowed="" data-cookie-consent-required="false"></ghcc-consent> <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> You can’t perform that action at this time. </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open> <summary role="button" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;"> </div> </div> <template id="snippet-clipboard-copy-button"> <div class="zeroclipboard-container position-absolute right-0 top-0"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> <template id="snippet-clipboard-copy-button-unpositioned"> <div class="zeroclipboard-container"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> </div> <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div> <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div> </body> </html>