Skip to content

Conversation

@MasterJH5574
Copy link
Contributor

This PR updates the version.py, so every time when running this file, it also bumps the version number in pyproject.toml automatically.

Copy link
Member

@tlopex tlopex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Thanks!

@tqchen
Copy link
Member

tqchen commented Aug 29, 2025

@tvm-bot rerun

@github-actions
Copy link
Contributor

Failed to re-run CI in https://github.com/apache/tvm/actions/runs/17312204708

Details
Traceback (most recent call last):
  File "/home/runner/work/tvm/tvm/ci/scripts/github/github_tvmbot.py", line 591, in comment_failure
    raise item
  File "/home/runner/work/tvm/tvm/ci/scripts/github/github_tvmbot.py", line 697, in run
    pr.rerun_jenkins_ci()
  File "/home/runner/work/tvm/tvm/ci/scripts/github/github_tvmbot.py", line 550, in rerun_jenkins_ci
    post(url, auth=("tvm-bot", TVM_BOT_JENKINS_TOKEN))
  File "/home/runner/work/tvm/tvm/ci/scripts/jenkins/git_utils.py", line 53, in post
    with request.urlopen(req, data) as response:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/urllib/request.py", line 215, in urlopen
    return opener.open(url, data, timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/urllib/request.py", line 521, in open
    response = meth(req, response)
               ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/urllib/request.py", line 630, in http_response
    response = self.parent.error(
               ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/urllib/request.py", line 559, in error
    return self._call_chain(*args)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/urllib/request.py", line 492, in _call_chain
    result = func(*args)
             ^^^^^^^^^^^
  File "/usr/lib/python3.12/urllib/request.py", line 639, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

with response


    
    
  
  <!DOCTYPE html><html><head resURL="/static/27303666" data-rooturl="" data-resurl="/static/27303666" data-extensions-available="true" data-unit-test="false" data-imagesurl="/static/27303666/images" data-crumb-header="Jenkins-Crumb" data-crumb-value="75971bed8749b3e5e5b8c5afc41af06c0a7dddc7c85dd81c97caf492d4d4e05b3e81aee92433af5029f634ff9a0b6d8d75fc8a3c67f13e640a940e4ee826c16f">
    
    

    <title>Not Found [Jenkins]</title><link rel="stylesheet" href="/static/27303666/jsbundles/styles.css" type="text/css"><link rel="stylesheet" href="/static/27303666/css/responsive-grid.css" type="text/css"><link rel="icon" href="/static/27303666/favicon.svg" type="image/svg+xml"><link sizes="any" rel="alternate icon" href="/static/27303666/favicon.ico"><link sizes="180x180" rel="apple-touch-icon" href="/static/27303666/apple-touch-icon.png"><link color="#191717" rel="mask-icon" href="/static/27303666/mask-icon.svg"><meta name="theme-color" content="#ffffff"><script src="/static/27303666/scripts/behavior.js" type="text/javascript"></script><script src='/adjuncts/27303666/org/kohsuke/stapler/bind.js' type='text/javascript'></script><script src="/static/27303666/scripts/yui/yahoo/yahoo-min.js"></script><script src="/static/27303666/scripts/yui/dom/dom-min.js"></script><script src="/static/27303666/scripts/yui/event/event-min.js"></script><script src="/static/27303666/scripts/yui/animation/animation-min.js"></script><script src="/static/27303666/scripts/yui/dragdrop/dragdrop-min.js"></script><script src="/static/27303666/scripts/yui/container/container-min.js"></script><script src="/static/27303666/scripts/yui/connection/connection-min.js"></script><script src="/static/27303666/scripts/yui/datasource/datasource-min.js"></script><script src="/static/27303666/scripts/yui/autocomplete/autocomplete-min.js"></script><script src="/static/27303666/scripts/yui/menu/menu-min.js"></script><script src="/static/27303666/scripts/yui/element/element-min.js"></script><script src="/static/27303666/scripts/yui/button/button-min.js"></script><script src="/static/27303666/scripts/yui/storage/storage-min.js"></script><script src="/static/27303666/scripts/hudson-behavior.js" type="text/javascript"></script><script src="/static/27303666/scripts/sortable.js" type="text/javascript"></script><link rel="stylesheet" href="/static/27303666/scripts/yui/container/assets/container.css" type="text/css"><link rel="stylesheet" href="/static/27303666/scripts/yui/container/assets/skins/sam/container.css" type="text/css"><link rel="stylesheet" href="/static/27303666/scripts/yui/menu/assets/skins/sam/menu.css" type="text/css"><link rel="search" href="/opensearch.xml" type="application/opensearchdescription+xml" title="Jenkins"><meta name="ROBOTS" content="INDEX,NOFOLLOW"><meta name="viewport" content="width=device-width, initial-scale=1"><script src='/adjuncts/27303666/org/jenkinsci/plugins/scriptsecurity/scripts/ScriptApproval/FormValidationPageDecorator/validate.js' type='text/javascript'></script><script src="/static/27303666/jsbundles/vendors.js" type="text/javascript"></script><script src="/static/27303666/jsbundles/sortable-drag-drop.js" type="text/javascript"></script><script defer="true" src="/static/27303666/jsbundles/app.js" type="text/javascript"></script></head><body data-model-type="hudson.model.Hudson" id="jenkins" class="yui-skin-sam one-column jenkins-2.462.1" data-version="2.462.1"><a href="#skip2content" class="jenkins-skip-link">Skip to content</a><header id="page-header" class="page-header"><div class="page-header__brand"><div class="logo"><a id="jenkins-home-link" href="/"><img src="/static/27303666/images/svgs/logo.svg" alt="[Jenkins]" id="jenkins-head-icon"><img src="/static/27303666/images/title.svg" alt="Jenkins" width="139" id="jenkins-name-icon" height="34"></a></div><a href="/" class="page-header__brand-link"><img src="/static/27303666/images/svgs/logo.svg" alt="[Jenkins]" class="page-header__brand-image"><span class="page-header__brand-name">Jenkins</span></a></div><div class="searchbox hidden-xs"><form role="search" method="get" name="search" action="/search/" style="position:relative;" class="no-json"><div id="search-box-sizer"></div><div id="searchform"><input role="searchbox" name="q" placeholder="Search" id="search-box" class="main-search__input"><span class="main-search__icon-leading"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 512 512"><title/><path d="M221.09 64a157.09 157.09 0 10157.09 157.09A157.1 157.1 0 00221.09 64z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M338.29 338.29L448 448" fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32"/></svg></span><a href="https://www.jenkins.io/redirect/search-box" class="main-search__icon-trailing"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 512 512"><path d="M256 40a216 216 0 10216 216A216 216 0 00256 40z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="38"/><path d="M200 202.29s.84-17.5 19.57-32.57C230.68 160.77 244 158.18 256 158c10.93-.14 20.69 1.67 26.53 4.45 10 4.76 29.47 16.38 29.47 41.09 0 26-17 37.81-36.37 50.8S251 281.43 251 296" fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="38"/><circle cx="250" cy="360" fill="currentColor" r="25"/></svg></a><div id="search-box-completion" data-search-url="/search/"></div><script src='/adjuncts/27303666/jenkins/views/JenkinsHeader/search-box.js' type='text/javascript'></script></div></form></div><script src="/static/27303666/jsbundles/keyboard-shortcuts.js" type="text/javascript"></script><div class="login page-header__hyperlinks"><div id="visible-am-insertion" class="page-header__am-wrapper"></div><div id="visible-sec-am-insertion" class="page-header__am-wrapper"></div><a href="/user/tvm-bot" class="model-link"><svg class="icon-md" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 512 512"><title/><path d="M258.9 48C141.92 46.42 46.42 141.92 48 258.9c1.56 112.19 92.91 203.54 205.1 205.1 117 1.6 212.48-93.9 210.88-210.88C462.44 140.91 371.09 49.56 258.9 48zm126.42 327.25a4 4 0 01-6.14-.32 124.27 124.27 0 00-32.35-29.59C321.37 329 289.11 320 256 320s-65.37 9-90.83 25.34a124.24 124.24 0 00-32.35 29.58 4 4 0 01-6.14.32A175.32 175.32 0 0180 259c-1.63-97.31 78.22-178.76 175.57-179S432 158.81 432 256a175.32 175.32 0 01-46.68 119.25z" fill="currentColor"/><path d="M256 144c-19.72 0-37.55 7.39-50.22 20.82s-19 32-17.57 51.93C191.11 256 221.52 288 256 288s64.83-32 67.79-71.24c1.48-19.74-4.8-38.14-17.68-51.82C293.39 151.44 275.59 144 256 144z" fill="currentColor"/></svg><span class="hidden-xs hidden-sm">tvm-bot</span></a><a href="/logout"><svg class="icon-md" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 512 512"><title/><path d="M304 336v40a40 40 0 01-40 40H104a40 40 0 01-40-40V136a40 40 0 0140-40h152c22.09 0 48 17.91 48 40v40M368 336l80-80-80-80M176 256h256" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg><span class="hidden-xs hidden-sm">log out</span></a></div></header><div id="breadcrumbBar" class="jenkins-breadcrumbs" aria-label="breadcrumb"><ol class="jenkins-breadcrumbs__list" id="breadcrumbs"><li class="jenkins-breadcrumbs__list-item"><a href="/" class="model-link">Dashboard</a></li><li class="children" data-href="/"></li></ol></div><div id="page-body" class="app-page-body app-page-body--one-column clear"><div id="main-panel"><a id="skip2content"></a><h1 style="text-align: center"><img src="/static/27303666/images/rage.svg" width="154" height="179"><span style="font-size:50px"> Oops!</span></h1><div id="error-description" style="text-align: center"><h2>Not Found</h2><p>This page may not exist, or you may not have permission to see it.</div></div></div><footer class="page-footer jenkins-mobile-hide"><div class="page-footer__flex-row"><div class="page-footer__footer-id-placeholder" id="footer"></div><link rel='stylesheet' href='/adjuncts/27303666/jenkins/management/AdministrativeMonitorsDecorator/resources.css' type='text/css' /><script src='/adjuncts/27303666/jenkins/management/AdministrativeMonitorsDecorator/resources.js' type='text/javascript'></script><div id="visible-am-container" class="am-container"><a id="visible-am-button" href="#" title="There are 5 active administrative monitors." class="am-button" data-href="/administrativeMonitorsApi/nonSecurityPopupContent"><svg class="icon-md" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 512 512"><title/><path d="M427.68 351.43C402 320 383.87 304 383.87 217.35 383.87 138 343.35 109.73 310 96c-4.43-1.82-8.6-6-9.95-10.55C294.2 65.54 277.8 48 256 48s-38.21 17.55-44 37.47c-1.35 4.6-5.52 8.71-9.95 10.53-33.39 13.75-73.87 41.92-73.87 121.35C128.13 304 110 320 84.32 351.43 73.68 364.45 83 384 101.61 384h308.88c18.51 0 27.77-19.61 17.19-32.57zM320 384v16a64 64 0 01-128 0v-16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg><div class="am-monitor__indicator-mobile"></div><span class="am-monitor__count">5</span></a><div id="visible-am-list" class="am-list"></div></div><div id="visible-sec-am-container" class="am-container"><a id="visible-sec-am-button" href="#" title="There are 1 active security administrative monitors." class="am-button security-am" data-href="/administrativeMonitorsApi/securityPopupContent"><svg class="icon-md" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 512 512"><title/><path d="M250.26 155.39l5.74 122 5.73-121.95a5.74 5.74 0 00-5.79-6h0a5.74 5.74 0 00-5.68 5.95z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path d="M256 380.25a20 20 0 1120-20 20 20 0 01-20 20z" fill="currentColor"/><path d="M463.1 112.37C373.68 96.33 336.71 84.45 256 48c-80.71 36.45-117.68 48.33-207.1 64.37C32.7 369.13 240.58 457.79 256 464c15.42-6.21 223.3-94.87 207.1-351.63z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg><div class="am-monitor__indicator-mobile"></div><span class="am-monitor__count">1</span></a><div id="visible-sec-am-list" class="am-list"></div></div><div class="page-footer__links"><button type="button" class="jenkins-button jenkins-button--tertiary jenkins_ver" data-dropdown="true">

    Jenkins 2.462.1
  </button><template><div class="jenkins-dropdown"><template data-dropdown-icon="&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; aria-hidden=&quot;true&quot; height=&quot;463px&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 413 463&quot; width=&quot;413px&quot;&gt;    &lt;g fill=&quot;none&quot; fill-rule=&quot;evenodd&quot; stroke=&quot;none&quot; stroke-width=&quot;1&quot;&gt;        &lt;path d=&quot;M324.9,27.6745418 C325.214,27.9125418 325.53176,28.1557818 325.853076,28.4041026 L326.827488,29.1641482 C326.9916,29.2933098 327.15655,29.4237018 327.322313,29.5553043 L328.326434,30.3592861 L328.326434,30.3592861 L329.348831,31.1913647 L329.348831,31.1913647 L330.38828,32.0505849 C330.562874,32.195997 330.738128,32.3425002 330.914016,32.4900746 L331.976748,33.3882162 L331.976748,33.3882162 L333.053472,34.3111114 L333.053472,34.3111114 L334.142964,35.257805 L334.142964,35.257805 L335.244,36.2273418 L335.244,36.2273418 L336.355356,37.2187666 C336.541374,37.385775 336.727771,37.5536556 336.914522,37.7223885 L338.039062,38.7448543 C338.227125,38.9169168 338.41549,39.0897918 338.604132,39.2634594 L339.739104,40.314817 L339.739104,40.314817 L340.8795,41.3842418 C341.06995,41.5639318 341.260575,41.7443348 341.451349,41.9254309 L342.597587,43.0201655 C342.788857,43.2039544 342.980226,43.3883966 343.171668,43.5734722 L344.320992,44.6913674 L344.320992,44.6913674 L345.470844,45.823509 L345.470844,45.823509 L346.62,46.9689418 L346.62,46.9689418 L347.767236,48.1267106 L347.767236,48.1267106 L348.911328,49.2958602 L348.911328,49.2958602 L350.051052,50.4754354 L350.051052,50.4754354 L351.185184,51.664481 L351.185184,51.664481 L352.3125,52.8620418 C352.49975,53.0622918 352.686665,53.2628568 352.87322,53.4637169 L353.988017,54.6722595 L353.988017,54.6722595 L355.092938,55.8869293 C355.2762,56.0898318 355.459,56.2929498 355.641312,56.4962634 L356.729124,57.718333 L356.729124,57.718333 L357.804,58.9441418 C357.982,59.1487018 358.15941,59.3533778 358.336205,59.5581499 L359.389382,60.7877765 C359.563612,60.9928534 359.737176,61.1979866 359.910048,61.4031562 L360.938772,62.6344514 C361.108774,62.839687 361.278033,63.0449192 361.446524,63.2501281 L362.448041,64.4809427 C362.943984,65.096051 363.432552,65.7105914 363.913056,66.3240266 L364.863108,67.5492642 C368.93164,72.8508618 372.36,78.0425418 374.7,82.7745418 C398.4,130.674542 396.6,210.774542 380,269.074542 L378.114063,275.527667 L378.114063,275.527667 L377.407407,277.89306 L377.407407,277.89306 L376.912534,279.512128 C375.062037,285.501394 372.811111,292.030097 370,297.774542 C369.861194,298.065587 369.708755,298.370064 369.544298,298.686709 L369.19984,299.335846 L369.19984,299.335846 L368.826208,300.015178 L368.826208,300.015178 L368.426276,300.722455 L368.426276,300.722455 L367.783346,301.830845 L367.783346,301.830845 L367.097397,302.989454 L367.097397,302.989454 L364.624696,307.116657 L364.624696,307.116657 L363.864369,308.405117 L363.864369,308.405117 L363.361713,309.269955 L363.361713,309.269955 L362.865793,310.13686 L362.865793,310.13686 L362.37948,311.003582 C362.299388,311.147895 362.219816,311.292107 362.140824,311.436171 L361.674308,312.298398 C359.38131,316.596885 357.71791,320.677527 358.3,323.274542 C358.526851,324.389893 359.46487,325.869761 360.867468,327.564845 L361.301939,328.079677 L361.301939,328.079677 L361.762804,328.606526 C361.841733,328.695286 361.921699,328.784509 362.002673,328.874177 L362.500358,329.417372 C362.585237,329.508744 362.671063,329.600524 362.757803,329.692692 L363.288978,330.250217 L363.288978,330.250217 L363.840629,330.816176 L363.840629,330.816176 L364.411279,331.389673 L364.411279,331.389673 L364.999446,331.969812 L364.999446,331.969812 L365.603652,332.555698 L365.603652,332.555698 L366.536797,333.44334 L366.536797,333.44334 L367.174626,334.039672 L367.174626,334.039672 L368.151271,334.938786 L368.151271,334.938786 L369.147358,335.84075 L369.147358,335.84075 L370.157894,336.742542 L370.157894,336.742542 L371.177885,337.641139 L371.177885,337.641139 L372.622757,338.897118 L372.622757,338.897118 L374.015605,340.092244 L374.015605,340.092244 L375.961795,341.741972 L375.961795,341.741972 L378.438953,343.818165 L378.438953,343.818165 L382.141108,346.909162 L382.141108,346.909162 L383.240224,347.838482 L383.240224,347.838482 L383.961217,348.457893 L383.961217,348.457893 L384.584025,349.004991 L384.584025,349.004991 L384.940412,349.326964 C384.995711,349.377668 385.048925,349.426872 385.1,349.474542 L385.713386,350.064253 L385.713386,350.064253 L386.35222,350.662829 L386.35222,350.662829 L387.014515,351.26999 C387.126742,351.371883 387.239864,351.474122 387.353839,351.576702 L388.401539,352.508946 L388.401539,352.508946 L389.488612,353.458617 L389.488612,353.458617 L391.369684,355.07756 L391.369684,355.07756 L394.490653,357.752173 L394.490653,357.752173 L395.674459,358.778824 L395.674459,358.778824 L396.855167,359.816916 L396.855167,359.816916 L398.026069,360.865504 L398.026069,360.865504 L398.797911,361.569928 L398.797911,361.569928 L399.560428,362.278317 L399.560428,362.278317 L400.311632,362.99039 L400.311632,362.99039 L401.049536,363.705869 L401.049536,363.705869 L401.772154,364.424473 C406.058025,368.744912 409.411111,373.218986 409.9,377.574542 C410.503571,382.449542 409.555102,388.186787 408.055412,393.955596 L407.7,395.287042 C407.457143,396.174542 407.203061,397.061277 406.941399,397.944221 L406.543677,399.265417 L406.543677,399.265417 L406.137318,400.57866 L406.137318,400.57866 L405.725055,401.88168 L405.725055,401.88168 L405.101569,403.812081 L405.101569,403.812081 L403.280558,409.358092 L403.280558,409.358092 L402.720784,411.099511 L402.720784,411.099511 L402.368693,412.224047 C402.311607,412.408885 402.255357,412.592399 402.2,412.774542 L400.19213,419.522227 C396.833333,430.760653 393.416667,441.941209 390,452.774542 L233.03427,452.774594 L225.607163,454.746871 L225.607163,454.746871 L220.999101,455.950663 L220.999101,455.950663 L217.515168,456.844692 L217.515168,456.844692 L215.754038,457.288816 L215.754038,457.288816 L213.409471,457.86789 L213.409471,457.86789 L211.964358,458.214578 L211.964358,458.214578 L210.433341,458.567912 L210.433341,458.567912 L209.428825,458.786559 L209.428825,458.786559 L208.781704,458.91662 L208.781704,458.91662 L207.584001,459.136633 L207.584001,459.136633 L206.114245,459.389873 L206.114245,459.389873 L205.083611,459.553122 L205.083611,459.553122 L204.590423,459.62487 L204.590423,459.62487 L204.128596,459.686388 L204.128596,459.686388 L203.710586,459.73494 L203.710586,459.73494 L203.34885,459.767794 C203.184126,459.782647 203.045175,459.782647 202.939004,459.782647 C201.174409,459.726536 198.442809,458.576791 197.996729,457.981288 L197.853585,457.780567 C197.827717,457.742825 197.800844,457.702938 197.772966,457.660906 L197.593632,457.382984 L197.593632,457.382984 L197.390172,457.053595 L197.390172,457.053595 L197.073703,456.521245 L197.073703,456.521245 L196.683113,455.841596 L196.683113,455.841596 L196.240557,455.051093 L196.240557,455.051093 L195.569647,453.824652 L195.569647,453.824652 L195.005837,452.775493 L195.005837,452.775493 L35.3,452.774542 L35.3,452.874542 L17.1,452.874542 C16.8,452.154542 16.536,451.398542 16.2864,450.649742 L15.8,449.174542 L15.8,449.174542 C15.0380952,446.793589 14.1637188,444.303794 13.2342296,441.747309 L12.5276752,439.818101 L12.5276752,439.818101 L9.96961586,432.92599 L9.96961586,432.92599 L9.23660377,430.933152 L9.23660377,430.933152 L8.5125,428.937042 C6,421.949542 3.75,414.974542 2.8,408.774542 C1.288,398.838542 5.66632,393.947222 11.7779104,390.305699 L12.4638976,389.906036 L12.4638976,389.906036 L13.1628832,389.515503 C13.2803936,389.45111 13.3983928,389.38705 13.5168544,389.323298 L14.2329616,388.94429 L14.2329616,388.94429 L14.9588992,388.571519 L14.9588992,388.571519 L16.0634656,388.021528 L16.0634656,388.021528 L17.5588,387.299242 L17.5588,387.299242 L20.2092688,386.039607 L20.2092688,386.039607 L21.3472,385.491342 L21.3472,385.491342 L22.1033248,385.120133 L22.1033248,385.120133 L22.8559744,384.743015 L22.8559744,384.743015 L23.6038816,384.358832 C23.7280672,384.294149 23.8520024,384.229122 23.9756608,384.16373 L24.7140784,383.766779 C26.06098,383.030262 27.368,382.243542 28.6,381.374542 C35.8765957,376.097946 42.5013128,371.835384 49.1445229,367.816313 L51.1387111,366.617126 L51.1387111,366.617126 L53.1380311,365.427925 L53.1380311,365.427925 L55.1465051,364.244087 L55.1465051,364.244087 L58.1851786,362.468273 L58.1851786,362.468273 L67.6148291,356.99478 L67.6148291,356.99478 L69.8000039,355.719032 L69.8000039,355.719032 L72.0265105,354.411661 L72.0265105,354.411661 L74.2983713,353.068043 L74.2983713,353.068043 L76.6196084,351.683556 C77.0108194,351.449146 77.4042553,351.21284 77.8,350.974542 L78.2845135,350.692243 L78.2845135,350.692243 L79.0972081,350.22911 L79.0972081,350.22911 L80.9925299,349.174333 L80.9925299,349.174333 L85.5620721,346.660338 L85.5620721,346.660338 L88.0643884,345.263752 L88.0643884,345.263752 L89.3323289,344.544262 L89.3323289,344.544262 L90.5971323,343.815861 L90.5971323,343.815861 L91.8480545,343.082463 C91.9858767,343.000841 92.1232429,342.9192 92.2600868,342.837562 L93.0743515,342.347981 L93.0743515,342.347981 L93.8728966,341.859659 L93.8728966,341.859659 L94.6525386,341.373754 L94.6525386,341.373754 L95.4100942,340.891429 L95.4100942,340.891429 L96.1423799,340.413841 L96.1423799,340.413841 L96.8462124,339.942151 C96.9609698,339.864092 97.0744091,339.786327 97.1864638,339.70888 L97.8416475,339.248212 C99.8604241,337.802746 101.331507,336.48961 101.8,335.474542 C103.532911,331.915048 102.216776,327.653616 100.050151,323.512135 L99.6916986,322.841725 L99.6916986,322.841725 L99.3204197,322.174196 L99.3204197,322.174196 L98.9383976,321.510328 C98.8739477,321.400032 98.809137,321.28992 98.7440089,321.18001 L98.3497784,320.523093 L98.3497784,320.523093 L97.9500133,319.871784 L97.9500133,319.871784 L97.3445456,318.907039 L97.3445456,318.907039 L94.9856514,315.244325 L94.9856514,315.244325 L94.4468296,314.390856 L94.4468296,314.390856 L94.1063052,313.83846 L94.1063052,313.83846 L93.7831636,313.300239 C93.730871,313.21176 93.6793895,313.123904 93.6287624,313.036688 L93.3356014,312.521189 C93.1004243,312.098217 92.8887798,311.692038 92.7060934,311.304681 L92.6,311.074542 C88.3,301.674542 86.1,293.474542 85.5,284.174542 C70,281.674542 58.3,272.374542 50.9,261.974542 C39.1,244.674542 30.9,212.574542 41.1,188.174542 C41.3133333,187.667875 41.7542222,187.026097 42.2956148,186.300409 L43.6297481,184.547609 L43.6297481,184.547609 L44.0942519,183.922809 C45.1711111,182.448764 46.1666667,180.874542 46.4,179.474542 C46.8810742,176.937969 46.5588294,174.03799 46.0188051,171.067374 L45.8315343,170.074955 C45.7992459,169.909249 45.7664862,169.743426 45.7333555,169.577536 L45.5309231,168.581785 L45.5309231,168.581785 L45.1459378,166.727467 L45.1459378,166.727467 L44.8837812,165.434523 C44.502314,163.504646 44.1860294,161.623807 44.1,159.874542 C42.9,128.174542 49.4,100.874542 70.8,91.2745418 C75.7708,71.3335418 88.2250816,59.0764738 103.489811,48.9806621 L104.843874,48.0953234 L104.843874,48.0953234 L106.21181,47.2203593 C107.128234,46.6403207 108.053431,46.0666364 108.986451,45.4981824 L110.391728,44.6492834 C110.626879,44.5084072 110.862489,44.3678227 111.098544,44.2275124 L112.520084,43.3888007 L112.520084,43.3888007 L113.951574,42.5558265 C114.190946,42.4174288 114.430702,42.279235 114.670828,42.1412276 L116.115906,41.3152792 L116.115906,41.3152792 L118.298613,40.0828992 L118.298613,40.0828992 L119.762771,39.2644449 L119.762771,39.2644449 L122.709523,37.63126 L122.709523,37.63126 L128.173907,34.622456 C131.97758,32.5259018 135.804,30.3975418 139.6,28.1745418 C147.335484,23.5616386 155.675338,20.1574763 164.297882,16.925527 L167.84024,15.6103446 L167.84024,15.6103446 L175,12.9745418 L175,12.9745418 C219.4,-3.42545815 288,-0.325458154 324.9,27.6745418 Z M190.6,409.574542 C190.888889,415.400468 192.475995,421.342306 194.356744,426.830799 L194.795519,428.089067 C194.94321,428.505635 195.092181,428.919261 195.241975,429.329686 L195.69337,430.5511 L195.69337,430.5511 L196.146959,431.751756 L196.146959,431.751756 L197.049749,434.084571 L197.049749,434.084571 L198.558333,437.91482 L198.558333,437.91482 L199.153086,439.444501 L199.153086,439.444501 L199.525469,440.423117 C199.585734,440.583367 199.645062,440.742169 199.703395,440.89949 L200.041004,441.825397 C200.09513,441.976668 200.148148,442.126394 200.2,442.274542 C200.302439,442.545274 200.398989,442.817611 200.491177,443.090145 L200.670191,443.635056 L200.670191,443.635056 L200.84029,444.177982 L200.84029,444.177982 L201.324261,445.769778 L201.324261,445.769778 L201.485864,446.279693 L201.485864,446.279693 L201.652132,446.775086 C202.330161,448.724274 203.185366,450.264786 205,450.674542 C207.16,451.137399 211.254082,450.320787 215.773024,448.982185 L216.783613,448.676433 C216.953006,448.624145 217.122828,448.571218 217.293003,448.517691 L218.317672,448.189625 C218.660231,448.078073 219.003587,447.964426 219.347128,447.848993 L220.377689,447.497642 L220.377689,447.497642 L221.917552,446.954556 L221.917552,446.954556 L223.4392,446.397742 L223.4392,446.397742 L224.437378,446.021984 L224.437378,446.021984 L225.41826,445.644744 L225.41826,445.644744 L226.378164,445.267867 L226.378164,445.267867 L227.313411,444.893201 L227.313411,444.893201 L228.22032,444.522593 L228.22032,444.522593 L229.095209,444.157891 L229.095209,444.157891 L229.9344,443.800942 L229.9344,443.800942 L230.734211,443.453593 L230.734211,443.453593 L231.85204,442.954609 L231.85204,442.954609 L232.860562,442.487617 L232.860562,442.487617 L233.46605,442.19714 C233.562252,442.150246 233.656046,442.104136 233.747356,442.05885 L234.264791,441.79732 C234.345857,441.755481 234.424286,441.714542 234.5,441.674542 C240.269697,438.532118 245.375941,434.434321 250.283552,430.310791 L252.008159,428.855873 L252.008159,428.855873 L253.720811,427.4079 C257.13719,424.524955 260.509091,421.738178 264,419.374542 C264.3,416.174542 264.3,412.974542 264.6,409.874542 C259,407.074542 252.5,405.074542 244,404.674542 C246.245161,403.551961 248.864932,402.863928 251.540291,402.250817 L254.222362,401.64936 C257.568574,400.895458 260.835484,400.071316 263.4,398.474542 L263.7,394.774542 C258.649949,394.503034 255.280638,393.111033 252.263093,391.367102 L251.643357,391.001519 L251.643357,391.001519 L251.031043,390.627405 C250.929464,390.564426 250.828085,390.501155 250.726853,390.437623 L250.120769,390.053549 L250.120769,390.053549 L248.892188,389.262042 C247.5375,388.387042 246.15,387.499542 244.6,386.674542 L243.5,386.474542 C233.3,380.874542 218,374.874542 204.7,372.274542 C193.616,370.166542 190.8552,381.236942 190.380506,393.254337 L190.3444,394.316842 C190.33932,394.494232 190.334696,394.671749 190.330509,394.849354 L190.310474,395.915731 L190.310474,395.915731 L190.3,396.982354 L190.3,396.982354 L190.298166,398.047358 L190.298166,398.047358 L190.3096,399.637742 L190.3096,399.637742 L190.33529,401.213978 L190.33529,401.213978 L190.3588,402.253829 L190.3588,402.253829 L190.416995,404.298798 L190.416995,404.298798 L190.6,409.574542 L190.6,409.574542 Z M347.4,338.774542 C345.323256,341.867565 342.211736,344.492011 339.057536,346.932567 L337.564154,348.075987 L337.564154,348.075987 L335.603547,349.56938 L335.603547,349.56938 L334.651965,350.307202 C332.305625,352.146851 330.225581,353.955937 328.9,355.874542 C356.1,342.974542 361,405.074542 350.3,425.074542 C351.125714,428.037399 352.87151,430.103766 354.723806,432.064307 L356.0384,433.440942 C357.568,435.050542 359.04,436.714542 360,438.874542 L358.4,441.974542 L382.6,441.974542 C382.8,441.974542 383.2,441.974542 383.4,442.174542 L383.4,441.574542 L384.163557,439.09382 C384.667201,437.443602 385.159767,435.801109 385.639504,434.169549 L386.349271,431.73081 C388.565015,424.036641 390.471593,416.625325 391.881532,409.840563 L392.249788,408.051446 L392.249788,408.051446 L393.41939,402.59959 L393.41939,402.59959 L393.744558,401.037162 L393.744558,401.037162 L393.959776,399.973159 L393.959776,399.973159 L394.274021,398.359066 L394.274021,398.359066 L394.474156,397.279979 L394.474156,397.279979 L394.663889,396.205701 C394.694505,396.027399 394.724584,395.849556 394.754074,395.672301 L394.923522,394.61685 C395.408148,391.477847 395.668085,388.61284 395.4,386.774542 C394.841538,382.408388 391.550911,378.609287 387.661111,375.22021 L386.947747,374.608497 C386.827911,374.507286 386.707643,374.406444 386.587003,374.305964 L385.859174,373.707412 L385.859174,373.707412 L385.125262,373.117373 L385.125262,373.117373 L384.388116,372.535636 L384.388116,372.535636 L383.282567,371.678138 L383.282567,371.678138 L380.056882,369.207813 L380.056882,369.207813 L379.376873,368.678319 L379.376873,368.678319 L378.716423,368.155449 L378.716423,368.155449 L378.07838,367.638993 C377.556805,367.211228 377.061538,366.789926 376.6,366.374542 C373.534375,363.590167 370.785156,360.924444 368.163242,358.32398 L365.576758,355.743292 L365.576758,355.743292 L363.033121,353.194244 L363.033121,353.194244 L361.340414,351.506598 C357.09873,347.295538 352.74375,343.133917 347.4,338.774542 Z M319,430.874542 L318.4,440.974542 L350.300464,440.974 L350.138951,440.735968 C349.898481,440.385102 349.649065,440.036334 349.390937,439.690467 L348.997241,439.173941 C348.863851,439.002557 348.728312,438.831999 348.590654,438.662366 L348.171353,438.156343 L348.171353,438.156343 L347.739513,437.656474 L347.739513,437.656474 L347.295311,437.163357 C347.220257,437.081768 347.144695,437.000484 347.068629,436.91952 L346.606213,436.437661 C346.528146,436.358022 346.449581,436.278728 346.370524,436.19979 L345.890292,435.73054 L345.890292,435.73054 L345.398402,435.270447 C344.817799,434.739248 344.213755,434.227971 343.587529,433.74091 L343.04536,433.32946 C336.748627,428.668291 328.33156,426.479242 319,430.874542 Z M256.1,437.374542 L250.5,440.974542 L258.684464,440.974 L257.029745,438.68851 C256.717143,438.254215 256.408571,437.820256 256.1,437.374542 Z M31.3,440.674542 L190.814464,440.674542 L188.513719,433.190617 L188.513719,433.190617 L187.813631,430.874334 L187.813631,430.874334 L187.148634,428.628272 L187.148634,428.628272 L186.724736,427.169186 L186.724736,427.169186 L186.117952,425.036905 L186.117952,425.036905 L185.73275,423.652315 L185.73275,423.652315 L185.362963,422.296764 L185.362963,422.296764 L185.008555,420.969817 L185.008555,420.969817 L184.669489,419.671041 L184.669489,419.671041 L184.34573,418.4 L184.34573,418.4 L184.037241,417.156262 L184.037241,417.156262 L183.743985,415.93939 L183.743985,415.93939 L183.465928,414.748952 L183.465928,414.748952 L183.203032,413.584513 L183.203032,413.584513 L182.955262,412.445639 L182.955262,412.445639 L182.72258,411.331895 L182.72258,411.331895 L182.504952,410.242848 L182.504952,410.242848 L182.302341,409.178063 C182.237302,408.82713 182.174761,408.480169 182.11471,408.137106 L181.942024,407.119543 C181.914486,406.951874 181.88757,406.785162 181.861274,406.619398 L181.710936,405.636111 L181.710936,405.636111 L181.575453,404.675132 L181.575453,404.675132 L181.454787,403.736027 C181.435909,403.581308 181.417647,403.427483 181.4,403.274542 L177.632082,401.475208 L177.632082,401.475208 L170.043123,397.863612 L170.043123,397.863612 L167.509478,396.649787 L167.509478,396.649787 L164.979175,395.428197 C164.557914,395.223859 164.136926,395.019128 163.716278,394.813968 L161.196997,393.577596 C151.140439,388.609334 141.356333,383.354413 132.767334,377.331448 L131.619976,376.516801 L131.619976,376.516801 L131.43952,376.372238 C131.407218,376.344975 131.373817,376.316148 131.339338,376.285789 L131.119691,376.085489 L131.119691,376.085489 L130.87517,375.849902 L130.87517,375.849902 L130.463935,375.433624 L130.463935,375.433624 L129.837899,374.76903 L129.837899,374.76903 L129.31446,374.194955 L129.31446,374.194955 L128.748563,373.561663 L128.748563,373.561663 L127.933829,372.633875 L127.933829,372.633875 L126.59898,371.087777 L126.59898,371.087777 L120.133186,363.480412 L120.133186,363.480412 L118.099177,361.117816 L118.099177,361.117816 L116.853121,359.692312 L116.853121,359.692312 L115.642239,358.329714 L115.642239,358.329714 L114.938068,357.550525 L114.938068,357.550525 L114.25414,356.805302 L114.25414,356.805302 L113.593297,356.098289 L113.593297,356.098289 L112.958381,355.433733 L112.958381,355.433733 L112.352234,354.815877 L112.352234,354.815877 L111.965523,354.432014 L111.965523,354.432014 L111.593704,354.072051 L111.593704,354.072051 L111.237619,353.737246 L111.237619,353.737246 L110.898111,353.428857 L110.898111,353.428857 L110.576021,353.148142 L110.576021,353.148142 L110.272191,352.896357 L110.272191,352.896357 L109.987465,352.674762 C109.346044,352.193906 108.867508,351.969865 108.6,352.074542 C85.1797297,361.170488 62.9905771,375.139608 42.2529786,390.087521 L39.9115388,391.78371 L39.9115388,391.78371 L37.5825721,393.487006 C37.1954544,393.771411 36.8088593,394.05606 36.4227884,394.340927 L34.1126646,396.052529 L34.1126646,396.052529 L31.8151916,397.7681 L31.8151916,397.7681 L29.5304404,399.486383 L29.5304404,399.486383 L27.2584822,401.206123 L27.2584822,401.206123 L24.999388,402.926065 L24.999388,402.926065 L22.7532288,404.644952 L22.7532288,404.644952 L20.5200758,406.36153 L20.5200758,406.36153 L18.3,408.074542 L18.3,408.074542 C23.1,418.474542 27.3,429.474542 31.3,440.674542 Z M282.256079,421.820731 L280.470452,422.671241 L280.470452,422.671241 L279.912694,422.929682 L279.912694,422.929682 L279.349955,423.180908 C276.522804,424.413583 273.486207,425.253852 269.9,423.874542 C269.484615,424.33608 269.079882,424.813595 268.679654,425.294797 L267.486345,426.737173 C266.559172,427.848506 265.623077,428.913003 264.6,429.774542 C267.5,433.174542 270.1,436.774542 272.5,440.674542 L287.8,440.674542 C288.1,437.574542 290.4,435.274542 293.4,435.274542 C296.5,435.274542 298.7,437.574542 298.7,440.374542 L310.845464,440.374 L311.175,434.172003 L311.175,434.172003 L311.4,430.074542 L311.4,430.074542 C306.4,430.324542 302.525,428.074542 299.0375,425.649542 L297.966797,424.893911 L297.966797,424.893911 L296.916075,424.142487 L296.916075,424.142487 L296.224277,423.651502 L296.224277,423.651502 L295.537731,423.173825 C293.370452,421.687086 291.260345,420.469369 289,420.174542 C286.686207,419.871094 284.501902,420.761819 282.256079,421.820731 Z M293.1,386.774542 C293.28,387.334542 293.492,387.870542 293.7184,388.401742 L293.995866,389.038107 L293.995866,389.038107 L294.4232,390.000142 C295.136,391.622542 295.82,393.374542 296,395.774542 C301.3,394.374542 308.1,395.274542 312.8,397.574542 C312.16,397.631685 311.512163,397.682297 310.861117,397.731006 L308.462581,397.90995 L308.462581,397.90995 L307.519478,397.987047 L307.519478,397.987047 L306.582957,398.072557 C306.427593,398.087684 306.272634,398.103292 306.118144,398.119446 L305.197374,398.223453 C302.150431,398.595485 299.34381,399.238351 297.3,400.674542 C296.693333,402.234542 296.668778,404.113764 296.762522,406.182016 L296.8125,407.149542 L296.8125,407.149542 L296.8968,408.644942 C297.004,410.670542 297.06,412.814542 296.7,414.974542 C309.7,418.674542 324.8,420.674542 341.5,421.174542 C344.532609,416.96802 345.746928,409.412018 345.517434,401.408725 L345.499464,400.875 L345.9,401.674542 L345.862175,400.996937 L345.862175,400.996937 L345.766227,399.554242 L345.766227,399.554242 L345.67619,398.40319 L345.67619,398.40319 L345.57036,397.200131 L345.57036,397.200131 L345.448464,395.951511 L345.448464,395.951511 L345.358143,395.096968 L345.358143,395.096968 L345.260481,394.226951 L345.260481,394.226951 L345.100049,392.897086 L345.100049,392.897086 L344.922651,391.543145 L344.922651,391.543145 L344.728015,390.171573 L344.728015,390.171573 L344.588548,389.25058 L344.588548,389.25058 L344.44122,388.326526 L344.44122,388.326526 L344.205311,386.938881 L344.205311,386.938881 L344.037979,386.015528 C344.009413,385.861884 343.980509,385.708392 343.951264,385.55509 L343.771688,384.637887 L343.771688,384.637887 L343.583849,383.727172 L343.583849,383.727172 L343.387668,382.824854 C343.287479,382.376113 343.184131,381.931236 343.077579,381.491299 L342.860191,380.618329 C342.786295,380.329747 342.710963,380.043678 342.634179,379.760441 L342.399465,378.919544 C341.044603,374.20621 339.266667,370.403277 337,369.074542 C330.924,365.497542 322.49502,368.931462 314.383692,373.72915 L313.392238,374.323054 C313.22732,374.423046 313.062581,374.52351 312.898042,374.624398 L311.913393,375.23443 L311.913393,375.23443 L310.934643,375.852334 L310.934643,375.852334 L309.962882,376.475806 L309.962882,376.475806 L308.520729,377.416414 L308.520729,377.416414 L306.167519,378.979294 L306.167519,378.979294 L302.571145,381.38755 L302.571145,381.38755 L301.288039,382.235998 L301.288039,382.235998 L300.455445,382.77883 L300.455445,382.77883 L299.642371,383.300734 L299.642371,383.300734 L298.849905,383.799406 L298.849905,383.799406 L298.079138,384.272542 C296.18025,385.421542 294.495,386.309542 293.1,386.774542 Z M269.2,394.774542 L269.5,394.974542 C269.039535,398.555937 269.259654,400.985575 269.771974,403.589315 L269.91865,404.304739 C269.944206,404.425028 269.970293,404.545925 269.996874,404.667556 L270.248467,405.785394 L270.248467,405.785394 L270.711056,407.791236 L270.711056,407.791236 L270.906128,408.660978 L270.906128,408.660978 L271.104309,409.578203 C271.137501,409.735363 271.17075,409.89475 271.204019,410.056489 L271.403581,411.056145 C271.503191,411.571081 271.602326,412.109426 271.7,412.674542 C295.3,419.974542 291.1,380.074542 269.2,394.774542 Z M145.8,368.474542 C140.508,373.892542 151.33014,380.540932 162.613478,384.869044 L163.688975,385.274117 C163.86829,385.340422 164.047596,385.406114 164.22683,385.471179 L165.300877,385.853927 L165.300877,385.853927 L166.3702,386.220942 C167.08084,386.460222 167.786328,386.688558 168.482658,386.905041 L169.519782,387.220763 C169.862867,387.322964 170.203162,387.422089 170.540165,387.518023 L171.5408,387.796142 C171.70576,387.840862 171.869772,387.884756 172.032773,387.92781 L172.998154,388.175936 C173.791697,388.374117 174.556845,388.550583 175.285773,388.703559 L176.1426,388.875742 C177.54,389.143542 178.78,389.314542 179.8,389.374542 C179.8,387.214542 180.296,385.102542 180.8592,383.096142 L181.144415,382.102009 L181.144415,382.102009 L181.567181,380.647309 C182.157333,378.579875 182.616667,376.664542 182.4,374.974542 C180.303125,374.596417 178.09104,374.327594 175.82315,374.112221 L174.580942,373.99971 L174.580942,373.99971 L173.329808,373.895787 L173.329808,373.895787 L172.071889,373.798438 L172.071889,373.798438 L166.384744,373.387707 L166.384744,373.387707 L164.501883,373.239591 L164.501883,373.239591 L163.256462,373.131859 C156.433154,372.514947 150.079688,371.465167 145.8,368.474542 Z M302.3,368.174542 C298.292889,368.522986 294.0318,369.404164 289.646243,370.423383 L287.52267,370.923851 L284.547308,371.636013 C283.551316,371.874191 282.5516,372.111697 281.5496,372.344142 L280.346196,372.620365 L279.227269,372.871033 L279.227269,372.871033 L278.107372,373.114708 L278.107372,373.114708 L276.986947,373.350041 L276.986947,373.350041 L275.866436,373.575682 L275.866436,373.575682 L274.746283,373.790281 C274.559646,373.825053 274.373041,373.859308 274.18648,373.893019 L273.067694,374.088525 C265.054447,375.439611 257.154048,375.680097 250.1,372.574542 C250.1,372.924542 249.889453,373.063995 249.644214,373.168756 L249.323633,373.298175 C249.115625,373.390167 248.9375,373.512042 248.9,373.774542 C258.4375,381.212042 265.83125,383.519854 277.445508,383.511673 L278.564592,383.503958 C278.942009,383.499119 279.323883,383.492036 279.710418,383.4828 L280.884209,383.448717 L280.884209,383.448717 L282.087185,383.402251 C282.290181,383.393504 282.494444,383.384264 282.7,383.374542 C285.029412,381.64513 287.271626,379.828521 289.510177,377.995059 L291.7506,376.158584 C295.118685,373.403262 298.541176,370.662777 302.3,368.174542 Z M200.3,26.4745418 L198.734746,27.2647194 C198.47204,27.3981082 198.208439,27.5323414 197.943979,27.6674162 L196.347163,28.4879418 L196.347163,28.4879418 L194.731302,29.3285314 L194.731302,29.3285314 L193.097996,30.1890506 L193.097996,30.1890506 L191.448842,31.069365 L191.448842,31.069365 L189.78544,31.9693402 L189.78544,31.9693402 L188.109387,32.8888418 C187.82908,33.0437118 187.548312,33.1993898 187.267117,33.355873 L185.575086,34.3044122 C162.38788,47.3992218 136.776,65.8705418 127.1,88.1745418 C131.80013,99.0721878 132.053988,109.60652 130.668036,120.115752 L130.49403,121.376761 L130.49403,121.376761 L130.30536,122.637659 L130.30536,122.637659 L130.103103,123.898576 L130.103103,123.898576 L129.888337,125.159641 L129.888337,125.159641 L129.662139,126.420985 C129.623546,126.63124 129.584523,126.841511 129.54509,127.051802 L129.303766,128.313808 L129.303766,128.313808 L129.053704,129.576416 L129.053704,129.576416 L128.8075,130.784005 C128.55811,131.991966 128.299634,133.201103 128.036307,134.411925 L126.763808,140.187252 L126.428,141.719642 C124.757,149.388542 123.23,157.164542 122.9,165.174542 C122.721277,171.519223 124.039837,177.524519 125.606883,183.600751 L126.060293,185.339102 L126.060293,185.339102 L126.981792,188.835891 C127.05832,189.128761 127.134603,189.422057 127.210505,189.715825 L127.660275,191.484435 C128.915573,196.513519 129.982979,201.704329 130.2,207.274542 C127.436364,211.85636 120.494215,213.529087 113.758828,213.946818 L112.918299,213.992618 C112.638693,214.005785 112.359763,214.016894 112.081827,214.026063 L111.251315,214.04787 C110.975682,214.05328 110.701361,214.056869 110.428667,214.058759 L109.615786,214.059446 L109.615786,214.059446 L108.814576,214.05065 L108.814576,214.05065 L108.026939,214.033089 L108.026939,214.033089 L107.254779,214.00748 L107.254779,214.00748 L106.5,213.974542 L106.5,213.974542 L106.250871,212.737373 L106.250871,212.737373 L106.077625,211.908742 L106.077625,211.908742 L105.898259,211.077903 L105.898259,211.077903 L105.712437,210.245604 L105.712437,210.245604 L105.519823,209.412595 L105.519823,209.412595 L105.320081,208.579625 L105.320081,208.579625 L105.112875,207.747442 C105.0777,207.608852 105.0422,207.470326 105.006368,207.331879 L104.787336,206.502281 L104.787336,206.502281 L104.56,205.675342 C104.4828,205.400222 104.40416,205.12567 104.324024,204.851811 L104.079072,204.032436 C104.03748,203.896262 103.9955,203.760292 103.953125,203.624542 L103.694079,202.812807 L103.694079,202.812807 L103.425217,202.0071 L103.425217,202.0071 L103.146203,201.208171 C99.87788,192.062332 94.529,184.409542 84.8,183.374542 C64.9,181.274542 50.2,197.774542 49.4,214.974542 C48.3,235.274542 65.1,268.774542 88.5,266.474542 C91.6819549,266.163264 94.0265532,264.85912 96.1461176,263.28614 L96.6943453,262.870176 L96.6943453,262.870176 L97.2347792,262.444871 C97.3243363,262.373367 97.4136692,262.301593 97.5028284,262.229608 L99.311823,260.751882 L99.311823,260.751882 L99.8278,260.338813 L99.8278,260.338813 L100.349645,259.932566 C102.889529,257.989616 105.710114,256.374542 109.9,256.374542 C112.185445,260.903108 111.04962,264.124069 108.865403,266.901667 L108.561279,267.277763 L108.561279,267.277763 L108.245497,267.64885 L108.245497,267.64885 L107.919391,268.015415 L107.919391,268.015415 L107.584301,268.377945 L107.584301,268.377945 L107.241562,268.736926 L107.241562,268.736926 L106.892512,269.092846 L106.892512,269.092846 L106.538488,269.446192 L105.555299,270.403665 L105.555299,270.403665 L104.697132,271.233623 L104.697132,271.233623 L104.169866,271.752147 C102.254983,273.657018 100.572421,275.612437 100.1,277.974542 C100.062088,278.227289 100.051325,278.56947 100.063272,278.981911 L100.082624,279.417063 C100.087056,279.493255 100.092078,279.571221 100.097669,279.650872 L100.137881,280.148295 L100.137881,280.148295 L100.190765,280.681907 L100.190765,280.681907 L100.255336,281.247447 L100.255336,281.247447 L100.330606,281.840654 L100.330606,281.840654 L100.415589,282.457267 L100.415589,282.457267 L100.559117,283.416754 L100.559117,283.416754 L100.718948,284.40494 L100.718948,284.40494 L100.907283,285.494822 L101.074587,286.411951 L101.074587,286.411951 L101.334648,287.76148 L101.334648,287.76148 L101.597979,289.046549 L101.597979,289.046549 L101.855967,290.229967 L101.855967,290.229967 L102.020738,290.944073 L102.020738,290.944073 L102.1,291.274542 C103.158462,295.60685 104.538059,300.254234 106.156761,305.001921 L106.774822,306.786586 C111.701586,320.796719 118.603077,335.440696 125.4,345.274542 C133.492,356.698542 146.94784,361.695182 162.654643,364.257748 L164.0463,364.477642 C164.27919,364.513272 164.512547,364.548401 164.746361,364.583042 L166.154652,364.785128 C166.390255,364.817866 166.626295,364.850141 166.862762,364.881967 L168.286618,365.067617 C168.524755,365.097692 168.7633,365.127343 169.002243,365.156581 L170.440594,365.327167 C170.681088,365.354808 170.92196,365.382062 171.1632,365.408942 L172.614977,365.565835 L172.614977,365.565835 L174.07511,365.714363 C174.319136,365.738454 174.56349,365.762222 174.808163,365.785679 L176.27994,365.9228 L176.27994,365.9228 L177.758887,366.053078 L177.758887,366.053078 L179.244527,366.177124 L179.244527,366.177124 L180.736386,366.295546 L180.736386,366.295546 L182.984794,366.463969 L182.984794,366.463969 L186,366.674542 L186,366.674542 C188.681818,360.834138 195.661167,358.758513 203.170398,358.563842 L203.935728,358.550456 C204.063539,358.549281 204.191465,358.548629 204.319489,358.548489 L205.088648,358.55373 C205.345325,358.557479 205.602245,358.563206 205.859259,358.570838 L206.630442,358.599374 L206.630442,358.599374 L207.401315,358.638897 L207.401315,358.638897 L208.170999,358.688967 L208.170999,358.688967 L208.938613,358.749144 L208.938613,358.749144 L209.703275,358.818986 C209.830424,358.831408 209.957414,358.844214 210.084225,358.857395 L210.84281,358.940912 L210.84281,358.940912 L211.596243,359.032994 L211.596243,359.032994 L212.343644,359.133202 L212.343644,359.133202 L213.084131,359.241095 L213.084131,359.241095 L213.816824,359.356232 L213.816824,359.356232 L214.540843,359.478174 L214.540843,359.478174 L215.255306,359.60648 L215.255306,359.60648 L215.959334,359.74071 L215.959334,359.74071 L216.652046,359.880424 L216.652046,359.880424 L217.332562,360.025181 L217.332562,360.025181 L218,360.174542 L218,360.174542 C209.40678,356.803355 201.250503,350.155093 193.762231,342.858082 L192.61549,341.7307 L192.61549,341.7307 L191.479477,340.595209 C191.291046,340.405403 191.10307,340.215348 190.915552,340.025087 L189.795981,338.881419 L189.795981,338.881419 L188.687605,337.734958 L188.687605,337.734958 L187.590611,336.587831 L187.590611,336.587831 L185.966869,334.870544 L185.966869,334.870544 L184.369789,333.163722 L184.369789,333.163722 L182.8,331.474542 L182.8,331.474542 C181.142857,329.660256 179.487755,327.825562 177.866181,325.965504 L177.058333,325.033338 L176.208607,324.039904 C176.067649,323.873914 175.927038,323.707712 175.786796,323.541295 L174.94993,322.540188 L174.94993,322.540188 L174.122943,321.53376 L174.122943,321.53376 L173.306878,320.521847 L173.306878,320.521847 L172.502778,319.504285 C165.189892,310.150236 159.516667,300.063431 159.1,288.674542 L165.5129,297.575742 L165.5129,297.575742 L168.04399,301.057195 L168.04399,301.057195 L169.307206,302.779297 L169.307206,302.779297 L170.570529,304.48842 C170.78116,304.772169 170.991848,305.055359 171.202618,305.337983 L172.46843,307.026845 L172.46843,307.026845 L173.737455,308.701672 C174.372979,309.535507 175.010173,310.363919 175.649738,311.186673 L176.932237,312.824564 C192.36512,332.387022 209.432,348.598542 237.8,358.174542 C267.6,367.974542 302.5,353.374542 325.2,337.374542 C330.6,333.605792 334.734375,328.571417 338.528613,323.179107 L339.366555,321.975293 C339.505404,321.773799 339.64388,321.571905 339.782031,321.369659 L340.607407,320.15232 L340.607407,320.15232 L341.83576,318.315283 L343.467285,315.856939 L343.467285,315.856939 L344.285435,314.628907 C345.242188,313.197936 346.208333,311.774542 347.2,310.374542 C372.5,274.074542 384.3,222.074542 381.7,171.774542 L381.610706,170.041359 L381.610706,170.041359 L381.443229,166.578593 L381.443229,166.578593 L381.082487,158.837838 L381.082487,158.837838 L380.998184,157.133348 L380.998184,157.133348 L380.91012,155.436511 L380.91012,155.436511 L380.817253,153.748225 L380.817253,153.748225 L380.71854,152.069392 L380.71854,152.069392 L380.612941,150.400911 C380.59471,150.123743 380.576148,149.847045 380.557234,149.570834 L380.439352,147.919569 L380.439352,147.919569 L380.311979,146.280908 C380.267824,145.736888 380.221914,145.195118 380.174074,144.655749 L380.024595,143.044994 C379.039043,132.891054 377.294444,123.657875 373.6,116.374542 C366.3,101.774542 341.8,88.7745418 327.2,101.774542 C324.4,87.3745418 339,78.6745418 356.2,83.7745418 L355.121121,82.3762203 L355.121121,82.3762203 L354.040546,80.9650334 L354.040546,80.9650334 L351.871566,78.1110769 L351.871566,78.1110769 L348.588215,73.7774861 L348.588215,73.7774861 L346.928071,71.599817 L346.928071,71.599817 L345.812895,70.1480284 L345.812895,70.1480284 L344.690187,68.6982782 L344.690187,68.6982782 L343.559259,67.2523196 L343.559259,67.2523196 L342.419426,65.8119061 L342.419426,65.8119061 L341.270001,64.378791 C333.188847,54.3766212 324.352174,45.0397592 313.7,39.0745418 L314.2,40.1745418 C284.1,23.1745418 232.6,10.3745418 200.3,26.4745418 Z M235.8,282.074542 L236.1,282.174542 C245.185,305.084542 271.80721,307.711292 299.055392,307.459069 L301.125804,307.434659 L301.125804,307.434659 L303.196976,307.400873 L303.196976,307.400873 L306.301559,307.336319 L306.301559,307.336319 L311.456345,307.205848 L311.456345,307.205848 L317.578186,307.044149 L317.578186,307.044149 L319.596174,306.996347 C319.93138,306.988822 320.266,306.981542 320.6,306.974542 C319,310.674542 315.8,315.074542 311.8,316.674542 C310.846,317.061542 309.7381,317.440442 308.500867,317.803879 L307.657155,318.043799 C307.082266,318.20211 306.482908,318.357044 305.861238,318.507954 L304.912268,318.731221 L304.912268,318.731221 L303.931448,318.947966 C302.105071,319.339059 300.12627,319.694832 298.0399,320.001842 L296.891482,320.164385 C296.312208,320.243158 295.72554,320.318122 295.132387,320.389004 L293.937706,320.525247 C292.734918,320.655885 291.508618,320.769471 290.266086,320.863821 L289.018413,320.951679 C277.53675,321.696792 264.895,320.764542 256.7,316.474542 C251.539216,313.674542 247.373126,309.005722 243.804562,304.27189 L243.04887,303.257159 L243.04887,303.257159 L242.310602,302.244383 L242.310602,302.244383 L241.588889,301.237505 L241.588889,301.237505 L240.191653,299.25722 L240.191653,299.25722 L238.850214,297.347858 L238.850214,297.347858 L238.198247,296.429633 C238.090556,296.27895 237.983337,296.129498 237.876572,295.98136 L237.241296,295.10896 C236.821223,294.538748 236.407843,293.992189 236,293.474542 C235.774667,293.197209 235.476476,292.88232 235.129317,292.538468 L234.690751,292.112494 L234.690751,292.112494 L234.214351,291.662015 L234.214351,291.662015 L233.184741,290.700741 L233.184741,290.700741 L232.649879,290.196545 L232.649879,290.196545 L232.0319,289.600942 L231.370889,288.93825 L231.370889,288.93825 L230.94768,288.493096 L230.94768,288.493096 L230.544815,288.047546 L230.544815,288.047546 L230.16776,287.603565 L230.16776,287.603565 L229.990618,287.382777 L229.990618,287.382777 L229.821977,287.163119 L229.821977,287.163119 L229.66252,286.944836 L229.66252,286.944836 L229.512931,286.728173 L229.512931,286.728173 L229.373891,286.513376 L229.373891,286.513376 L229.246084,286.300691 C229.225757,286.265434 229.205926,286.230274 229.186606,286.195218 L229.076929,285.986161 C229.059709,285.951539 229.043028,285.91703 229.0269,285.88264 L228.93689,285.677765 L228.93689,285.677765 L228.860844,285.475984 L228.860844,285.475984 L228.799445,285.277543 C228.476364,284.097408 228.981135,283.1109 230.977582,282.556779 L231.324248,282.46847 C231.444484,282.440396 231.569437,282.413697 231.699222,282.388414 L232.103185,282.316856 C232.382308,282.272039 232.681213,282.23305 233.000811,282.200219 L233.49584,282.15563 L233.49584,282.15563 L234.022591,282.120522 L234.022591,282.120522 L234.581746,282.095141 C234.677676,282.091735 234.774986,282.088745 234.873688,282.086175 L235.48273,282.075845 C235.587061,282.074978 235.692813,282.074542 235.8,282.074542 Z M239.2,265.774542 C248.061538,270.363553 260.706968,272.810214 274.025034,273.995068 L275.693071,274.136667 C275.971586,274.159193 276.250337,274.181187 276.529295,274.202657 L278.205309,274.325256 C278.764661,274.36407 279.324618,274.400853 279.884955,274.435667 L281.56688,274.534272 C281.847316,274.549744 282.127791,274.564739 282.408276,274.579267 L284.091091,274.660879 C284.651921,274.686253 285.212569,274.709819 285.772809,274.731641 L287.452082,274.791933 L287.452082,274.791933 L289.127558,274.84214 C289.685268,274.857237 290.242119,274.870716 290.797888,274.882642 L292.461721,274.913823 L292.461721,274.913823 L294.117706,274.936063 L294.117706,274.936063 L295.764493,274.949746 L295.764493,274.949746 L297.400732,274.955253 L297.400732,274.955253 L299.025073,274.952968 L299.025073,274.952968 L301.43632,274.935762 L301.43632,274.935762 L303.025007,274.915665 L303.025007,274.915665 L304.597068,274.889112 L304.597068,274.889112 L306.921035,274.838015 L306.921035,274.838015 L309.2,274.774542 L309.2,274.774542 C309.982609,278.035411 310.25482,281.764145 310.377242,285.627875 L310.419076,287.179777 L310.419076,287.179777 L310.450062,288.741345 L310.450062,288.741345 L310.5,291.874542 L310.5,291.874542 C281.4,293.474542 247,286.274542 239.2,265.774542 Z M364.4,254.874542 L363.588745,256.3996 L363.588745,256.3996 L363.036025,257.419829 L363.036025,257.419829 L362.473249,258.441775 L362.473249,258.441775 L361.899946,259.464491 C361.803492,259.634955 361.70658,259.805412 361.6092,259.975842 L361.019226,260.99794 L361.019226,260.99794 L360.417549,262.018445 C360.316268,262.188344 360.21448,262.358137 360.112175,262.527804 L359.492063,263.544146 C350.82585,277.578342 338.463,290.476542 316.8,290.974542 L316.686751,289.38061 L316.686751,289.38061 L316.579721,287.657103 L316.579721,287.657103 L316.507272,286.306253 L316.507272,286.306253 L316.444444,284.926394 L316.444444,284.926394 L316.393861,283.536331 L316.393861,283.536331 L316.368238,282.613239 L316.368238,282.613239 L316.35,281.699542 L316.35,281.699542 L316.339925,280.800811 L316.339925,280.800811 L316.338792,279.922617 C316.339391,279.778273 316.340395,279.635016 316.341821,279.492963 L316.355556,278.656023 C316.35873,278.519251 316.362358,278.383914 316.366456,278.25013 L316.396809,277.466981 C316.463265,276.06876 316.590476,274.886447 316.8,274.074542 C327.012785,273.048131 335.250223,269.888345 342.918058,266.095547 L344.124241,265.491643 L344.124241,265.491643 L345.322186,264.87853 C345.521225,264.77565 345.719972,264.672441 345.918453,264.56893 L347.106348,263.944465 L347.106348,263.944465 L348.289079,263.314073 L348.289079,263.314073 L349.467877,262.679065 L349.467877,262.679065 L354.230775,260.085186 C357.551758,258.279899 360.9,256.498725 364.4,254.874542 Z M305.371798,155.803868 L305.4,155.874542 C308.755844,163.822594 314.353888,172.70652 320.773607,181.475995 L321.914739,183.022147 C322.48928,183.794415 323.069568,184.565312 323.654627,185.334114 L324.830817,186.868714 L324.830817,186.868714 L326.017994,188.396449 L326.017994,188.396449 L327.214423,189.916035 L327.214423,189.916035 L328.41837,191.42619 L328.41837,191.42619 L329.628099,192.925631 L329.628099,192.925631 L330.841876,194.413076 L330.841876,194.413076 L332.057967,195.887241 L332.057967,195.887241 L333.274636,197.346845 L333.274636,197.346845 L334.490148,198.790604 L334.490148,198.790604 L335.702768,200.217236 L335.702768,200.217236 L336.910763,201.625457 L336.910763,201.625457 L338.112397,203.013986 L338.112397,203.013986 L339.305935,204.381539 L339.305935,204.381539 L340.489642,205.726834 L340.489642,205.726834 L341.661783,207.048588 L341.661783,207.048588 L343.394516,208.984275 L343.394516,208.984275 L344.530154,210.241565 L344.530154,210.241565 L345.648156,211.470824 C345.832923,211.673294 346.016883,211.874542 346.2,212.074542 C346.663636,212.619996 347.168182,213.152434 347.695126,213.671856 L348.22885,214.186939 L348.22885,214.186939 L348.773394,214.693343 L348.773394,214.693343 L349.324643,215.191071 L349.324643,215.191071 L349.878484,215.68012 L349.878484,215.68012 L352.0375,217.549542 L352.0375,217.549542 L352.5426,217.995203 L352.5426,217.995203 L353.02561,218.432186 C354.358964,219.658013 355.376801,220.779346 355.658092,221.796184 L355.7,221.974542 C356.515094,225.234919 355.607725,228.823385 354.45429,232.21995 L354.161659,233.064792 C354.112318,233.204833 354.062763,233.344465 354.013101,233.483651 L353.130723,235.932706 L353.130723,235.932706 L352.855393,236.719224 C352.098291,238.923148 351.557245,240.91121 351.75696,242.498609 L351.779464,242.646 L349.340731,244.224907 L349.340731,244.224907 L347.610716,245.33464 L347.610716,245.33464 L345.280613,246.810617 L345.280613,246.810617 L344.104709,247.5452 L344.104709,247.5452 L342.921085,248.276426 L342.921085,248.276426 L341.729377,249.003479 L341.729377,249.003479 L340.529224,249.725545 L340.529224,249.725545 L339.320261,250.441808 L339.320261,250.441808 L338.102125,251.151454 L338.102125,251.151454 L336.874453,251.853668 L336.874453,251.853668 L335.636881,252.547634 C333.772918,253.58199 331.874318,254.58576 329.935564,255.546564 L328.637052,256.1806 C315.156376,262.66372 299.71194,266.977322 280.5,265.074542 C273.9,259.274542 271.4,246.274542 277.9,237.674542 C278.391566,238.527554 278.763986,239.4809 279.070448,240.492572 L279.218429,241.003075 L279.218429,241.003075 L279.356895,241.522131 C279.379262,241.609289 279.401293,241.696754 279.423021,241.784503 L279.61119,242.58124 L279.61119,242.58124 L279.845152,243.660563 L279.845152,243.660563 L280.299361,245.842512 L280.299361,245.842512 L280.418674,246.386048 L280.418674,246.386048 L280.607966,247.195147 L280.607966,247.195147 L280.743197,247.728709 L280.743197,247.728709 L280.887382,248.256239 L280.887382,248.256239 L281.041997,248.77657 C282.110814,252.218859 283.973494,255.103458 288.6,255.874542 C295.68,257.114542 303.208,255.634542 310.5248,253.098542 L311.678233,252.689588 C313.021633,252.202803 314.356689,251.683155 315.67928,251.141048 L316.809781,250.671126 L316.809781,250.671126 L317.9336,250.191659 L317.9336,250.191659 L319.050161,249.704102 L319.050161,249.704102 L320.158886,249.209911 L320.158886,249.209911 L321.2592,248.710542 L321.2592,248.710542 L322.892637,247.954962 L322.892637,247.954962 L324.503905,247.195918 L324.503905,247.195918 L326.614411,246.186961 L326.614411,246.186961 L330.688351,244.223354 L330.688351,244.223354 L332.642559,243.291992 L332.642559,243.291992 L333.596954,242.844017 L333.596954,242.844017 L334.998538,242.198279 L334.998538,242.198279 L335.912082,241.787393 C336.062909,241.720321 336.213014,241.653972 336.362384,241.588378 L337.249686,241.204114 L337.249686,241.204114 L338.118774,240.839415 L338.118774,240.839415 L338.969071,240.49574 C339.249307,240.384847 339.526316,240.2777 339.8,240.174542 C343.934,233.125542 343.43315,228.436102 341.007011,224.30481 L340.724275,223.839404 C340.67583,223.762202 340.626736,223.685174 340.577011,223.608308 L340.271238,223.148967 L340.271238,223.148967 L339.9512,222.692942 C339.89672,222.617182 339.841682,222.541536 339.786104,222.465992 L339.446305,222.013853 L339.446305,222.013853 L339.094425,221.563579 C339.03482,221.488657 338.974748,221.413788 338.914227,221.33896 L338.545862,220.890395 L338.545862,220.890395 L338.1676,220.442242 L338.1676,220.442242 L337.583559,219.769516 L337.583559,219.769516 L336.982163,219.094452 L336.982163,219.094452 L335.739098,217.729469 L335.739098,217.729469 L334.46199,216.331611 L334.46199,216.331611 L334.0328,215.855642 L334.0328,215.855642 L333.388747,215.130302 L333.388747,215.130302 L332.746995,214.389556 L332.746995,214.389556 L332.321894,213.886199 L332.321894,213.886199 L331.9,213.374542 L331.9,213.374542 L326.904405,207.439556 L326.904405,207.439556 L325.038625,205.201867 L325.038625,205.201867 L324.100995,204.067079 L324.100995,204.067079 L323.161805,202.92165 L323.161805,202.92165 L322.222255,201.76557 L322.222255,201.76557 L321.283545,200.598828 L321.283545,200.598828 L320.346875,199.421417 C320.191,199.224292 320.03526,199.026722 319.87968,198.828707 L318.94832,197.635271 C318.79348,197.435475 318.63885,197.235232 318.484455,197.034544 L317.561105,195.825064 C316.947685,195.015175 316.338825,194.198147 315.736125,193.373967 L314.836895,192.132331 L314.836895,192.132331 L313.948105,190.879958 C313.653715,190.46071 313.361265,190.03967 313.070955,189.616838 L312.206645,188.34296 C304.06049,176.190002 297.815,162.579542 298.1,147.474542 C301.034118,145.349836 302.663059,147.038293 303.660036,149.471618 L303.795115,149.815678 L303.795115,149.815678 L303.922398,150.167553 L303.922398,150.167553 L304.042291,150.525392 L304.042291,150.525392 L304.1552,150.887342 L304.1552,150.887342 L304.312359,151.433923 L304.312359,151.433923 L304.456091,151.979335 L304.456091,151.979335 L304.629218,152.693927 L304.629218,152.693927 L305.113332,154.877147 L305.113332,154.877147 L305.201483,155.239322 L305.201483,155.239322 L305.258803,155.452722 L305.258803,155.452722 L305.315439,155.641522 L305.315439,155.641522 L305.371798,155.803868 L305.371798,155.803868 Z M100.2,230.174542 L100.2,229.774542 C98.484507,228.768908 97.1451894,226.739727 95.9258833,224.370104 L95.5805544,223.684395 C95.5234701,223.568762 95.4666026,223.452506 95.4099243,223.335699 L95.0719028,222.628837 L95.0719028,222.628837 L94.2379972,220.827094 L94.2379972,220.827094 L93.5713856,219.379333 L93.5713856,219.379333 L93.2345997,218.663067 L93.2345997,218.663067 L92.8937233,217.956597 C92.7792686,217.723134 92.6639109,217.491893 92.5474288,217.263465 L92.1943885,216.587211 C90.5290617,213.476248 88.6,211.032288 85.8,210.874542 C81.6,210.622542 79.48152,214.039662 78.4369632,218.962532 L78.2949376,219.675809 L78.2949376,219.675809 L78.1668704,220.408171 C78.1466528,220.531743 78.1269896,220.656053 78.1078672,220.78107 L77.9995136,221.539431 C77.9825,221.667162 77.966,221.795542 77.95,221.924542 L77.8598912,222.705748 L77.8598912,222.705748 L77.7811296,223.500433 C77.768912,223.633926 77.75714,223.767922 77.7458,223.902392 L77.6828352,224.714666 L77.6828352,224.714666 L77.6295856,225.536915 L77.6295856,225.536915 L77.5853984,226.367737 L77.5853984,226.367737 L77.5496208,227.205729 L77.5496208,227.205729 L77.5216,228.049492 L77.5216,228.049492 L77.5006832,228.897622 L77.5006832,228.897622 L77.4812,230.174942 L77.4812,230.174942 L77.4739936,231.880241 L77.4739936,231.880241 L77.4798112,233.154738 L77.4798112,233.154738 L77.5107568,235.671721 L77.5107568,235.671721 L77.5882,240.445192 L77.5882,240.445192 L77.5994736,241.918051 C77.59982,242.037702 77.6,242.156542 77.6,242.274542 C70.6,236.174542 69.5,216.674542 74.5,206.874542 C71.331651,205.290367 69.1480475,206.362021 67.2808471,208.019273 L66.9807258,208.292823 L66.9807258,208.292823 L66.685518,208.574677 L66.685518,208.574677 L66.3945903,208.862873 L66.3945903,208.862873 L66.1073096,209.155451 L66.1073096,209.155451 L65.3654694,209.930374 C64.549948,210.785988 63.7516129,211.6068 62.9,212.174542 C67,182.374542 106.8,198.474542 100.2,230.174542 Z M118.3,92.2745418 C98.4,93.7745418 82,101.974542 70,114.974542 L70,115.274542 L69.9,115.274542 C62.418,123.510542 60.21748,135.917902 59.981536,148.594382 L59.964,149.906542 L59.964,149.906542 L59.959664,151.219662 L59.959664,151.219662 L59.967712,152.532782 L59.967712,152.532782 L59.987328,153.844942 L59.987328,153.844942 L60.017696,155.155182 L60.017696,155.155182 L60.058,156.462542 L60.058,156.462542 L60.107424,157.766062 L60.107424,157.766062 L60.196875,159.712042 L60.196875,159.712042 L60.265529,161.001762 L60.265529,161.001762 L60.38,162.922542 L60.38,162.922542 L60.505811,164.823882 L60.505811,164.823882 L60.686439,167.323162 L60.686439,167.323162 L61.3,175.074542 L61.3,175.074542 C84.7,160.374542 115.6,176.174542 115.4,201.174542 C120.602909,201.035178 121.878213,198.004061 121.551713,193.915767 L121.510708,193.473774 L121.510708,193.473774 L121.458079,193.024192 L121.458079,193.024192 L121.394463,192.567521 L121.394463,192.567521 L121.320496,192.104265 L121.320496,192.104265 L121.236813,191.634923 L121.236813,191.634923 L121.144049,191.159998 L121.144049,191.159998 L120.989269,190.438239 L120.989269,190.438239 L120.817634,189.706737 L120.817634,189.706737 L120.63129,188.967185 L120.63129,188.967185 L120.432382,188.221276 L120.432382,188.221276 L120.223056,187.470701 L120.223056,187.470701 L120.005457,186.717154 L120.005457,186.717154 L119.675,185.607354 L118.939518,183.197464 C118.4245,181.508152 117.94,179.870542 117.6,178.374542 C115.446429,169.149542 115.824107,159.686914 116.982931,150.2158 L117.188912,148.59214 L117.188912,148.59214 L117.408238,146.96857 L117.408238,146.96857 L117.638949,145.345347 C117.678241,145.074853 117.717925,144.804385 117.757962,144.533946 L118.126691,142.100968 L118.126691,142.100968 L118.507811,139.670502 L118.507811,139.670502 L119.380804,134.187623 L119.380804,134.187623 L119.720072,132.008536 L119.720072,132.008536 L120.047031,129.834423 L120.047031,129.834423 L120.25577,128.388091 L120.25577,128.388091 L120.455448,126.944439 C120.520337,126.46369 120.583476,125.983418 120.644626,125.503656 L120.821868,124.06593 C122.131303,113.055563 122.26175,102.331292 118.3,92.2745418 Z M240.97475,136.342467 L241.000464,136.265 L240.9,136.074542 C242.154,138.406542 243.21924,140.753062 244.205394,143.080028 L244.736113,144.347139 L244.736113,144.347139 L245.2551,145.609142 L245.2551,145.609142 L246.5272,148.733742 L246.5272,148.733742 L247.036275,149.968193 C249.337798,155.500212 251.823613,160.709139 256.115598,165.091087 L256.738363,165.711645 L256.738363,165.711645 L257.171924,166.12814 L257.171924,166.12814 L258.106733,166.989619 L258.106733,166.989619 L259.100904,167.899375 L259.100904,167.899375 L259.43908,168.215492 L259.43908,168.215492 L259.947987,168.703299 L259.947987,168.703299 L260.286352,169.038259 L260.286352,169.038259 L260.789107,169.556478 L260.789107,169.556478 L261.119081,169.913142 L261.119081,169.913142 L261.443296,170.279289 L261.443296,170.279289 L261.76038,170.655376 C261.812557,170.718911 261.86438,170.78288 261.915819,170.84729 L262.219633,171.239145 C264.410543,174.152831 265.749367,177.960618 263.8,183.474542 C263.565217,184.074542 262.983365,184.858285 262.19114,185.708601 L261.778129,186.138765 C261.420399,186.500953 261.030102,186.87131 260.617125,187.241358 L260.1113,187.684725 L260.1113,187.684725 L259.5875,188.124542 C259.410326,188.270194 259.230789,188.414712 259.049522,188.557553 L258.501164,188.980505 C256.752268,190.300487 254.904348,191.420194 253.5,191.874542 C240.8,195.574542 211.2,192.474542 221.2,176.774542 C223.807335,176.823737 226.620382,177.254105 229.497758,177.762046 L233.543177,178.491118 L234.367444,178.635049 L235.160993,178.769072 L235.953161,178.897114 L236.728135,179.015554 L236.728135,179.015554 L237.500558,179.125616 L237.500558,179.125616 L238.269825,179.225999 L238.269825,179.225999 L239.035332,179.315405 C239.162569,179.329319 239.289625,179.342722 239.416486,179.355585 L240.175216,179.426088 C245.342543,179.860726 250.140471,179.298899 253.7,175.874542 L252.489814,173.845695 L252.489814,173.845695 L251.630997,172.377922 L251.630997,172.377922 L250.741778,170.827647 L250.741778,170.827647 L250.060697,169.615782 L250.060697,169.615782 L249.371982,168.365665 L249.371982,168.365665 L248.910599,167.512729 L248.910599,167.512729 L248.448829,166.645381 L248.448829,166.645381 L247.987872,165.764657 L247.987872,165.764657 L247.528931,164.871591 L247.528931,164.871591 L246.846928,163.51112 C246.771702,163.358673 246.696686,163.205819 246.621904,163.052581 L246.176222,162.128707 C246.102476,161.974016 246.029016,161.818983 245.955864,161.663631 L245.520869,160.727847 L245.520869,160.727847 L245.0945,159.785419 C245.024224,159.627852 244.954358,159.47005 244.884926,159.312037 L244.473752,158.361583 C244.406159,158.202807 244.33905,158.043862 244.272451,157.88477 L243.879175,156.92862 C243.814715,156.769024 243.750815,156.609324 243.6875,156.449542 L243.314827,155.490026 L243.314827,155.490026 L242.957392,154.529562 C240.56972,147.965501 239.33353,141.407485 240.97475,136.342467 Z M358.4,135.874542 C359.353125,137.827667 360.281836,139.800323 361.199484,141.780685 L362.296207,144.160061 L362.296207,144.160061 L364.478299,148.922842 L364.478299,148.922842 L365.573923,151.297165 C369.056348,158.801202 372.6875,166.143292 377.2,172.674542 C372.2,184.474542 338.7,194.974542 339.3,173.774542 C341.948785,172.613431 345.269026,172.202771 348.735234,171.959746 L349.834065,171.887895 L349.834065,171.887895 L353.696398,171.665718 L353.696398,171.665718 L354.687236,171.601039 C354.851762,171.589605 355.015944,171.577802 355.179724,171.565566 L356.157149,171.486478 C359.720095,171.173828 363.034483,170.591783 365.5,169.074542 C365.26,168.374542 365.012,167.683875 364.7584,167.000171 L364.3741,165.979542 L364.3741,165.979542 L363.9832,164.967579 L363.9832,164.967579 L363.388413,163.461996 L363.388413,163.461996 L361.9927,159.975542 L361.9927,159.975542 L361.405788,158.478292 L361.405788,158.478292 L361.022762,157.474662 L361.022762,157.474662 L360.648438,156.464588 C358.49375,150.550236 356.875,144.216209 357.4,135.874542 L358.4,135.874542 Z M216.3,89.8745418 L216.719183,89.9482365 L216.719183,89.9482365 L217.143512,90.0345279 L217.143512,90.0345279 L217.572136,90.1332682 L217.572136,90.1332682 L218.004201,90.2443095 C218.148702,90.2833571 218.293635,90.3244301 218.438858,90.367504 L218.875254,90.5027036 L218.875254,90.5027036 L219.312536,90.6497605 L219.312536,90.6497605 L219.749855,90.8085268 C219.822697,90.8359555 219.895505,90.8638658 219.968262,90.8922548 L220.404037,91.0683079 L220.404037,91.0683079 L220.837719,91.2557007 L220.837719,91.2557007 L221.268455,91.4542853 L221.268455,91.4542853 L221.695395,91.6639137 L221.695395,91.6639137 L222.117686,91.8844381 L222.117686,91.8844381 L222.534477,92.1157106 C222.603436,92.1551435 222.672131,92.195018 222.740543,92.2353311 L223.147487,92.4824484 C223.214699,92.5245036 223.281593,92.5669912 223.348151,92.6099082 L223.743331,92.8725375 L223.743331,92.8725375 L224.129604,93.1453233 C224.383961,93.3305331 224.631812,93.5224153 224.872022,93.7207727 L225.226464,94.0231405 C225.342606,94.1255322 225.456696,94.229518 225.568592,94.3350733 L225.897554,94.656423 C228.635371,97.4274989 229.854082,101.203113 227.2,105.574542 C201.398,99.5605418 188.01588,115.657692 179.934791,133.057047 L179.441628,134.134775 C179.36054,134.314612 179.28,134.494542 179.2,134.674542 C174.80241,133.650445 174.106372,129.650591 174.641563,125.538806 L174.711538,125.045038 C174.724132,124.962715 174.73718,124.880393 174.750661,124.798094 L174.836587,124.304777 L174.836587,124.304777 L174.931961,123.813133 L174.931961,123.813133 L175.035834,123.324265 L175.035834,123.324265 L175.147259,122.83927 L175.147259,122.83927 L175.265286,122.359249 L175.265286,122.359249 L175.388967,121.885302 L175.388967,121.885302 L175.517353,121.418528 L175.517353,121.418528 L175.71668,120.734223 L175.71668,120.734223 L175.852679,120.290194 L175.852679,120.290194 L176.058979,119.64516 L176.058979,119.64516 L176.333359,118.830109 L176.333359,118.830109 L176.6,118.074542 L176.6,118.074542 C181.4,104.874542 200.6,87.4745418 216.3,89.8745418 Z M162.3,32.4745418 L162.3,32.7745418 C133,40.9745418 95.5,62.1745418 83.5,88.4745418 C87.1636364,87.9624206 90.3772268,86.9226594 93.495353,85.8137688 L96.3568384,84.7838999 C100.163545,83.42018 103.990909,82.1654509 108.5,81.8745418 C109.666667,81.7745418 110.944444,81.8967641 112.277778,82.0634307 L114.0836,82.296383 C116.217421,82.5624705 118.425926,82.7449122 120.5,82.1745418 C123.218983,81.4947961 125.776247,78.9668329 128.207126,75.6742267 L128.691627,75.0058313 C128.7721,74.8928399 128.852435,74.7790791 128.932634,74.6645891 L129.412197,73.9692199 L129.412197,73.9692199 L129.888548,73.258276 C129.967675,73.1385945 130.046671,73.0183444 130.125537,72.8975656 L130.597186,72.1668718 L130.597186,72.1668718 L131.065778,71.4254193 L131.065778,71.4254193 L131.531376,70.6751344 L131.531376,70.6751344 L131.994045,69.9179435 L131.994045,69.9179435 L132.749537,68.6614052 L133.141076,68.0027209 L133.141076,68.0027209 L135.231919,64.4578006 L135.231919,64.4578006 L135.817921,63.4741367 L135.817921,63.4741367 L136.399797,62.5106258 L136.399797,62.5106258 L136.977694,61.5717976 L136.977694,61.5717976 L137.551759,60.6621814 C138.696157,58.875181 139.818455,57.2906303 140.923968,56.0715922 L141.2,55.7745418 C143.632258,53.0906709 146.275546,51.0223046 148.879125,49.0974615 L151.263845,47.3476982 C154.015817,45.3217843 156.632258,43.2938967 158.8,40.6745418 C159.468627,40.3078752 160.202384,40.0342497 160.945079,39.7824249 L162.359332,39.3097953 L162.359332,39.3097953 L162.755236,39.1690726 L162.755236,39.1690726 L163.143794,39.0211129 C163.207829,38.9957072 163.271473,38.9698928 163.334685,38.9436163 L163.708425,38.7799839 C165.302537,38.0431693 166.547059,36.9216007 166.7,34.4745418 C165.3,33.0745418 163.8,31.9745418 162.3,32.4745418 Z&quot; fill=&quot;currentColor&quot; fill-rule=&quot;nonzero&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5&quot;/&gt;    &lt;/g&gt;&lt;/svg&gt;" data-dropdown-text="About Jenkins" data-dropdown-type="ITEM" data-dropdown-href="/manage/about"></template><template data-dropdown-type="SEPARATOR"></template><template data-dropdown-icon="&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; aria-hidden=&quot;true&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;path d=&quot;M352.92 80C288 80 256 144 256 144s-32-64-96.92-64c-52.76 0-94.54 44.14-95.08 96.81-1.1 109.33 86.73 187.08 183 252.42a16 16 0 0018 0c96.26-65.34 184.09-143.09 183-252.42-.54-52.67-42.32-96.81-95.08-96.81z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;32&quot;/&gt;&lt;/svg&gt;" data-dropdown-text="Get involved" data-dropdown-type="ITEM" data-dropdown-href="https://www.jenkins.io/participate/"></template><template data-dropdown-icon="&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; aria-hidden=&quot;true&quot; viewBox=&quot;0 0 512 512&quot;&gt;&lt;path d=&quot;M384 224v184a40 40 0 01-40 40H104a40 40 0 01-40-40V168a40 40 0 0140-40h167.48M336 64h112v112M224 288L440 72&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;32&quot;/&gt;&lt;/svg&gt;" data-dropdown-text="Website" data-dropdown-type="ITEM" data-dropdown-href="https://www.jenkins.io/"></template></div></template></div></div></footer></body></html>

This PR updates the `version.py`, so every time when running this
file, it also bumps the version number in `pyproject.toml`
automatically.
@MasterJH5574 MasterJH5574 force-pushed the tvm-dev/2025-08-28-version branch from dc6734a to 37285a8 Compare August 29, 2025 01:40
@tqchen tqchen merged commit e3efec2 into apache:main Aug 29, 2025
12 checks passed
wllqwzx pushed a commit to wllqwzx/tvm that referenced this pull request Dec 15, 2025
* [FFI] Structural equal and hash based on reflection (apache#18156)

This PR add initial support for structural equal and hash
via the new reflection mechanism.

It will helps us to streamline the structural equality/hash
with broader support and clean error reports via AccessPath.
It also gives us ability to unify all struct equal/hash
registration into the extra meta-data in reflection registration.

* [Fix][Relax] Fix potential out-of-bounds access in `TupleRewriterNode` (apache#18120)

* Root cause

* Update

* [BugFix] Fix NCCL build with GlobalDef registration (apache#18158)

This PR fixes a build failure in nccl.cc due to the recent switch of
global function registration.

* [FFI][REFACTOR] Introduce TypeAttr in reflection (apache#18160)

This PR introduces TypeAttr to reflection to bring extra
optional attribute registration that can be used to extend behaviors such
as structural equality. Also renames TypeExtraInfo to TypeMetadata for better clarity.

* [TIR] Fix trivial index map [] -> [0] (apache#18154)

fix trivial index map [] -> [0]

Co-authored-by: wrongtest <wrongtest@gmail.com>

* [Relax] Fix issue in fuse concat ops by pattern (apache#18163)

* [Relax] Fix issue in fuse concat ops by pattern

* fix lint

* [FFI][REFACTOR] Enable custom s_hash/equal (apache#18165)

This PR enables custom shash equal via TypeAttr,
also enhances the Var comparison by checking content
so we can precheck type signatures.

* [FFI][REFACTOR] Migrate StructuralEqual/Hash to new reflection (apache#18166)

This PR migrates the StructuralEqual/Hash to new reflection based approach.
The original mechanisms are still kept around and we will phase them out
in followup PRs.

The new mechanism unifies the structural equal/hash registration with
the normal reflection registeration and also brings cleaner implementation
for mismatch detection.

* [Web] Fix incompatible part after FFI updates (apache#18168)

fix: incompatible parts with the current core

* [REFACTOR][FFI] Phase out SEqualReduce/SHashReduce (apache#18172)

This PR phases out old SEqualReduce/SHashReduce mechanism
in favor of the new reflection mechanism via ffi/reflection.
It helps us to reduce the places we need to register the
reflection related information.

See the current IR examples for upgrading to the new mechanism.

* [FFI] Improve string equal/hash handling (apache#18176)

This PR improves the string equal hash handling
by improving some of the efficiencies.

* [FFI][REFACTOR] Isolate out extra API (apache#18177)

This PR formalizes the extra API in FFI. The extra APIs are minimal set of
APIs that are not required in core mechanism, but still helpful.

Move structural equal/hash to extra API.

* [Misc][BugFix] Fix missing PadAttrs register in op_attrs.py (apache#18174)

* [COMMUNITY] Add new key for release signing

* [Misc][BugFix] Fix missing PadAttrs register in op_attrs.py

Fix missing PadAttrs register in op_attrs.py

* [FFI] Fix SmallMapInit with duplicated keys (apache#18178)

This PR fixes Small map init when there are duplicated keys

* [Fix] Fix the wrong check for tuple node in apache#18163 (apache#18170)

* [Fix] Fix the wrong check for tuple node in apache#18163

* [REFACTOR] Upgrade NestedMsg<T> to use new ffi::Any mechanism (apache#18181)

This PR upgrades NestedMsg<T> to use the new ffi::Any mechanism,
which will enable us to get better support and enable NestedMsg
for POD types.

* [FFI][REFACTOR] Cleanup to align to latest ffi (apache#18183)

This PR modernizee legacy use to align with the latest FFI.

- Use Any to represent general Any instead of ObjectRef
- Use Optional<T>.has_value() instead of defined

* [FFI][REFACTOR] Hide StringObj/BytesObj into details (apache#18184)

This PR hides StringObj/BytesObj into details and bring
implementations to directly focus on the String/Bytes.

This change will prepare us for future changes such as SmallStr support.
Also moves more ObjectRef into Any in RPC.

* [FFI] Introduce small string/bytes (apache#18185)

* [Relax] Fix Relax Operator PReLU (apache#18179)

* [FFI] Lightweight json parser/writer (apache#18186)

This PR adds a lightweight json parser/writer to extra component.

* [FFI][EXTRA] Serialization To/From JSONGraph (apache#18187)

* [FFI][REFACTOR] Migrate the Save/Load JSON to the new reflection (apache#18188)

This PR migrates the Save/Load JSON to the new reflection based mechanism.

This is a breaking change that updates the the JSON format
to ffi/extra/serialization to handle the serialization,
see the json graph schema comment in ffi/extra/serialization.h
for the format, which roughly aligns with the old style.

After this change, we no longer need node/reflection and reflection vtable.
We can also phase out TVM_REGISTER_NODE and TVM_REGISTER_OBJECT to have a single
place that defines the reflection.

* [FFI][REFACTOR] Phase out getattr based attribute handling (apache#18189)

[REFACTOR] Phase out getattr based attribute handling

This PR phases out getattar based attribute handling as they are slower
and introduces extra code path.

This does mean that if an Object is not explicitly registered
in python side, we will no longer be able to access the field by name.
Likely this is also desirable as we would like to enable faster use that
updates the python end and do not rely on these behavior.

* [FFI][REFACTOR] Refactor AccessPath to enable full tree repr (apache#18191)

This PR refactors AccessPath so it can be used to represent full tree with compact memory.
Also fixes a bug in thec cython method export

* [FFI] Phase out ObjectPath in favor of AccessPath (apache#18192)

This PR phases out ObjectPath in favor of AccessPath

* Bump cutlass_fpA_intB_gemm to latest commit (apache#18193)

* [REFACTOR] Update data type rewriter to enable recursive rewrite in Any (apache#18197)

This PR updates the data type rewriter so recursive rewrite happens
in Any instead of ObjectRef.

* [Relax][ONNX] Parse ONNX Upsample to Relax resize2d (apache#18180)

* [TIR] Fix host/device function check for build (apache#18199)

This PR fixes a bug of deciding whether a function is host
or device function in TIR build.

Previously the decision is made based on checking whether `"cpu"`
is a substring of the target string. This check fails to work
for ROCm target, which usually comes with an `"mcpu"` attribute
that also contains `"cpu"`.

This PR fixes by checking target kind. Targets with kind `"llvm"`
or `"c"` will be treated as host functions.

* [FFI][REFACTOR] Move Downcast out of ffi for now (apache#18198)

Downcast was added for backward compact reasons and it have
duplicated features as Any.cast. This PR moves it out of ffi
to node for now so the ffi part contains minimal set of implementations.

* [FFI][REFACTOR] Update Map ABI to enable flexible smallMap switch (apache#18200)

This PR updates the Map ABI to use MSB in slots_ to indicate SmallMap.
The change would open doors for future changes to small map boundary
switch.

* [Fix] Codegen fix for relax cutlass (apache#18190)

* Codegen fix

---------

Co-authored-by: Tianqi Chen <tqchen@users.noreply.github.com>

* [LLVM][CPPTEST] Small fixes for LLVM >= 20 (apache#18202)

This PR updates cpptest to run on LLVM >= 20

* [LLVM] Fixes up to the latest LLVM21 (apache#18204)

This PR fix TVM use with the latest LLVM version 21.

- At this time LLVM21 is available as a release candidate.
- Double checks for backward compatibility down to LLVM10

* [FFI][REFATOR] Cleanup entry function to redirect (apache#18205)

This PR updates the entry function mechanism to create a stub that redirects to the real function.
This new behavior helps to simplify the runtime logic supporting entry function.
Also updates the name to `__tvm_ffi_main__`

* [CODEGEN][REFACTOR] tir.call_llvm_intrin to remove nargs (apache#18206)

This PR refactors the tir.call_llvm_intrin to omit the first nargs argument in the beginning.
Previously the nargs was introduced when prefetch have different number of signature.
The previous reason no longer stands as of now, and it is less intuitive to attach nargs
for the call_llvm_intrin, where nargs directly appears in number of argument.

After the update, tir.call_llvm_intrin can directly pass in the arguments as it is.

* [FFI][Fix] Update datatype registry calls to the new paths (apache#18208)

* [TARGET] Add target for nvidia rtx 5060ti (apache#18211)

* [Bug] Fix core dump in InferLayoutRMSNorm and fix typo (apache#18210)

Fix core dump in InferLayoutRMSNorm and fix typo

* [FFI] Make JSON Parser/Write fastmath safe (apache#18212)

This PR adds fallbacks for nan and inf
detection/creation under fastmath mode.

* [ONNX][FRONTEND][Fix] Update Resize to accept ShapeExpr (apache#18209)

[ONNX][FRONTEND] Update Resize to accept ShapeExpr

* [FFI] Formalize ffi.Module (apache#18213)

This PR formalizes original runtime::Module into ffi
as ffi.Module and cleans the APIs around it.

The goal is to stablize the Module API as extra API that can benefit the overall
ffi interactions. We also refactors the c++ code that depends on the Module.

* [Fix][ONNX] No precision widening for numpy binary operations (apache#18207)

* [FFI][REFACTOR] Establish ffi.Module in python (apache#18214)

This PR refactors and establishes ffi.Module under the python tvm ffi api.
Also moves export_library method to executable so it aligns more with
compiled artifact.

* [FFI][REFACTOR] Establish Stream Context in ffi (apache#18216)

This PR sets up the stream context in ffi and migrate
the existing per device API stream context management
to ffi env API. The new API will help us to streamline
stream related integration formost libraries.

* [FFI] AudoDLPack compatible with torch stream context (apache#18217)

This PR updates the autodlpack path to automatically update
the env stream to be consistent with torch stream context.

The change would help to make FFI functions to be
compatible in stream based executions.

We leverage torch cpp_extension load_inline to create
an efficient query function, the first time loading
might take more time to build the jit module and
things should be fast after the torch jit module is cached.

* [FFI][REFACTOR] Cleanup API locations (apache#18218)

This PR cleans up the env api and move it to extra.

* [Fix] Resolve deadlock in PopenPoolExecutor and LocalBuilder (apache#18219)

- Add explicit shutdown flag in PopenPoolExecutor
- Replace del with explicit shutdown() calls in LocalBuilder

* [Thrust] Fix getting CUDA stream (apache#18220)

This PR updates the `GetCUDAStream` in CUDA thrust integration
to the latest `TVMFFIEnvGetCurrentStream` interface.

* [NVSHMEM] Fix compatibility with CUDA code without nvshmem use (apache#18222)

This PR fixes two bugs that cause normal TIR functions (ones that
don't use any NVSHMEM API) not being able to compile and run,
in cases where `set(USE_NVSHMEM xxx)` is enabled.

Co-authored-by: Bohan Hou <bohanhou@andrew.cmu.edu>

* [FFI] Fix JSON parser/writer for the fast-math flag (apache#18221)

This PR fixes the JSON parser and writer for the support of the
fast-math flag.

Prior to this PR, there would be the following error when compiling
TVM with fast-math. This PR fixes this issue.
```
/home/ruihangl/Workspace/tvm/ffi/src/ffi/extra/json_writer.cc: In static member function ‘static bool tvm::ffi::json::JSONWriter::FastMathSafeIsNaN(double)’:
/home/ruihangl/Workspace/tvm/ffi/src/ffi/extra/json_writer.cc:69:22: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
   69 |     uint64_t bits = *reinterpret_cast<const uint64_t*>(&x);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/ruihangl/Workspace/tvm/ffi/src/ffi/extra/json_writer.cc: In static member function ‘static bool tvm::ffi::json::JSONWriter::FastMathSafeIsInf(double)’:
/home/ruihangl/Workspace/tvm/ffi/src/ffi/extra/json_writer.cc:84:22: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
   84 |     uint64_t bits = *reinterpret_cast<const uint64_t*>(&x);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

* [ROCm] Minor fixes for latest refactor (apache#18225)

This PR fixes a few ROCm and hipBLAS build issues after recent
refactors.

* [CI] Exit the build for AbortException (apache#18227)

[CI] Exit the build if met AbortException

* [FFI][REFACTOR] Establish tvm_ffi python module (apache#18226)

* [FFI][REFACTOR] Establish tvm_ffi as a standalone python module

This PR establishes tvm_ffi as a standalone python module.
The ffi is structured as a minimal pip module that can be
directly install by path or url.

examples/get_started provided a minimal example.
This is a major change as we are decoupling tvm_ffi as a
separate package, users need to install tvm_ffi separately.

Thanks to its minimal dependency, tvm_ffi can be easily installed
even just from the source by pip install ./ffi

This change would enable future improvement for library plugins
to have lightweight dependencies by just working on top of
the tvm_ffi, while the main compiler toolchain and runtime
can be layered on top.

* [FFI] Improve traceback setups

This PR improves traceback related setups

* [FFI] Robustify the pyproject setup (apache#18233)

This PR robustifies the pyproject setup to enable compact with cibuildwheel

* [LLVM][Fix] Do not emit debuginfo on vscale or other unknown types (apache#18232)

* [FFI] Misc fixup for windows (apache#18234)

This PR cleans up the ffi module to make it compatible for windows.

* [FFI][BUGFIX] Fix type_traits on DataType after SmallStr update (apache#18237)

This PR fixes the type_traits on DataType after SmallStr update.
We need to explicitly zero out the FFFIAny data structure to allow
fast comparison of FFIAny based on bytes values.

* [CUTLASS] Fix CUTLASS kernel compilation (apache#18238)

This PR fixes a few places in the current CUTLASS kernel AOT
compilation.

* [Relax] ONNX frontend using relax softplus operator (apache#18242)

Use relax softplus operator in onnx frontend

* [Relax] Add Python function support and BasePyModule for PyTorch integration (apache#18229)

### **Overview**

This PR implements native Python function support in TVM Relax through
the `@I.pyfunc` decorator and `BasePyModule`, which enable seamless
integration between TVM's compilation pipeline and Python/PyTorch runtime
environments. This enhancement allows users to write Python functions
directly in TVMScript that can interoperate with Relax and TIR functions
that provides enhanced debugging capabilities and leveraging existing
PyTorch operator libraries.

### **Key Features**
**TVMScript Parser Enhancement**
- `@I.pyfunc` decorator: Marks Python functions for integration into IRModules
- Dual storage format: Stores both raw string representation (for TVMScript
printing) and captured PackedFunc (for runtime execution)
- ExternFunc representation: Each Python function is represented as an
ExternFunc node with attributes storing source code and runtime wrapper

**Complete BasePyModule Implementation**
- DLPack-based tensor conversion: Seamless conversion between PyTorch
tensors and TVM NDArrays
- Cross-function interoperability: Python functions can call Relax/TIR
functions and vice versa
- JIT compilation: Delays compilation until module instantiation for flexible
late-stage modifications
- Dynamic function registration: Supports runtime addition of Python functions

### Future Work
- TVMScript printer for IRModules with Python functions: Print IRModules
in proper format with high-level operator mapping from Relax ops to PyTorch
ops, handling symbolic shapes
- R.call_py_func primitive: Introduce Relax primitive to invoke corresponding
PackedFunc of specified Python functions at runtime

* [Fix] Update FlashInfer JIT header lookup (apache#18244)

This PR fixes the tvm/dlpack/dmlc header lookup in the FlashInfer
kernel JIT compilation.

Prior to this fix, the JIT compilation assumes the environment
variable `TVM_SOURCE_DIR` is always defined, which is not always
true. This PR fixes the behavior and considers multiple cases,
including TVM source builds and pip-installed packages.

* [LLVM][MSWIN][CI] Fix LLVM module build with latest CI update (apache#18245)

* [FFI][CMAKE] Add missing download path for libbacktrace (apache#18246)

* [Build] Migrate Python packaging to pyproject.toml with scikit-build-core (apache#18239)

This pr migrates the TVM Python packaging system from the setup.py
flow to the modern, PEP 517/518 compliant pyproject.toml standard,
which allows us to produce a single, Python-version-agnostic wheel. 

This change streamlines the process for both developers and users. 
For local development, you can now set up a fully-functional editable
environment with a single command: `pip install -e .`.

To create the distributable package for release, simply run
`pip wheel -w dist .`  , which will produce a universal wheel in the `dist/`
folder. This ensures that end-users can reliably install TVM with a standard
pip install tvm, regardless of their specific Python 3 version.

* [FFI][CMAKE] Revert cmake libbacktrace URL and update submodule (apache#18249)

* Revert the URL out from cmake for libbacktrace
* Switch git submodule to upstream HEAD instead

As per discussed here apache#18246 (comment),
this reverts in favour of git submodule way.

As per finding in the same discuss the upstream [already](https://github.com/ianlancetaylor/libbacktrace/blob/793921876c981ce49759114d7bb89bb89b2d3a2d/macho.c#L1273-L1275) incorporates [the one patch](ianlancetaylor/libbacktrace@master...tlc-pack:libbacktrace:master) used, and MacOS works fine.

* [Python] Update version.py to bump pyproject.toml automatically (apache#18248)

This PR updates the `version.py`, so every time when running this
file, it also bumps the version number in `pyproject.toml`
automatically.

* [Python] Complete Python packaging with scikit-build-core (apache#18251)

Following apache#18239, this PR fixes a few issues we ran into during
testing the packaging flow through scikit-build-core.

* upgrade cutlass v4.2.0 supporting cuda 13 (apache#18236)

* upgrade cutlass v4.2.0 supporting cuda 13

* upgrade cutlass v4.2.0 supporting cuda 13

* [FFI][ABI] ABI Updates to for future metadata and complex ordering (apache#18254)

This PR updates the ABI to enable potential future need
for getting metadata from a dynamically loaded module.

Orders the current static object into simple objects that have C
ABI and more complex one that may need c++.

These items changes ABI to be future compact before we freeze.

* [FFI][DOCS] Wheel Packaging (apache#18256)

[FFI] Wheel packaging example

This PR add an example about wheel packaging.
Also fixes various source packaging minor nits.

* [FFI] fix two seemingly migration issue (apache#18258)

* [FFI][ABI] Introduce weak rc support (apache#18259)

This PR adds weak ref counter support to the FFI ABI.
Weak rc is useful when we want to break cyclic dependencies.

- When a strong rc goes to zero, we call the destructor of the object, but not freeing the memory
- When both strong and weak rc goes to zero, we call the memory free operation

The weak rc mechanism is useful when we want to break cyclic dependencies in object, where the
weak rc can keep memory alive but the destructor is called.
As of now, because we deliberately avoid cyles in codebase, we do not have strong use-case for weak rc.

However, given weak rc is common practice in shared_ptr, Rust RC, and also used in torch's c10::intrusive_ptr.
It is better to make sure the ABI is future compatible to such use-cases before we freeze.

This PR implements weak rc as a u32 counter and strong rc as a u64 counter, with the following
design consideration.

- Weak rc is very rarely used and u32 is sufficient.
- Keeping weak rc in u32 allows us to keep object header size to 24 bytes,
  saving extra 8 bytes(considering alignment)

We also need to update deleter to take flags that consider both weak and
strong deletion events. The implementation tries to optimize common case where
both strong and weak goes to 0 at the same time and call deleter once
with both flags set.

* [FFI][DOCS] Add missing files in packaging example (apache#18261)

This PR adds the missing files in packaging example
also renames get_started to quick_start

* [BugFix][NNAPI] Use kind() instead of type_key() after FFI refactor (apache#18262)

[BugFix][NNAPI] Use kind() after FFI refactor

This commit updates nnapi_runtime.cc to override kind() instead of type_key(),
aligning NNAPI with the new FFI interface. Behavior is consistent with
other runtimes that were updated in commit b8eb80b.

* [FFI][DOCS] Initial docs scaffolding (apache#18263)

* [DOCS] Misc docs fix (apache#18264)

This PR provides misc docs fix, updates the requirements of ffi docs
remove stale webpages from header, update embedding script to allow path.

* [Build] Complete TVM wheel building migration (apache#18252)

* finish1

* finish2

* finish3

* update

* update2

* update3

* update4

* update4

* update6

* Rename build step and update installation commandFix

* fix

* fix2

* fix3

* [Relax] Building TVMScript printer for IRModules with Python functions (apache#18253)

This PR implements TVMScript printer to format IRModules
containing `@I.pyfunc` decorated Python functions.

Example:
```
@I.ir_module
class MyModule(BasePyModule):
    @I.pyfunc
    def python_func(self, x, y):
        x_tvm = self._convert_pytorch_to_tvm(x)
        y_tvm = self._convert_pytorch_to_tvm(y)
        result = self.call_tir(self.add_tir, [x_tvm, y_tvm], 
                             out_sinfo=R.Tensor((5,), "float32"))
        return self._convert_tvm_to_pytorch(result)
    
    @T.prim_func
    def add_tir(a: T.handle, b: T.handle, c: T.handle):
        A = T.match_buffer(a, (5,), "float32")
        B = T.match_buffer(b, (5,), "float32")
        C = T.match_buffer(c, (5,), "float32")
        for i in range(5):
            C[i] = A[i] + B[i]

# Usage:
print(MyModule.script())  # Print formatted TVMScript
MyModule.show()           # Display formatted output
```

* [FFI] Update torch stream getter to use native torch c api (apache#18266)

This PR updates the torch stream getter to use  _cuda_getCurrentRawStream
in the torch C API that is also used by dynamo, saves us from load_inline
the custom module.

* [FFI] Support Opaque PyObject (apache#18270)

* [FFI] Support Opaque PyObject

This PR adds support of Opaque PyObject.
When a type in python is not natively supported by ffi, it will
now be converted to an Opaque PyObject on the backend, such opaque
object will retain their lifecycle automatically and can still be
used by registering python callbacks or store in container
and return to the frontend.

* Round of grammar polishment

* [FFI] Support inline module (apache#18271)

This PR adds initial support for load_inline in tvm_ffi

* [FFI] Construct NDArray.strides by default (apache#18272)

This PR updates NDArray.strides to construct strides by default

* [FFI][ABI] Append symbol prefix for ffi exported functions (apache#18273)

Previously we simply take the raw symbol for DSO libraries.
This can cause symbol conflict of functions that take the ffi calling convention
and those that are not.

This PR updates the convention to ask for LLVM and libary module to always
append a prefix __tvm_ffi_ to function symbols, this way we will no longer
have conflict in TVM_FFI_EXPORT_DLL_TYPED macro

* [FFI] Update the interface of `ffi.load_inline` to match torch (apache#18274)

This PR update the interface of ffi.load_inline to match torch.utils.cpp_extensions.load_inline:

- Rename cpp_source to cpp_sources, cuda_source to cuda_sources.
- Unify the cpp_functions and cuda_functions into functions.
- Add build_directory to allow the user to specify the build directory directly.

* [FFI][REFACTOR][ABI] Rename NDArray to Tensor (apache#18275)

This PR Updates the NDArray => Tensor.

Both tensor and ndarray are commonly used terms.

Because the term Tensor is getting more common in the context of ML,
we do the rename to stay more aligned with torch.Tensor and DLTensor.

* [FFI] Add ffi::Tensor.strides() (apache#18276)

* ffi::Tensor strides

* [FFI][REFACTOR] Cleanup tvm_ffi python API and types (apache#18277)

This PR cleans up the python API to make things more consistent
with existing python array api and torch.

Device update
- device_id => index, to be consistent with torch
- device_type => dlpack_device_type() returns int
- added type property same as torch.device

API updates:

- Move the convenient method like cpu() out into tvm runtime to keep device minimal
- tvm_ffi._init_api => tvm_ffi.init_ffi_api
- tvm_ffi.register_func => tvm_ffi.register_global_func

* [FFI] Temp skip load_inline tests nonlinux (apache#18278)

This PR temp skip load_inline tests on nonlinux before we
enhance and improve for other platforms.

* [LLVM][METASCHEDULE] Add RISCV V-extension v1.0 kernels to metaschedule (apache#18243)

- Enables high performance kernels covering majority of usual ML datatype inputs
- It is currently compliant with RVV specs version v1.0 (does not work with older v0.7.1)
- TIR kernels implemented here are using recently added VLA extension support

* [FFI][DOCS] Initial bringup of cpp docs (apache#18279)

This PR brings up initial version of cpp api docs.

* [FFI][Bugfix] Fix bug of `ffi.cpp.load_inline` on Windows (apache#18281)

This PR enables the load_inline on windows platform:

* [FFI][REFACTOR] Cleanup namespace (apache#18280)

* [FFI][REFACTOR] Cleanup namespace

This PR cleansup the namespace to ensure all ffi classes
are accessed through ffi:: namespace.
It will helps to cleanup the ffi package before isolation.

* fix hexagon

* [FFI] Relax default alignment and continguous requirement (apache#18282)

This PR relax default alignment and continguous requirement in dlpack import.
This allows the ffi to be useful in most settings.
We also provide utility for users to check these requirements themselves.

* [Fix][Metal] Fix type for device array in Metal API (apache#18283)

This PR fixes a typo in the previous ffi namespace cleanup.

* [Relax] Add Relax to Python Function Converter (apache#18269)

### Overview
This PR implements a Relax to Python Function Converter that transforms
Relax functions into executable Python functions using PyTorch operations.
This enables seamless conversion between TVM's Relax IR and Python/PyTorch
environments, which provides enhanced debugging capabilities and leveraging
existing PyTorch operator libraries for testing and deployment purposes.

### Key Feature
- **High-level operator mapping**: Maps 60+ Relax operators to
corresponding PyTorch APIs
- **Special operation handling**: Supports `call_tir`, `call_dps_packed`,
and Relax function calls with DLPack integration
- **Symbolic shape support**: Handles symbolic shapes and dynamic tensor
operations

### **Example**
```python
from tvm.relax.relax_to_pyfunc_converter import RelaxToPyFuncConverter

# Convert Relax functions to Python functions
converter = RelaxToPyFuncConverter(ir_module)
converted_ir_mod = converter.convert("my_function")

# Execute converted function with PyTorch tensors
result = converted_ir_mod.pyfuncs['my_function'](input_tensor)
```

* [FFI][REFACTOR] Introduce UnsafeInit and enhance ObjectRef null safety (apache#18284)

This PR enhances the nullptr and general type-safe of ObjectRef types.
Previously ObjectRef relies on constructor from ObjectPtr<Object> for casting
and initialize from nullptr.

We introduce a tag ffi::UnsafeInit, which explicitly states the intent
that the initialization is unsafe and may initialize non-nullable Ref to null.
Such tag should only be used in controlled scenarios.

Now the general RefType(ObjectPtr<Object>) is removed.
We still keep RefType(ObjectPtr<ContainerType>) for nullable objects,
but removes the default definition from non-nullable types, knowing that
user can always explicitly add it to class impl (ensuring null checking).

* [Hotfix] Fix the conflicts about ffi-related updated names (apache#18287)

* Change registration of mock softmax function

* Update check_asf_header.sh

Remove unnecessary blank line in check_asf_header.sh

* Update check_asf_header.sh

* fix

* [FFI][Bugfix] Enable `load_inline` on macos (apache#18285)

This PR fix the bug to enable `tvm_ffi.cpp.load_inline` on macos.
We need to link the `libtvm_ffi.dylib` to the custom module.

* [Metal] Fix MetalModuleCreate (apache#18290)

This PR fixes a type mismatch in MetalModuleCreate when initializing
a MetalModule.  The error does not show up until the recent ObjectRef
null safety.

* [3rdparty] Bump cutlass_fpA_intB_gemm to fix SM90 build (apache#18291)

This PR fixes a SM90 build issue when CUTLASS is enabled.
The issue is because a source file indluced a CUTLASS header file
that has been removed since CUTLASS 4. Simply removing the header
fixes the build issue.

* [FFI][REFACTOR] Streamline Object Declare Macros (apache#18289)

* [Fix] Set DRefObj and CUDAIPCMemoryObj as mutable (apache#18294)

This PR marks `DRefObj` and `CUDAIPCMemoryObj` as a mutable
object classes. The flags are missed during previous macro refactor.

* [FFI][ABI] Introduce generic stream exchange protocol (apache#18295)

This PR adds a __tvm_ffi_env_stream__ protocol for generic
tensors to exchange env stream to tvm ffi.

Also renames TVMFFIEnvSetStream to TVMFFIEnvSetCurrentStream.

* [FFI] Temp skip windows tests (apache#18297)

* [Fix] Add libxml2 dependency to fix Windows CI build failure (apache#18296)

* [FFI] Fix system library symbol lookup (apache#18298)

* [Relax] Add symbolic shape support to BasePyModule for dynamic tensor operations (apache#18288)

This PR adds symbolic shape support to `BasePyModule`, which enables
dynamic tensor operations with runtime shape inference.
This allows users to use Relax's symbolic shape functionality in Python
function calls through BasePyModule, with dimensions automatically
resolved at execution time based on input tensor shapes.

## Usage Example
```python
import tvm
from tvm.script import ir as I, relax as R
from tvm.relax.base_py_module import BasePyModule
import numpy as np

@I.ir_module
class VectorAddModule(BasePyModule):
    @R.function
    def add(x: R.Tensor(("n",), "float32"), 
            y: R.Tensor(("n",), "float32")) -> R.Tensor(("n",), "float32"):
        return R.add(x, y)

module = VectorAddModule(device=tvm.cpu(0), target="llvm")

a = np.array([1.0, 2.0, 3.0], dtype="float32")
b = np.array([4.0, 5.0, 6.0], dtype="float32")
result = module.add(a, b)  # Result: [5.0, 7.0, 9.0]
```

* [CUDA] Support NVTX in CUDA 13 (apache#18300)

This PR adds the support of NVTX for CUDA 13. The change is because
that starting CUDA 13, the nvtx functions are moved to the lirbary
of `libnvtx3interop.so`, and the previous nvToolsExt library no
longer exists.

To ensure compatibility with both CUDA 12 and 13, we add
libnvtx3interop.so to the library lookup list.

* [Python] Fix runtime tensor import (apache#18299)

This PR fixes a few places where the python import of runtime tensor
is incorrect.  The error wasn't revealed in the previous
NDArray->Tensor rename PR since these imports are not at the top
level.

* [FFI][REFACTOR] Refactor python ffi call mechanism for perf (apache#18302)

This PR refactors python ffi call mechanism. Previously the argument setting can
become an as things can be sensitive to the if checking order. This PR refactors
the calling to leverage a C++ based dispatcher where each dispatch functor can be
registered from Cython.

* Clear ext_lib_dll_names for macOS platform (apache#18304)

Removed external library DLL names for macOS.

found during tile-ai/tilelang#799

cc @LeiWang1999

* [Relax] Fix RelaxToPyFuncConverter compatibility and improve fallback handling (apache#18301)

This PR fixes multiple compatibility issues in `RelaxToPyFuncConverter`
caused by recent TVM API changes and improves the robustness of fallback
tensor handling.

* [FFI][ABI][REFACTOR] Enhance DLPack Exchange Speed and Behavior (apache#18306)

This PR enhances DLPack exchange by introducing DLPackPyObjectExporter,
DLPackPyObjectImporter and DLPackTensorAllocator.

These three function pointers will help us to speedup import/export
with DLPack and also streamline the rare(but still useful sometimes)
allocation inside the FFI.

They can help to significantly speedup autodlpack import. They will also
enable us to be able to query the allocator from env and return ffi::Tensor
back to the caller environment(experimental), when a function takes torch.Tensor
as argument, returned Tensor values will be converted to torch.Tensor.

Also renames SetCurrentStream => SetStream to align with styles in CUDA API.

Finally, we add option to select whether we release GIL,
we release gil by default like ctypes, however, for short running functions
it may be helpful to set func.release_gil = False

* [FFI] Update `load_inline` interface (apache#18307)

update load_inline interface

* [FFI][ABI] Refactor the naming of DLPack speed converter (apache#18308)

Update the name to avoid potential confusion

* [FFI][ABI] Better String and Nested Container handling (apache#18311)

[FFI][ABI][REFACTOR] Better String and nested container handling

This PR improves the overall String/Bytes and nested container handling
It also fixes a bug for temp object recycling when temp object.

- Introduce formal API for string/bytes creation
- Updates the tuple/dict conversion to also preserve the torch stream
   - So if a function takes a list of torch.Tensor, torch stream will be setup in context
- Optimizes recursive argument conversion by moving most logic into c++

* [FFI][REFACTOR] Update TVM_FFI_STATIC_INIT_BLOCK to fn style (apache#18312)

This PR updates TVM_FFI_STATIC_INIT_BLOCK to function style.
Now we do the code as follows, which is cleaner in generally
and also helps error reporting to locate the right place.

```
TVM_FFI_STATIC_INIT_BLOCK() {
  RegisterStaffs();
}
```

* [REFACTOR][FFI] Split tvm-ffi into a separate repo (apache#18314)

This PR updates the code so we split tvm-ffi into a separate repo

* [FlashInfer] Update include path and interface (apache#18317)

This PR updates the include path for FlashInfer JIT compilation,
and also updates the plan function interface for attention prefill
computation, to align with recent interface change in
flashinfer-ai/flashinfer#1661.

* [3rdparty] Remove dlpack/libbacktrace from 3rdparty (apache#18318)

[3rdparty] Remove dlpack/libbactrace from 3rdparty

This PR removes the TVM dependency on dlpack and libbacktrace,
as tvm-ffi being separated to https://github.com/apache/tvm-ffi.

* [TVMScript] Support continue and break in tvmscript (apache#17804)

* support continue and break in tvmscript

* fix black format

* fix pylint issue

* Update tests/python/tvmscript/test_tvmscript_syntax_sugar.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* add printer/parser test, fix lint

* Fit to latest ffi update

* Skip i386 numpy-related test

* Introduce AnnotateIrregularLoop before any lowering loop expansions.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* [Relax] Introduce R.call_py_func operator for calling Python functions from Relax IR (apache#18313)

This PR allows calling Python functions directly from Relax IR,
where integration between Relax computations and Python/PyTorch
operations can be supported.

### Usage Example
```python
@I.ir_module
class MyModule(BasePyModule):
    @I.pyfunc
    def pytorch_add(self, x, y):
        return x + y
    
    @R.function
    def compute(x: R.Tensor((5,), "float32"), y: R.Tensor((5,), "float32")) -> R.Tensor((5,), "float32"):
        result = R.call_py_func("pytorch_add", (x, y), out_sinfo=R.Tensor((5,), "float32"))
        return result
```

* [TIR][CUDA] Preserve float precision in codegen with hexfloat output (apache#18320)

Previously, `float` constants in codegen were always emitted in **scientific decimal format**, e.g.:

```cpp
bfloat16_t(3.487723e-05f);
```

This could introduce slight **rounding differences** compared to the actual binary representation, since the constant is printed and then re-parsed in decimal. we now emit the value in **hexadecimal floating-point format** (`std::hexfloat`) to preserve the exact binary value, and additionally include the decimal form as a comment for readability:

```cpp
bfloat16_t(0x1.2492492492492p-15f /*3.487723e-05*/)
```

* [BugFix] Fixing binding for bert (apache#18324)

* Fixing binding for bert

* Fixing names

* [TIR] Add support for conditional expressions in TVMScript (apache#18323)

Add support for conditional expressions in TVMScript

This PR adds support for conditional expressions in TVMScript parser,
which allows developers to use Python-style conditional expressions

```python
@T.prim_func
def func(A: T.buffer((128, 128), "float32")):
    for i, j in T.grid(128, 128):
        A[i, j] = i if i < j else j

@T.prim_func
def expected(A: T.buffer((128, 128), "float32")):
    for i, j in T.grid(128, 128):
        A[i, j] = T.if_then_else(i < j, i, j)
```

* Fixing datatype error for gpt-2 (apache#18328)

* [CMake][Web] Install `web/` directory in cmake for Python package (apache#18327)

This PR updates the CMakeLists to install the web subdirectory
when building Python package, so that people do not need to clone
TVM source code to build web package.

* [Relax][Backend] Implement R.call_py_func operator for calling Python functions from compiled TVM (apache#18326)

This PR implements the `R.call_py_func` operator that allows compiled
TVM Relax modules to call Python functions at runtime. This enables
integration between TVM's compiled code and Python through a
robust VM backend implementation.

#### Simple Usage with BasePyModule
```python
@I.ir_module
class MyModule(BasePyModule):
    @I.pyfunc
    def torch_relu(self, x):
        return torch.relu(x)
    
    @R.function
    def forward(x: R.Tensor((10,), "float32")) -> R.Tensor((10,), "float32"):
        return R.call_py_func("torch_relu", (x,), out_sinfo=R.Tensor((10,), "float32"))
```

#### Direct VM Backend Usage (Manual)
```python
# Manually register Python function with VM backend
register_func = tvm.get_global_func("vm.builtin.register_py_func")
register_func("my_func", my_python_function)

# Use in Relax function (compiled to VM backend)
@R.function
def test(x: R.Tensor((5,), "float32")) -> R.Tensor((5,), "float32"):
    return R.call_py_func("my_func", (x,), out_sinfo=R.Tensor((5,), "float32"))

# Manual cleanup (required for direct VM backend usage)
clear_func = tvm.get_global_func("vm.builtin.clear_py_func_registry")
clear_func()
```

* [flashinfer] Support directing JIT to FlashInfer GroupedGemm kernels (apache#18325)

in tvm/python/tvm/relax/backend/cuda/flashinfer.py added a
`gen_grouped_gemm_module`
in tvm/tests/python/relax/test_group_gemm_flashinfer.py added
tests for different combinations of
- input and output types: ("float8_e4m3fn", "float8_e4m3fn", "bfloat16"),
("float8_e4m3fn", "float8_e4m3fn", "float16"),
- scale granularity of m, n, k: (1, 128, 128),
- scale major mode: "MN", "K"
- mma_sm: 1, 2
- different batch sizes and m_sizes

* [Relax][Frontend][ONNX] Error converting operator Expand: TVMError: broadcast_to expects the input tensor shape is broadcastable to the target shape (apache#18329)

* [Relax] Operator and RoPE support for Llama4 (apache#18336)

Added LLama4 implementation, new rope implementation

* Fix conflict parameter name promote_dtye in FP8ComputeLegalize (apache#18334)

* [FFI][ABI] Bump version ffi to latest (apache#18332)

This PR bumps the version of tvm-ffi to latest, which involves an ABI change.

* [Relax][PyTorch] Support MatrixMultiply op for ExportedProgram importer (apache#18343)

This pr supports `mm.default` for ExportedProgram importer.

Resolves the issue apache#18339.

* [Relax] Update BasePyModule with faster DLPack converter for tensor conversion (apache#18331)

This PR enhances `BasePyModule` by integrating a faster DLPack
converter for efficient tensor conversion between TVM and PyTorch
following apache#18306.

* [TIR] Support sequence comparisons in TVMScript (apache#18341)

Implement proper parsing and evaluation of chained comparison operators
(e.g., `0 < i < 128`) in TVMScript. The sequence comparisons are now
correctly expanded to their logical equivalents (e.g., `(0 < i and i < 128)`).

Changes:
- Updated expression evaluator to handle sequence comparisons correctly
- Added test case to verify sequence comparison functionality

* [FFI][ABI] Bump tvm-ffi version to reflect RC ABI Update (apache#18345)

This PR bumps tvm-ffi version. The latest version contains a change
to the RC ABI that also needs web runtime update.

* [Python] Add library lookup path for tvm installed as a pakcage (apache#18348)

[Python] Add library lookup path when tvm installed as a pakcage

* [FFI][ABI] Bump tvm-ffi to latest (apache#18349)

This PR bumps tvm-ffi to latest. Which introduces ShapeView andminimizes TensorObj ABI.

* [Relax][Frontend][Torch] Fix parsing error when input dimension of unbind is 1 (apache#18351)

* [Relax][Frontend][Torch] Fix parsing error when input dimension of unbind is 1

* reformat code

* [Fix] Update ShapeView use in nccl.cc (apache#18352)

This PR fixes the use of ShapeView in nccl.cc, which was using
`Shape()->Product()`. This has been changed to `Shape().Product()`
with the introduction of ShapeView.

* [Relax][PyTorch] Support lstm op for ExportedProgram importer (apache#18346)

This pr supports `lstm.input` for ExportedProgram importer.

This links to issue apache#18340

* [Relax][ONNX] Support AllClassNMS Operator for ONNX Frontend (apache#18321)

Follow apache#18175 , this PR supports AllClassNMS Operator for ONNX Frontend

* [FFI][ABI] Bump tvm-ffi to latest (apache#18354)

This pr bumps the tvm-ffi module to latest

* [CUDA] Update FlashInfer JIT integration (apache#18353)

Following recent JIT refactor in FlashInfer that uses TVM FFI as
the JIT interface, this PR updates the JIT integration of FlashInfer
in TVM.

Major changes:
* we leverage FlashInfer's `JitSpec.build_and_load` to compile all
the JIT-generated source files, and remove the compilation logic
in TVM.
* for efficient tensor buffer management and efficient pointer
calculation, we enforced all `byte_offset` fields of auxiliary tensors
in KV cache to be zeros. The byte offset is now directly applied to
the data pointers.
* we also add a new parameter to FlashInfer JIT that controls whether
returning a linked shared library, or a list of compiled object paths.
For unit tests, returning a shared library is convenient and preferred,
while for cases such as MLC model compilation, object files are needed
to serialize the compiled model.

* rebase && update tvm-ffi

* fix(kvcache): restore GPU support lost during rebase

---------

Co-authored-by: Tianqi Chen <tqchen@users.noreply.github.com>
Co-authored-by: Phoslight <136557413+Phoslight@users.noreply.github.com>
Co-authored-by: Ruihang Lai <ruihangl@cs.cmu.edu>
Co-authored-by: wrongtest <wrongtest0@gmail.com>
Co-authored-by: wrongtest <wrongtest@gmail.com>
Co-authored-by: chenxinli <39092231+cccxinli@users.noreply.github.com>
Co-authored-by: Park Woorak <grf0503@gmail.com>
Co-authored-by: ysh329 <ysh329@users.noreply.github.com>
Co-authored-by: Yong Wu <yongcale@gmail.com>
Co-authored-by: Chenfan <jcf94@outlook.com>
Co-authored-by: Balint Cristian <cristian.balint@gmail.com>
Co-authored-by: zyl_keep_moving <dream20151224@163.com>
Co-authored-by: Wei Wang <w10493wang@163.com>
Co-authored-by: Bohan Hou <bohanhou@andrew.cmu.edu>
Co-authored-by: Marcel Dudek <43888122+MarcelDudek@users.noreply.github.com>
Co-authored-by: Shushi Hong <820958424@qq.com>
Co-authored-by: Johnny <johnnync13@gmail.com>
Co-authored-by: Henry Hsieh <72457607+Henryshsieh@users.noreply.github.com>
Co-authored-by: Yaoyao Ding <dingyaoyao.cs@gmail.com>
Co-authored-by: Yaxing Cai <caiyaxing666@gmail.com>
Co-authored-by: Yichen Yan <oraluben@outlook.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Lei Wang <34334180+LeiWang1999@users.noreply.github.com>
Co-authored-by: Thais Camacho <thaiscamachoo@gmail.com>
Co-authored-by: Siyuan Feng <25500082+Hzfengsy@users.noreply.github.com>
Co-authored-by: Anrui(Henry) Liu <98249030+neurusL@users.noreply.github.com>
Co-authored-by: Neo Chien <cchung100m@cs.ccu.edu.tw>
Co-authored-by: Pranav Venkatram <56809863+giterator@users.noreply.github.com>
Co-authored-by: Qingchao Shen <qingchaoshen@outlook.com>
Co-authored-by: Masahiro Hiramori <Hiramori.Masahiro@ct.MitsubishiElectric.co.jp>
Co-authored-by: Ruxiao Yin <78540598+eaten-cake@users.noreply.github.com>
Co-authored-by: cwx <you@example.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants