<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>41318</bug_id>
          
          <creation_ts>2010-06-28 16:45:27 -0700</creation_ts>
          <short_desc>GC should reclaim garbage even when new objects are not being allocated rapidly</short_desc>
          <delta_ts>2010-08-03 13:34:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nathan Lawrence">nlawrence</reporter>
          <assigned_to name="Nathan Lawrence">nlawrence</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>nlawrence</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>243977</commentid>
    <comment_count>0</comment_count>
      <attachid>59959</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-06-28 16:45:27 -0700</bug_when>
    <thetext>Created attachment 59959
Patch

It would be nice to have the GC run a few seconds after the last allocation.  We can approximate this by having a timer start running at the beginning of allocation, and resetting the timer whenever the heap is reset.  If there are a number of allocations happening, then the timer will always get reset before it times out and the GC is called.  If there are very few allocations happening then the timer fire and we will collect the garbage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243978</commentid>
    <comment_count>1</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-28 16:48:00 -0700</bug_when>
    <thetext>Attachment 59959 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/bindings/js/WebCoreJSClientData.h:87:  Missing space after ,  [whitespace/comma] [3]
JavaScriptCore/runtime/Collector.cpp:982:  Declaration has space between type name and * in Heap *heap  [whitespace/declaration] [3]
JavaScriptCore/runtime/Collector.cpp:1001:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
JavaScriptCore/runtime/Collector.h:85:  Missing space after ,  [whitespace/comma] [3]
JavaScriptCore/runtime/Collector.h:161:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 5 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243980</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-28 16:59:09 -0700</bug_when>
    <thetext>Attachment 59959 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3287968</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243985</commentid>
    <comment_count>3</comment_count>
      <attachid>59962</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-06-28 17:14:32 -0700</bug_when>
    <thetext>Created attachment 59962
Patch

Should fix build problems on non macintosh platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244003</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-28 17:37:38 -0700</bug_when>
    <thetext>Attachment 59959 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3311983</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244006</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-06-28 17:42:27 -0700</bug_when>
    <thetext>Putting CF code directly in to Heap is pretty nasty.  I also do not think there is any  guarantee that the main thread is spinning a CF runloop from JavaScriptCore’s point of view.  I also don’t think OS(DARWIN) is the right condition to use since Darwin proper doesn’t include CoreFoundation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244010</commentid>
    <comment_count>6</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-28 17:46:57 -0700</bug_when>
    <thetext>Attachment 59962 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3323917</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244014</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-28 17:52:00 -0700</bug_when>
    <thetext>Attachment 59959 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3291940</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244046</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-28 19:27:48 -0700</bug_when>
    <thetext>Attachment 59962 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3304939</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244049</commentid>
    <comment_count>9</comment_count>
      <attachid>59978</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-06-28 19:53:31 -0700</bug_when>
    <thetext>Created attachment 59978
Patch

This should fix compilation issues on platforms that do not have ENABLE(JSC_MULTIPLE_THREADS).  It also changes OS(DARWIN) to PLATFORM(CF) to check for core foundation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244066</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-28 21:16:38 -0700</bug_when>
    <thetext>Attachment 59962 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3301990</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244165</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-29 02:12:51 -0700</bug_when>
    <thetext>Attachment 59978 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3283931</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244470</commentid>
    <comment_count>12</comment_count>
      <attachid>60050</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-06-29 14:09:00 -0700</bug_when>
    <thetext>Created attachment 60050
Patch (callback in separate file)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244476</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-29 14:14:08 -0700</bug_when>
    <thetext>Attachment 60050 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/GCActivityCallback.h:29:  #ifndef header guard has wrong style, please use: GCActivityCallback_h  [build/header_guard] [5]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246130</commentid>
    <comment_count>14</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-07-02 15:43:26 -0700</bug_when>
    <thetext>+    runtime/GCActivityCallback.cpp
+    runtime/GCActivityCallbackCF.cpp

Project files should only use one or the other. This also means that you can remove the #if(!CF) from the non-CF file.


+    : m_callback(defaultGCActivityCallback)
+    , m_callbackData(0)

Rename to m_activityCallback*


+        typedef void (*GCCallback)(Heap*, void*);

Move to CGActivityCallback.h, and rename to GCActivityCallback.


+        void setGCCallback(GCCallback, void*);

setActivityCallback


+void defaultGCActivityCallback(Heap* heap, void*)
+{
+    static CFRunLoopTimerRef timer;
+    static CFRunLoopTimerContext ctx;

Not thread safe.

Might invoke timer after heap has been destroyed.

Leaks one timer per heap.

Maybe change this callback to a callback object with a proper constructor and destructor and a virtual operator(), or add a createData and destroyData callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250357</commentid>
    <comment_count>15</comment_count>
      <attachid>61335</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-07-13 00:13:20 -0700</bug_when>
    <thetext>Created attachment 61335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250359</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-13 00:19:34 -0700</bug_when>
    <thetext>Attachment 61335 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/Collector.h:137:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250360</commentid>
    <comment_count>17</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-07-13 00:29:09 -0700</bug_when>
    <thetext>Attachment 61335 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3539002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250403</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-13 02:50:10 -0700</bug_when>
    <thetext>Attachment 61335 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3486273</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250489</commentid>
    <comment_count>19</comment_count>
      <attachid>61373</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-07-13 07:28:01 -0700</bug_when>
    <thetext>Created attachment 61373
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250498</commentid>
    <comment_count>20</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-07-13 07:42:44 -0700</bug_when>
    <thetext>Attachment 61373 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3484283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250517</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-13 08:20:45 -0700</bug_when>
    <thetext>Attachment 61373 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3484289</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250533</commentid>
    <comment_count>22</comment_count>
      <attachid>61382</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-07-13 08:50:29 -0700</bug_when>
    <thetext>Created attachment 61382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250712</commentid>
    <comment_count>23</comment_count>
      <attachid>61411</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-07-13 13:36:51 -0700</bug_when>
    <thetext>Created attachment 61411
Patch (with smart pointers)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252744</commentid>
    <comment_count>24</comment_count>
      <attachid>61411</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-07-16 16:09:15 -0700</bug_when>
    <thetext>Comment on attachment 61411
Patch (with smart pointers)

I think the callback invocation should be inside reset(), so that the timer is active even after events like collections due to extra cost.

It would be better not to rely on calling out to WebCore just to achieve a cross-platform timer implementation. I would nix the WebCore code, and, as you suggested, add a FIXME explaining how other platforms can get the right behavior by porting the WebCore timer code to WTF.

The canonical name we use for platform-speicifc data structure is Platform*. In this case, DefaultGCActivityCallbackPlatformData.

Please post SunSpider results for this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254996</commentid>
    <comment_count>25</comment_count>
      <attachid>62343</attachid>
    <who name="Nathan Lawrence">nlawrence</who>
    <bug_when>2010-07-22 14:40:58 -0700</bug_when>
    <thetext>Created attachment 62343
Patch

moved where the callback gets called from, verified no regression on sunspider, + other changes suggested by Geoff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257137</commentid>
    <comment_count>26</comment_count>
      <attachid>62343</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-28 07:23:02 -0700</bug_when>
    <thetext>Comment on attachment 62343
Patch

Rejecting patch 62343 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Oliver Hunt&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
ts to file JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj.rej
patching file JavaScriptCore/jit/JITPropertyAccess.cpp
patching file JavaScriptCore/runtime/Collector.cpp
patching file JavaScriptCore/runtime/Collector.h
patching file JavaScriptCore/runtime/GCActivityCallback.cpp
patching file JavaScriptCore/runtime/GCActivityCallback.h
patching file JavaScriptCore/runtime/GCActivityCallbackCF.cpp
patching file JavaScriptCore/runtime/JSLock.cpp
patching file JavaScriptCore/runtime/JSLock.h

Full output: http://queues.webkit.org/results/3618235</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259666</commentid>
    <comment_count>27</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-08-03 13:34:36 -0700</bug_when>
    <thetext>Committed revision 64585.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59959</attachid>
            <date>2010-06-28 16:45:27 -0700</date>
            <delta_ts>2010-06-28 17:14:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>gc-timer.patch</filename>
            <type>text/plain</type>
            <size>10029</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMDE4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDYtMjggIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBjYWxsYmFjayBpbiBKYXZhU2NyaXB0Q29y
ZSB0aGF0IGdldHMgdHJpZ2dlcmVkIGFmdGVyIGFuCisgICAgICAgIGFsbG9jYXRpb24gY2F1c2Vz
IHRoZSBoZWFwIHRvIHJlc2V0LiAgVGhpcyBpcyB1c2VmdWwgZm9yIGFkZGluZyBhCisgICAgICAg
IHRpbWVyIHRoYXQgd2lsbCB0cmlnZ2VyIGdhcmJhZ2UgY29sbGVjdGlvbiBhZnRlciB0aGUgImxh
c3QiCisgICAgICAgIGFsbG9jYXRpb24uCisKKyAgICAgICAgQWxzbyBuZWVkZWQgd2FzIHRvIGFk
ZCBsb2NrIGFuZCB1bmxvY2sgbWV0aG9kcyB0byBKU0xvY2sgdGhhdCBuZWVkZWQKKyAgICAgICAg
b25seSBhIEpTR2xvYmFsRGF0YSBvYmplY3QgdmVyc3VzIGFuIEV4ZWNTdGF0ZSBvYmplY3QuCisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogcnVudGltZS9Db2xsZWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpkZWZhdWx0Q2FsbGJhY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmg6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEdDQ2FsbGJh
Y2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNMb2Nr
Ojpsb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjp1bmxvY2spOgorICAgICAgICAqIHJ1bnRp
bWUvSlNMb2NrLmg6CisKIDIwMTAtMDYtMjggIEx1Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFy
Y2hpQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gNjIwMTUpCisrKyBKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw3ICsyMzAs
OSBAQCBfX1pOM0pTQzZKU0xvY2sxMkRyb3BBbGxMb2Nrc0MxRU5TXzE0SlNMCiBfX1pOM0pTQzZK
U0xvY2sxMkRyb3BBbGxMb2Nrc0MxRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M2SlNMb2NrMTJE
cm9wQWxsTG9ja3NEMUV2CiBfX1pOM0pTQzZKU0xvY2s0bG9ja0VOU18xNEpTTG9ja0JlaGF2aW9y
RQorX19aTjNKU0M2SlNMb2NrNGxvY2tFUE5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0M2SlNM
b2NrNnVubG9ja0VOU18xNEpTTG9ja0JlaGF2aW9yRQorX19aTjNKU0M2SlNMb2NrNnVubG9ja0VQ
TlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzZKU0xvY2s5bG9ja0NvdW50RXYKIF9fWk4zSlND
NkpTTG9ja0MxRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M2UGFyc2VyNXBhcnNlRVBOU18xMkpT
R2xvYmFsRGF0YUVQaVBOU183VVN0cmluZ0UKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxl
Y3Rvci5jcHAJKHJldmlzaW9uIDYyMDE1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAKICNpZiBPUyhEQVJX
SU4pCiAKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1
ZGUgPG1hY2gvbWFjaF9pbml0Lmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3BvcnQuaD4KICNpbmNs
dWRlIDxtYWNoL3Rhc2suaD4KQEAgLTEzMCw3ICsxMzEsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
SGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCi0gICAgOiBtX21hcmtMaXN0U2V0
KDApCisgICAgOiBtX2NhbGxiYWNrKGRlZmF1bHRDYWxsYmFjaykKKyAgICAsIG1fY2FsbGJhY2tE
YXRhKDApCisgICAgLCBtX21hcmtMaXN0U2V0KDApCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9U
SFJFQURTKQogICAgICwgbV9yZWdpc3RlcmVkVGhyZWFkcygwKQogICAgICwgbV9jdXJyZW50VGhy
ZWFkUmVnaXN0cmFyKDApCkBAIC0xNDMsNiArMTQ2LDcgQEAgSGVhcDo6SGVhcChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpCiAgICAgQVNTRVJUKGdsb2JhbERhdGEpOwogICAgIG1lbXNldCgmbV9o
ZWFwLCAwLCBzaXplb2YoQ29sbGVjdG9ySGVhcCkpOwogICAgIGFsbG9jYXRlQmxvY2soKTsKKyAg
ICBtX2NhbGxiYWNrKHRoaXMsIG1fY2FsbGJhY2tEYXRhKTsKIH0KIAogSGVhcDo6fkhlYXAoKQpA
QCAtNDAyLDYgKzQwNiw3IEBAIGFsbG9jYXRlOgogICAgIC8vIFNsb3cgY2FzZTogcmVhY2hlZCB0
aGUgZW5kIG9mIHRoZSBoZWFwLiBNYXJrIGxpdmUgb2JqZWN0cyBhbmQgc3RhcnQgb3Zlci4KIAog
ICAgIHJlc2V0KCk7CisgICAgbV9jYWxsYmFjayh0aGlzLCBtX2NhbGxiYWNrRGF0YSk7CiAgICAg
Z290byBhbGxvY2F0ZTsKIH0KIApAQCAtOTcyLDYgKzk3NywzMiBAQCB2b2lkIEhlYXA6Om1hcmtT
dGFja09iamVjdHNDb25zZXJ2YXRpdmVsCiAjZW5kaWYKIH0KIAorc3RhdGljIHZvaWQgZGVmYXVs
dENhbGxiYWNrVHJpZ2dlcihDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCAqaW5mbykKK3sKKyAgICBI
ZWFwICpoZWFwID0gc3RhdGljX2Nhc3Q8SGVhcCo+KGluZm8pOworICAgIEpTTG9jazo6bG9jayho
ZWFwLT5nbG9iYWxEYXRhKCkpOworICAgIGhlYXAtPmNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAg
SlNMb2NrOjp1bmxvY2soaGVhcC0+Z2xvYmFsRGF0YSgpKTsKK30KKwordm9pZCBIZWFwOjpkZWZh
dWx0Q2FsbGJhY2soSGVhcCogaGVhcCwgdm9pZCopCit7CisjaWYgT1MoREFSV0lOKQorICAgIHN0
YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiB0aW1lcjsKKyAgICBzdGF0aWMgQ0ZSdW5Mb29wVGltZXJD
b250ZXh0IGN0eDsKKworICAgIENGVGltZUludGVydmFsIGRlY2FkZSA9IDYwICogNjAgKiAyNCAq
IDM2NSAqIDEwOworCisgICAgaWYgKCF0aW1lcikgeworICAgICAgICBjdHguaW5mbyA9IGhlYXA7
CisgICAgICAgIHRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUoMCwgQ0ZBYnNvbHV0ZVRpbWVH
ZXRDdXJyZW50KCkgKyAyLCBkZWNhZGUsIDAsIDAsIGRlZmF1bHRDYWxsYmFja1RyaWdnZXIsICZj
dHgpOworICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHRp
bWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIENG
UnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHRpbWVyLCBDRkFic29sdXRlVGltZUdldEN1cnJl
bnQoKSArIDIpOworI2VuZGlmCit9CisKIHZvaWQgSGVhcDo6cHJvdGVjdChKU1ZhbHVlIGspCiB7
CiAgICAgQVNTRVJUKGspOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCShyZXZp
c2lvbiA2MjAxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSGVh
cCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBjbGFzcyBUaHJl
YWQ7CisgICAgICAgIHR5cGVkZWYgdm9pZCAoKkdDQ2FsbGJhY2spKEhlYXAqLCB2b2lkKik7CiAK
ICAgICAgICAgdm9pZCBkZXN0cm95KCk7CiAKQEAgLTgxLDYgKzgyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgYm9vbCBpc0J1c3koKTsgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9y
IGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICAgICAgICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFn
ZSgpOworICAgICAgICB2b2lkIHNldEdDQ2FsbGJhY2soR0NDYWxsYmFjayx2b2lkKik7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5FeHRyYUNvc3QgPSAyNTY7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgbWF4RXh0cmFDb3N0ID0gMTAyNCAqIDEwMjQ7CkBAIC0xNTYsOCAr
MTU4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIG1hcmtPdGhlclRocmVhZENv
bnNlcnZhdGl2ZWx5KE1hcmtTdGFjayYsIFRocmVhZCopOwogICAgICAgICB2b2lkIG1hcmtTdGFj
a09iamVjdHNDb25zZXJ2YXRpdmVseShNYXJrU3RhY2smKTsKIAorICAgICAgICBzdGF0aWMgdm9p
ZCBkZWZhdWx0Q2FsbGJhY2soSGVhcCosdm9pZCopOworCiAgICAgICAgIHR5cGVkZWYgSGFzaENv
dW50ZWRTZXQ8SlNDZWxsKj4gUHJvdGVjdENvdW50U2V0OwogCisgICAgICAgIEdDQ2FsbGJhY2sg
bV9jYWxsYmFjazsKKyAgICAgICAgdm9pZCogbV9jYWxsYmFja0RhdGE7CisKICAgICAgICAgQ29s
bGVjdG9ySGVhcCBtX2hlYXA7CiAKICAgICAgICAgUHJvdGVjdENvdW50U2V0IG1fcHJvdGVjdGVk
VmFsdWVzOwpAQCAtMjkxLDYgKzI5OCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJlY29yZEV4dHJhQ29zdChjb3N0KTsKICAgICB9CiAgICAgCisgICAgaW5saW5lIHZvaWQgSGVh
cDo6c2V0R0NDYWxsYmFjayhIZWFwOjpHQ0NhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFj
a0RhdGEpCisgICAgeworICAgICAgbV9jYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgbV9jYWxs
YmFja0RhdGEgPSBjYWxsYmFja0RhdGE7CisgICAgfQorCiAgICAgaW5saW5lIHZvaWQqIEhlYXA6
OmFsbG9jYXRlTnVtYmVyKHNpemVfdCBzKQogICAgIHsKICAgICAgICAgaWYgKHZvaWQqIHJlc3Vs
dCA9IG1faGVhcC5uZXh0TnVtYmVyKSB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3Bw
CShyZXZpc2lvbiA2MjAxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxNiBAQCB2b2lkIEpTTG9jazo6dW5sb2NrKEV4
ZWNTdGF0ZSogZXhlYykKICAgICB1bmxvY2soZXhlYy0+Z2xvYmFsRGF0YSgpLmlzU2hhcmVkSW5z
dGFuY2UoKSA/IExvY2tGb3JSZWFsIDogU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIH0KIAordm9p
ZCBKU0xvY2s6OmxvY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIGxvY2soZ2xv
YmFsRGF0YS0+aXNTaGFyZWRJbnN0YW5jZSgpID8gTG9ja0ZvclJlYWwgOiBTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOworfQorCit2b2lkIEpTTG9jazo6dW5sb2NrKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkKK3sKKyAgICB1bmxvY2soZ2xvYmFsRGF0YS0+aXNTaGFyZWRJbnN0YW5jZSgpID8gTG9j
a0ZvclJlYWwgOiBTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworfQorCiBib29sIEpTTG9jazo6Y3Vy
cmVudFRocmVhZElzSG9sZGluZ0xvY2soKQogewogICAgIHB0aHJlYWRfb25jZSgmY3JlYXRlSlNM
b2NrQ291bnRPbmNlLCBjcmVhdGVKU0xvY2tDb3VudCk7CkBAIC0yMzcsNiArMjQ3LDE0IEBAIHZv
aWQgSlNMb2NrOjp1bmxvY2soRXhlY1N0YXRlKikKIHsKIH0KIAordm9pZCBKU0xvY2s6OmxvY2so
R2xvYmFsRGF0YSopCit7Cit9CisKK3ZvaWQgSlNMb2NrOjp1bmxvY2soR2xvYmFsRGF0YSopCit7
Cit9CisKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKikKIHsK
IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNpb24gNjIwMTUpCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8vIGFzc2VydGlvbnMgd29ya2luZywgc28gdGhhdCBj
bGllbnRzIHRoYXQgdXNlIHRoZSBzaGFyZWQgY29udGV4dCBkb24ndCBicmVhay4KIAogICAgIGNs
YXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAKICAgICBlbnVtIEpTTG9j
a0JlaGF2aW9yIHsgU2lsZW5jZUFzc2VydGlvbnNPbmx5LCBMb2NrRm9yUmVhbCB9OwogCkBAIC04
MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2so
SlNMb2NrQmVoYXZpb3IpOwogICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSopOwog
ICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2soRXhlY1N0YXRlKik7CisgICAgICAgIHN0YXRpYyB2
b2lkIGxvY2soSlNHbG9iYWxEYXRhKik7CisgICAgICAgIHN0YXRpYyB2b2lkIHVubG9jayhKU0ds
b2JhbERhdGEqKTsKIAogICAgICAgICBzdGF0aWMgaW50cHRyX3QgbG9ja0NvdW50KCk7CiAgICAg
ICAgIHN0YXRpYyBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CkluZGV4OiBXZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
NjIwMTgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDEwLTA2LTI4ICBOYXRoYW4gTGF3cmVuY2UgIDxubGF3cmVuY2VAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdCBy
ZWdpc3RlcnMgYSB0aW1lciB0byB0aGUgSlNDIEdDIHRoYXQgdHJpZ2dlcnMgYSBmdWxsIGdhcmJh
Z2UKKyAgICAgICAgY29sbGVjdGlvbiBhZnRlciAyIHNlY29uZHMgb2YgaW5hY3Rpdml0eS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6OldlYkNvcmVKU0NsaWVudERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZUpTQ2xpZW50RGF0YTo6ZmlyZUdDVGltZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZUpTQ2xpZW50RGF0YTo6cmVzZXRHQ1RpbWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6OnJlc2V0R0NUaW1lckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OmluaXROb3JtYWxXb3JsZENsaWVudERhdGEpOgorCiAyMDEwLTA2LTI4ICBL
ZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
aW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuaAkocmV2aXNpb24gNjIwMTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogCiAjaW5jbHVk
ZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgi
CisjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbERhdGEuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pT
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMzUsNiArMzcsMTQgQEAgY2xhc3Mg
V2ViQ29yZUpTQ2xpZW50RGF0YSA6IHB1YmxpYyBKU0M6OgogICAgIGZyaWVuZCB2b2lkIGluaXRO
b3JtYWxXb3JsZENsaWVudERhdGEoSlNDOjpKU0dsb2JhbERhdGEqKTsKIAogcHVibGljOgorICAg
IFdlYkNvcmVKU0NsaWVudERhdGEoSlNDOjpKU0dsb2JhbERhdGEgKmdsb2JhbERhdGEpCisgICAg
ICAgIDogbV9HQ1RpbWVyKHRoaXMsICZXZWJDb3JlSlNDbGllbnREYXRhOjpmaXJlR0NUaW1lcikK
KyAgICAgICAgLCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKKyAgICB7CisgICAgICAgIG1fZ2xv
YmFsRGF0YS0+aGVhcC5zZXRHQ0NhbGxiYWNrKFdlYkNvcmVKU0NsaWVudERhdGE6OnJlc2V0R0NU
aW1lckNhbGxiYWNrLCBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcykpOworICAgICAgICBtX2dsb2Jh
bERhdGEtPmNsaWVudERhdGEgPSB0aGlzOyAvLyB+SlNHbG9iYWxEYXRhIGRlbGV0ZXMgdGhpcyBw
b2ludGVyLgorICAgIH0KKwogICAgIHZpcnR1YWwgfldlYkNvcmVKU0NsaWVudERhdGEoKQogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fd29ybGRTZXQuY29udGFpbnMobV9ub3JtYWxXb3JsZC5nZXQo
KSkpOwpAQCAtNjIsMTcgKzcyLDM1IEBAIHB1YmxpYzoKICAgICAgICAgbV93b3JsZFNldC5yZW1v
dmUod29ybGQpOwogICAgIH0KIAorICAgIHZvaWQgZmlyZUdDVGltZXIoVGltZXI8V2ViQ29yZUpT
Q2xpZW50RGF0YT4qKQorICAgIHsKKyAgICAgICAgSlNDOjpKU0xvY2s6OmxvY2sobV9nbG9iYWxE
YXRhKTsKKyAgICAgICAgbV9nbG9iYWxEYXRhLT5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7Cisg
ICAgICAgIEpTQzo6SlNMb2NrOjp1bmxvY2sobV9nbG9iYWxEYXRhKTsKKyAgICB9CisKKyAgICB2
b2lkIHJlc2V0R0NUaW1lcigpCisgICAgeworICAgICAgICBtX0dDVGltZXIuc3RhcnRPbmVTaG90
KDIpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJlc2V0R0NUaW1lckNhbGxiYWNrKEpTQzo6
SGVhcCosdm9pZCogc2VsZikKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmVKU0Ns
aWVudERhdGEqPihzZWxmKS0+cmVzZXRHQ1RpbWVyKCk7CisgICAgfQorCiAgICAgRE9NT2JqZWN0
SGFzaFRhYmxlTWFwIGhhc2hUYWJsZU1hcDsKIAogcHJpdmF0ZToKICAgICBIYXNoU2V0PERPTVdy
YXBwZXJXb3JsZCo+IG1fd29ybGRTZXQ7CiAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV9u
b3JtYWxXb3JsZDsKKyAgICBUaW1lcjxXZWJDb3JlSlNDbGllbnREYXRhPiBtX0dDVGltZXI7Cisg
ICAgSlNDOjpKU0dsb2JhbERhdGEgKm1fZ2xvYmFsRGF0YTsKIH07CiAKIGlubGluZSB2b2lkIGlu
aXROb3JtYWxXb3JsZENsaWVudERhdGEoSlNDOjpKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7
Ci0gICAgV2ViQ29yZUpTQ2xpZW50RGF0YSogd2ViQ29yZUpTQ2xpZW50RGF0YSA9IG5ldyBXZWJD
b3JlSlNDbGllbnREYXRhOwotICAgIGdsb2JhbERhdGEtPmNsaWVudERhdGEgPSB3ZWJDb3JlSlND
bGllbnREYXRhOyAvLyB+SlNHbG9iYWxEYXRhIGRlbGV0ZXMgdGhpcyBwb2ludGVyLgorICAgIFdl
YkNvcmVKU0NsaWVudERhdGEqIHdlYkNvcmVKU0NsaWVudERhdGEgPSBuZXcgV2ViQ29yZUpTQ2xp
ZW50RGF0YShnbG9iYWxEYXRhKTsKICAgICB3ZWJDb3JlSlNDbGllbnREYXRhLT5tX25vcm1hbFdv
cmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoZ2xvYmFsRGF0YSwgdHJ1ZSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59962</attachid>
            <date>2010-06-28 17:14:32 -0700</date>
            <delta_ts>2010-06-28 19:53:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>gc-timer.patch</filename>
            <type>text/plain</type>
            <size>10087</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMDE4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDYtMjggIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBjYWxsYmFjayBpbiBKYXZhU2NyaXB0Q29y
ZSB0aGF0IGdldHMgdHJpZ2dlcmVkIGFmdGVyIGFuCisgICAgICAgIGFsbG9jYXRpb24gY2F1c2Vz
IHRoZSBoZWFwIHRvIHJlc2V0LiAgVGhpcyBpcyB1c2VmdWwgZm9yIGFkZGluZyBhCisgICAgICAg
IHRpbWVyIHRoYXQgd2lsbCB0cmlnZ2VyIGdhcmJhZ2UgY29sbGVjdGlvbiBhZnRlciB0aGUgImxh
c3QiCisgICAgICAgIGFsbG9jYXRpb24uCisKKyAgICAgICAgQWxzbyBuZWVkZWQgd2FzIHRvIGFk
ZCBsb2NrIGFuZCB1bmxvY2sgbWV0aG9kcyB0byBKU0xvY2sgdGhhdCBuZWVkZWQKKyAgICAgICAg
b25seSBhIEpTR2xvYmFsRGF0YSBvYmplY3QgdmVyc3VzIGFuIEV4ZWNTdGF0ZSBvYmplY3QuCisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogcnVudGltZS9Db2xsZWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpkZWZhdWx0Q2FsbGJhY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmg6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEdDQ2FsbGJh
Y2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNMb2Nr
Ojpsb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjp1bmxvY2spOgorICAgICAgICAqIHJ1bnRp
bWUvSlNMb2NrLmg6CisKIDIwMTAtMDYtMjggIEx1Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFy
Y2hpQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gNjIwMTUpCisrKyBKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw3ICsyMzAs
OSBAQCBfX1pOM0pTQzZKU0xvY2sxMkRyb3BBbGxMb2Nrc0MxRU5TXzE0SlNMCiBfX1pOM0pTQzZK
U0xvY2sxMkRyb3BBbGxMb2Nrc0MxRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M2SlNMb2NrMTJE
cm9wQWxsTG9ja3NEMUV2CiBfX1pOM0pTQzZKU0xvY2s0bG9ja0VOU18xNEpTTG9ja0JlaGF2aW9y
RQorX19aTjNKU0M2SlNMb2NrNGxvY2tFUE5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0M2SlNM
b2NrNnVubG9ja0VOU18xNEpTTG9ja0JlaGF2aW9yRQorX19aTjNKU0M2SlNMb2NrNnVubG9ja0VQ
TlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzZKU0xvY2s5bG9ja0NvdW50RXYKIF9fWk4zSlND
NkpTTG9ja0MxRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M2UGFyc2VyNXBhcnNlRVBOU18xMkpT
R2xvYmFsRGF0YUVQaVBOU183VVN0cmluZ0UKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxl
Y3Rvci5jcHAJKHJldmlzaW9uIDYyMDE1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAKICNpZiBPUyhEQVJX
SU4pCiAKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1
ZGUgPG1hY2gvbWFjaF9pbml0Lmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3BvcnQuaD4KICNpbmNs
dWRlIDxtYWNoL3Rhc2suaD4KQEAgLTEzMCw3ICsxMzEsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
SGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCi0gICAgOiBtX21hcmtMaXN0U2V0
KDApCisgICAgOiBtX2NhbGxiYWNrKGRlZmF1bHRDYWxsYmFjaykKKyAgICAsIG1fY2FsbGJhY2tE
YXRhKDApCisgICAgLCBtX21hcmtMaXN0U2V0KDApCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9U
SFJFQURTKQogICAgICwgbV9yZWdpc3RlcmVkVGhyZWFkcygwKQogICAgICwgbV9jdXJyZW50VGhy
ZWFkUmVnaXN0cmFyKDApCkBAIC0xNDMsNiArMTQ2LDcgQEAgSGVhcDo6SGVhcChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpCiAgICAgQVNTRVJUKGdsb2JhbERhdGEpOwogICAgIG1lbXNldCgmbV9o
ZWFwLCAwLCBzaXplb2YoQ29sbGVjdG9ySGVhcCkpOwogICAgIGFsbG9jYXRlQmxvY2soKTsKKyAg
ICBtX2NhbGxiYWNrKHRoaXMsIG1fY2FsbGJhY2tEYXRhKTsKIH0KIAogSGVhcDo6fkhlYXAoKQpA
QCAtNDAyLDYgKzQwNiw3IEBAIGFsbG9jYXRlOgogICAgIC8vIFNsb3cgY2FzZTogcmVhY2hlZCB0
aGUgZW5kIG9mIHRoZSBoZWFwLiBNYXJrIGxpdmUgb2JqZWN0cyBhbmQgc3RhcnQgb3Zlci4KIAog
ICAgIHJlc2V0KCk7CisgICAgbV9jYWxsYmFjayh0aGlzLCBtX2NhbGxiYWNrRGF0YSk7CiAgICAg
Z290byBhbGxvY2F0ZTsKIH0KIApAQCAtOTcyLDYgKzk3NywzNSBAQCB2b2lkIEhlYXA6Om1hcmtT
dGFja09iamVjdHNDb25zZXJ2YXRpdmVsCiAjZW5kaWYKIH0KIAorI2lmIE9TKERBUldJTikKK3N0
YXRpYyB2b2lkIGRlZmF1bHRDYWxsYmFja1RyaWdnZXIoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQg
KmluZm8pCit7CisgICAgSGVhcCogaGVhcCA9IHN0YXRpY19jYXN0PEhlYXAqPihpbmZvKTsKKyAg
ICBKU0xvY2s6OmxvY2soaGVhcC0+Z2xvYmFsRGF0YSgpKTsKKyAgICBoZWFwLT5jb2xsZWN0QWxs
R2FyYmFnZSgpOworICAgIEpTTG9jazo6dW5sb2NrKGhlYXAtPmdsb2JhbERhdGEoKSk7Cit9CisK
K3ZvaWQgSGVhcDo6ZGVmYXVsdENhbGxiYWNrKEhlYXAqIGhlYXAsIHZvaWQqKQoreworICAgIHN0
YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiB0aW1lcjsKKyAgICBzdGF0aWMgQ0ZSdW5Mb29wVGltZXJD
b250ZXh0IGN0eDsKKworICAgIENGVGltZUludGVydmFsIGRlY2FkZSA9IDYwICogNjAgKiAyNCAq
IDM2NSAqIDEwOworCisgICAgaWYgKCF0aW1lcikgeworICAgICAgICBjdHguaW5mbyA9IGhlYXA7
CisgICAgICAgIHRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUoMCwgQ0ZBYnNvbHV0ZVRpbWVH
ZXRDdXJyZW50KCkgKyAyLCBkZWNhZGUsIDAsIDAsIGRlZmF1bHRDYWxsYmFja1RyaWdnZXIsICZj
dHgpOworICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHRp
bWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIH0gZWxzZQorICAgICAgICBDRlJ1bkxv
b3BUaW1lclNldE5leHRGaXJlRGF0ZSh0aW1lciwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkg
KyAyKTsKK30KKyNlbHNlCit2b2lkIEhlYXA6OmRlZmF1bHRDYWxsYmFjayhIZWFwKiBoZWFwLCB2
b2lkKikKK3sKK30KKyNlbmRpZgorCiB2b2lkIEhlYXA6OnByb3RlY3QoSlNWYWx1ZSBrKQogewog
ICAgIEFTU0VSVChrKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAkocmV2aXNp
b24gNjIwMTUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Myw2ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEhlYXAg
OiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgY2xhc3MgVGhyZWFk
OworICAgICAgICB0eXBlZGVmIHZvaWQgKCpHQ0NhbGxiYWNrKShIZWFwKiwgdm9pZCopOwogCiAg
ICAgICAgIHZvaWQgZGVzdHJveSgpOwogCkBAIC04MSw2ICs4Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIGJvb2wgaXNCdXN5KCk7IC8vIHRydWUgaWYgYW4gYWxsb2NhdGlvbiBvciBj
b2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCiAgICAgICAgIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2Uo
KTsKKyAgICAgICAgdm9pZCBzZXRHQ0NhbGxiYWNrKEdDQ2FsbGJhY2ssIHZvaWQqKTsKIAogICAg
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsKICAgICAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAyNDsKQEAgLTE1Niw4ICsx
NTgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbWFya090aGVyVGhyZWFkQ29u
c2VydmF0aXZlbHkoTWFya1N0YWNrJiwgVGhyZWFkKik7CiAgICAgICAgIHZvaWQgbWFya1N0YWNr
T2JqZWN0c0NvbnNlcnZhdGl2ZWx5KE1hcmtTdGFjayYpOwogCisgICAgICAgIHN0YXRpYyB2b2lk
IGRlZmF1bHRDYWxsYmFjayhIZWFwKiwgdm9pZCopOworCiAgICAgICAgIHR5cGVkZWYgSGFzaENv
dW50ZWRTZXQ8SlNDZWxsKj4gUHJvdGVjdENvdW50U2V0OwogCisgICAgICAgIEdDQ2FsbGJhY2sg
bV9jYWxsYmFjazsKKyAgICAgICAgdm9pZCogbV9jYWxsYmFja0RhdGE7CisKICAgICAgICAgQ29s
bGVjdG9ySGVhcCBtX2hlYXA7CiAKICAgICAgICAgUHJvdGVjdENvdW50U2V0IG1fcHJvdGVjdGVk
VmFsdWVzOwpAQCAtMjkxLDYgKzI5OCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJlY29yZEV4dHJhQ29zdChjb3N0KTsKICAgICB9CiAgICAgCisgICAgaW5saW5lIHZvaWQgSGVh
cDo6c2V0R0NDYWxsYmFjayhIZWFwOjpHQ0NhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFj
a0RhdGEpCisgICAgeworICAgICAgbV9jYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgbV9jYWxs
YmFja0RhdGEgPSBjYWxsYmFja0RhdGE7CisgICAgfQorCiAgICAgaW5saW5lIHZvaWQqIEhlYXA6
OmFsbG9jYXRlTnVtYmVyKHNpemVfdCBzKQogICAgIHsKICAgICAgICAgaWYgKHZvaWQqIHJlc3Vs
dCA9IG1faGVhcC5uZXh0TnVtYmVyKSB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3Bw
CShyZXZpc2lvbiA2MjAxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxNiBAQCB2b2lkIEpTTG9jazo6dW5sb2NrKEV4
ZWNTdGF0ZSogZXhlYykKICAgICB1bmxvY2soZXhlYy0+Z2xvYmFsRGF0YSgpLmlzU2hhcmVkSW5z
dGFuY2UoKSA/IExvY2tGb3JSZWFsIDogU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIH0KIAordm9p
ZCBKU0xvY2s6OmxvY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIGxvY2soZ2xv
YmFsRGF0YS0+aXNTaGFyZWRJbnN0YW5jZSgpID8gTG9ja0ZvclJlYWwgOiBTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOworfQorCit2b2lkIEpTTG9jazo6dW5sb2NrKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkKK3sKKyAgICB1bmxvY2soZ2xvYmFsRGF0YS0+aXNTaGFyZWRJbnN0YW5jZSgpID8gTG9j
a0ZvclJlYWwgOiBTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworfQorCiBib29sIEpTTG9jazo6Y3Vy
cmVudFRocmVhZElzSG9sZGluZ0xvY2soKQogewogICAgIHB0aHJlYWRfb25jZSgmY3JlYXRlSlNM
b2NrQ291bnRPbmNlLCBjcmVhdGVKU0xvY2tDb3VudCk7CkBAIC0yMzcsNiArMjQ3LDE0IEBAIHZv
aWQgSlNMb2NrOjp1bmxvY2soRXhlY1N0YXRlKikKIHsKIH0KIAordm9pZCBKU0xvY2s6OmxvY2so
R2xvYmFsRGF0YSopCit7Cit9CisKK3ZvaWQgSlNMb2NrOjp1bmxvY2soR2xvYmFsRGF0YSopCit7
Cit9CisKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKikKIHsK
IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNpb24gNjIwMTUpCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8vIGFzc2VydGlvbnMgd29ya2luZywgc28gdGhhdCBj
bGllbnRzIHRoYXQgdXNlIHRoZSBzaGFyZWQgY29udGV4dCBkb24ndCBicmVhay4KIAogICAgIGNs
YXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAKICAgICBlbnVtIEpTTG9j
a0JlaGF2aW9yIHsgU2lsZW5jZUFzc2VydGlvbnNPbmx5LCBMb2NrRm9yUmVhbCB9OwogCkBAIC04
MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2so
SlNMb2NrQmVoYXZpb3IpOwogICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSopOwog
ICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2soRXhlY1N0YXRlKik7CisgICAgICAgIHN0YXRpYyB2
b2lkIGxvY2soSlNHbG9iYWxEYXRhKik7CisgICAgICAgIHN0YXRpYyB2b2lkIHVubG9jayhKU0ds
b2JhbERhdGEqKTsKIAogICAgICAgICBzdGF0aWMgaW50cHRyX3QgbG9ja0NvdW50KCk7CiAgICAg
ICAgIHN0YXRpYyBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CkluZGV4OiBXZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
NjIwMTgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDEwLTA2LTI4ICBOYXRoYW4gTGF3cmVuY2UgIDxubGF3cmVuY2VAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdCBy
ZWdpc3RlcnMgYSB0aW1lciB0byB0aGUgSlNDIEdDIHRoYXQgdHJpZ2dlcnMgYSBmdWxsIGdhcmJh
Z2UKKyAgICAgICAgY29sbGVjdGlvbiBhZnRlciAyIHNlY29uZHMgb2YgaW5hY3Rpdml0eS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6OldlYkNvcmVKU0NsaWVudERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZUpTQ2xpZW50RGF0YTo6ZmlyZUdDVGltZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZUpTQ2xpZW50RGF0YTo6cmVzZXRHQ1RpbWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6OnJlc2V0R0NUaW1lckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OmluaXROb3JtYWxXb3JsZENsaWVudERhdGEpOgorCiAyMDEwLTA2LTI4ICBL
ZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
aW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuaAkocmV2aXNpb24gNjIwMTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogCiAjaW5jbHVk
ZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgi
CisjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbERhdGEuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pT
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMzUsNiArMzcsMTQgQEAgY2xhc3Mg
V2ViQ29yZUpTQ2xpZW50RGF0YSA6IHB1YmxpYyBKU0M6OgogICAgIGZyaWVuZCB2b2lkIGluaXRO
b3JtYWxXb3JsZENsaWVudERhdGEoSlNDOjpKU0dsb2JhbERhdGEqKTsKIAogcHVibGljOgorICAg
IFdlYkNvcmVKU0NsaWVudERhdGEoSlNDOjpKU0dsb2JhbERhdGEgKmdsb2JhbERhdGEpCisgICAg
ICAgIDogbV9HQ1RpbWVyKHRoaXMsICZXZWJDb3JlSlNDbGllbnREYXRhOjpmaXJlR0NUaW1lcikK
KyAgICAgICAgLCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKKyAgICB7CisgICAgICAgIG1fZ2xv
YmFsRGF0YS0+aGVhcC5zZXRHQ0NhbGxiYWNrKFdlYkNvcmVKU0NsaWVudERhdGE6OnJlc2V0R0NU
aW1lckNhbGxiYWNrLCBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcykpOworICAgICAgICBtX2dsb2Jh
bERhdGEtPmNsaWVudERhdGEgPSB0aGlzOyAvLyB+SlNHbG9iYWxEYXRhIGRlbGV0ZXMgdGhpcyBw
b2ludGVyLgorICAgIH0KKwogICAgIHZpcnR1YWwgfldlYkNvcmVKU0NsaWVudERhdGEoKQogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fd29ybGRTZXQuY29udGFpbnMobV9ub3JtYWxXb3JsZC5nZXQo
KSkpOwpAQCAtNjIsMTcgKzcyLDM1IEBAIHB1YmxpYzoKICAgICAgICAgbV93b3JsZFNldC5yZW1v
dmUod29ybGQpOwogICAgIH0KIAorICAgIHZvaWQgZmlyZUdDVGltZXIoVGltZXI8V2ViQ29yZUpT
Q2xpZW50RGF0YT4qKQorICAgIHsKKyAgICAgICAgSlNDOjpKU0xvY2s6OmxvY2sobV9nbG9iYWxE
YXRhKTsKKyAgICAgICAgbV9nbG9iYWxEYXRhLT5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7Cisg
ICAgICAgIEpTQzo6SlNMb2NrOjp1bmxvY2sobV9nbG9iYWxEYXRhKTsKKyAgICB9CisKKyAgICB2
b2lkIHJlc2V0R0NUaW1lcigpCisgICAgeworICAgICAgICBtX0dDVGltZXIuc3RhcnRPbmVTaG90
KDIpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJlc2V0R0NUaW1lckNhbGxiYWNrKEpTQzo6
SGVhcCosIHZvaWQqIHNlbGYpCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlSlND
bGllbnREYXRhKj4oc2VsZiktPnJlc2V0R0NUaW1lcigpOworICAgIH0KKwogICAgIERPTU9iamVj
dEhhc2hUYWJsZU1hcCBoYXNoVGFibGVNYXA7CiAKIHByaXZhdGU6CiAgICAgSGFzaFNldDxET01X
cmFwcGVyV29ybGQqPiBtX3dvcmxkU2V0OwogICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1f
bm9ybWFsV29ybGQ7CisgICAgVGltZXI8V2ViQ29yZUpTQ2xpZW50RGF0YT4gbV9HQ1RpbWVyOwor
ICAgIEpTQzo6SlNHbG9iYWxEYXRhICptX2dsb2JhbERhdGE7CiB9OwogCiBpbmxpbmUgdm9pZCBp
bml0Tm9ybWFsV29ybGRDbGllbnREYXRhKEpTQzo6SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQog
ewotICAgIFdlYkNvcmVKU0NsaWVudERhdGEqIHdlYkNvcmVKU0NsaWVudERhdGEgPSBuZXcgV2Vi
Q29yZUpTQ2xpZW50RGF0YTsKLSAgICBnbG9iYWxEYXRhLT5jbGllbnREYXRhID0gd2ViQ29yZUpT
Q2xpZW50RGF0YTsgLy8gfkpTR2xvYmFsRGF0YSBkZWxldGVzIHRoaXMgcG9pbnRlci4KKyAgICBX
ZWJDb3JlSlNDbGllbnREYXRhKiB3ZWJDb3JlSlNDbGllbnREYXRhID0gbmV3IFdlYkNvcmVKU0Ns
aWVudERhdGEoZ2xvYmFsRGF0YSk7CiAgICAgd2ViQ29yZUpTQ2xpZW50RGF0YS0+bV9ub3JtYWxX
b3JsZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKGdsb2JhbERhdGEsIHRydWUpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59978</attachid>
            <date>2010-06-28 19:53:31 -0700</date>
            <delta_ts>2010-06-29 14:09:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>gc-timer.patch</filename>
            <type>text/plain</type>
            <size>10090</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMDE4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDYtMjggIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBjYWxsYmFjayBpbiBKYXZhU2NyaXB0Q29y
ZSB0aGF0IGdldHMgdHJpZ2dlcmVkIGFmdGVyIGFuCisgICAgICAgIGFsbG9jYXRpb24gY2F1c2Vz
IHRoZSBoZWFwIHRvIHJlc2V0LiAgVGhpcyBpcyB1c2VmdWwgZm9yIGFkZGluZyBhCisgICAgICAg
IHRpbWVyIHRoYXQgd2lsbCB0cmlnZ2VyIGdhcmJhZ2UgY29sbGVjdGlvbiBhZnRlciB0aGUgImxh
c3QiCisgICAgICAgIGFsbG9jYXRpb24uCisKKyAgICAgICAgQWxzbyBuZWVkZWQgd2FzIHRvIGFk
ZCBsb2NrIGFuZCB1bmxvY2sgbWV0aG9kcyB0byBKU0xvY2sgdGhhdCBuZWVkZWQKKyAgICAgICAg
b25seSBhIEpTR2xvYmFsRGF0YSBvYmplY3QgdmVyc3VzIGFuIEV4ZWNTdGF0ZSBvYmplY3QuCisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogcnVudGltZS9Db2xsZWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpkZWZhdWx0Q2FsbGJhY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmg6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEdDQ2FsbGJh
Y2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNMb2Nr
Ojpsb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjp1bmxvY2spOgorICAgICAgICAqIHJ1bnRp
bWUvSlNMb2NrLmg6CisKIDIwMTAtMDYtMjggIEx1Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFy
Y2hpQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gNjIwMTUpCisrKyBKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw3ICsyMzAs
OSBAQCBfX1pOM0pTQzZKU0xvY2sxMkRyb3BBbGxMb2Nrc0MxRU5TXzE0SlNMCiBfX1pOM0pTQzZK
U0xvY2sxMkRyb3BBbGxMb2Nrc0MxRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M2SlNMb2NrMTJE
cm9wQWxsTG9ja3NEMUV2CiBfX1pOM0pTQzZKU0xvY2s0bG9ja0VOU18xNEpTTG9ja0JlaGF2aW9y
RQorX19aTjNKU0M2SlNMb2NrNGxvY2tFUE5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0M2SlNM
b2NrNnVubG9ja0VOU18xNEpTTG9ja0JlaGF2aW9yRQorX19aTjNKU0M2SlNMb2NrNnVubG9ja0VQ
TlNfMTJKU0dsb2JhbERhdGFFCiBfX1pOM0pTQzZKU0xvY2s5bG9ja0NvdW50RXYKIF9fWk4zSlND
NkpTTG9ja0MxRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0M2UGFyc2VyNXBhcnNlRVBOU18xMkpT
R2xvYmFsRGF0YUVQaVBOU183VVN0cmluZ0UKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxl
Y3Rvci5jcHAJKHJldmlzaW9uIDYyMDE1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxMCBAQAogCiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9u
Lmg+CisjZW5kaWYKKwogI2RlZmluZSBDT0xMRUNUX09OX0VWRVJZX0FMTE9DQVRJT04gMAogCiB1
c2luZyBzdGQ6Om1heDsKQEAgLTEzMCw3ICsxMzQsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogSGVh
cDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCi0gICAgOiBtX21hcmtMaXN0U2V0KDAp
CisgICAgOiBtX2NhbGxiYWNrKGRlZmF1bHRDYWxsYmFjaykKKyAgICAsIG1fY2FsbGJhY2tEYXRh
KDApCisgICAgLCBtX21hcmtMaXN0U2V0KDApCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJF
QURTKQogICAgICwgbV9yZWdpc3RlcmVkVGhyZWFkcygwKQogICAgICwgbV9jdXJyZW50VGhyZWFk
UmVnaXN0cmFyKDApCkBAIC0xNDMsNiArMTQ5LDcgQEAgSGVhcDo6SGVhcChKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCiAgICAgQVNTRVJUKGdsb2JhbERhdGEpOwogICAgIG1lbXNldCgmbV9oZWFw
LCAwLCBzaXplb2YoQ29sbGVjdG9ySGVhcCkpOwogICAgIGFsbG9jYXRlQmxvY2soKTsKKyAgICBt
X2NhbGxiYWNrKHRoaXMsIG1fY2FsbGJhY2tEYXRhKTsKIH0KIAogSGVhcDo6fkhlYXAoKQpAQCAt
NDAyLDYgKzQwOSw3IEBAIGFsbG9jYXRlOgogICAgIC8vIFNsb3cgY2FzZTogcmVhY2hlZCB0aGUg
ZW5kIG9mIHRoZSBoZWFwLiBNYXJrIGxpdmUgb2JqZWN0cyBhbmQgc3RhcnQgb3Zlci4KIAogICAg
IHJlc2V0KCk7CisgICAgbV9jYWxsYmFjayh0aGlzLCBtX2NhbGxiYWNrRGF0YSk7CiAgICAgZ290
byBhbGxvY2F0ZTsKIH0KIApAQCAtOTcyLDYgKzk4MCwzNSBAQCB2b2lkIEhlYXA6Om1hcmtTdGFj
a09iamVjdHNDb25zZXJ2YXRpdmVsCiAjZW5kaWYKIH0KIAorI2lmIFBMQVRGT1JNKENGKQorc3Rh
dGljIHZvaWQgZGVmYXVsdENhbGxiYWNrVHJpZ2dlcihDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCAq
aW5mbykKK3sKKyAgICBIZWFwKiBoZWFwID0gc3RhdGljX2Nhc3Q8SGVhcCo+KGluZm8pOworICAg
IEpTTG9jazo6bG9jayhoZWFwLT5nbG9iYWxEYXRhKCkpOworICAgIGhlYXAtPmNvbGxlY3RBbGxH
YXJiYWdlKCk7CisgICAgSlNMb2NrOjp1bmxvY2soaGVhcC0+Z2xvYmFsRGF0YSgpKTsKK30KKwor
dm9pZCBIZWFwOjpkZWZhdWx0Q2FsbGJhY2soSGVhcCogaGVhcCwgdm9pZCopCit7CisgICAgc3Rh
dGljIENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyOworICAgIHN0YXRpYyBDRlJ1bkxvb3BUaW1lckNv
bnRleHQgY3R4OworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgZGVjYWRlID0gNjAgKiA2MCAqIDI0ICog
MzY1ICogMTA7CisKKyAgICBpZiAoIXRpbWVyKSB7CisgICAgICAgIGN0eC5pbmZvID0gaGVhcDsK
KyAgICAgICAgdGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBDRkFic29sdXRlVGltZUdl
dEN1cnJlbnQoKSArIDIsIGRlY2FkZSwgMCwgMCwgZGVmYXVsdENhbGxiYWNrVHJpZ2dlciwgJmN0
eCk7CisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgdGlt
ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgfSBlbHNlCisgICAgICAgIENGUnVuTG9v
cFRpbWVyU2V0TmV4dEZpcmVEYXRlKHRpbWVyLCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSAr
IDIpOworfQorI2Vsc2UKK3ZvaWQgSGVhcDo6ZGVmYXVsdENhbGxiYWNrKEhlYXAqIGhlYXAsIHZv
aWQqKQoreworfQorI2VuZGlmCisKIHZvaWQgSGVhcDo6cHJvdGVjdChKU1ZhbHVlIGspCiB7CiAg
ICAgQVNTRVJUKGspOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCShyZXZpc2lv
biA2MjAxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTczLDYgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSGVhcCA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBjbGFzcyBUaHJlYWQ7
CisgICAgICAgIHR5cGVkZWYgdm9pZCAoKkdDQ2FsbGJhY2spKEhlYXAqLCB2b2lkKik7CiAKICAg
ICAgICAgdm9pZCBkZXN0cm95KCk7CiAKQEAgLTgxLDYgKzgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgYm9vbCBpc0J1c3koKTsgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNv
bGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICAgICAgICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgp
OworICAgICAgICB2b2lkIHNldEdDQ2FsbGJhY2soR0NDYWxsYmFjaywgdm9pZCopOwogCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29zdCA9IDEwMjQgKiAxMDI0OwpAQCAtMTU2LDggKzE1
OCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXJrT3RoZXJUaHJlYWRDb25z
ZXJ2YXRpdmVseShNYXJrU3RhY2smLCBUaHJlYWQqKTsKICAgICAgICAgdm9pZCBtYXJrU3RhY2tP
YmplY3RzQ29uc2VydmF0aXZlbHkoTWFya1N0YWNrJik7CiAKKyAgICAgICAgc3RhdGljIHZvaWQg
ZGVmYXVsdENhbGxiYWNrKEhlYXAqLCB2b2lkKik7CisKICAgICAgICAgdHlwZWRlZiBIYXNoQ291
bnRlZFNldDxKU0NlbGwqPiBQcm90ZWN0Q291bnRTZXQ7CiAKKyAgICAgICAgR0NDYWxsYmFjayBt
X2NhbGxiYWNrOworICAgICAgICB2b2lkKiBtX2NhbGxiYWNrRGF0YTsKKwogICAgICAgICBDb2xs
ZWN0b3JIZWFwIG1faGVhcDsKIAogICAgICAgICBQcm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRW
YWx1ZXM7CkBAIC0yOTEsNiArMjk4LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmVjb3JkRXh0cmFDb3N0KGNvc3QpOwogICAgIH0KICAgICAKKyAgICBpbmxpbmUgdm9pZCBIZWFw
OjpzZXRHQ0NhbGxiYWNrKEhlYXA6OkdDQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNr
RGF0YSkKKyAgICB7CisgICAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICBtX2NhbGxi
YWNrRGF0YSA9IGNhbGxiYWNrRGF0YTsKKyAgICB9CisKICAgICBpbmxpbmUgdm9pZCogSGVhcDo6
YWxsb2NhdGVOdW1iZXIoc2l6ZV90IHMpCiAgICAgewogICAgICAgICBpZiAodm9pZCogcmVzdWx0
ID0gbV9oZWFwLm5leHROdW1iZXIpIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJ
KHJldmlzaW9uIDYyMDE1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDE2IEBAIHZvaWQgSlNMb2NrOjp1bmxvY2soRXhl
Y1N0YXRlKiBleGVjKQogICAgIHVubG9jayhleGVjLT5nbG9iYWxEYXRhKCkuaXNTaGFyZWRJbnN0
YW5jZSgpID8gTG9ja0ZvclJlYWwgOiBTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogfQogCit2b2lk
IEpTTG9jazo6bG9jayhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgbG9jayhnbG9i
YWxEYXRhLT5pc1NoYXJlZEluc3RhbmNlKCkgPyBMb2NrRm9yUmVhbCA6IFNpbGVuY2VBc3NlcnRp
b25zT25seSk7Cit9CisKK3ZvaWQgSlNMb2NrOjp1bmxvY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhKQoreworICAgIHVubG9jayhnbG9iYWxEYXRhLT5pc1NoYXJlZEluc3RhbmNlKCkgPyBMb2Nr
Rm9yUmVhbCA6IFNpbGVuY2VBc3NlcnRpb25zT25seSk7Cit9CisKIGJvb2wgSlNMb2NrOjpjdXJy
ZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpCiB7CiAgICAgcHRocmVhZF9vbmNlKCZjcmVhdGVKU0xv
Y2tDb3VudE9uY2UsIGNyZWF0ZUpTTG9ja0NvdW50KTsKQEAgLTIzNyw2ICsyNDcsMTQgQEAgdm9p
ZCBKU0xvY2s6OnVubG9jayhFeGVjU3RhdGUqKQogewogfQogCit2b2lkIEpTTG9jazo6bG9jayhK
U0dsb2JhbERhdGEqKQoreworfQorCit2b2lkIEpTTG9jazo6dW5sb2NrKEpTR2xvYmFsRGF0YSop
Cit7Cit9CisKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKikK
IHsKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNpb24gNjIwMTUpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8vIGFzc2VydGlvbnMgd29ya2luZywgc28gdGhh
dCBjbGllbnRzIHRoYXQgdXNlIHRoZSBzaGFyZWQgY29udGV4dCBkb24ndCBicmVhay4KIAogICAg
IGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAKICAgICBlbnVtIEpT
TG9ja0JlaGF2aW9yIHsgU2lsZW5jZUFzc2VydGlvbnNPbmx5LCBMb2NrRm9yUmVhbCB9OwogCkBA
IC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB1bmxv
Y2soSlNMb2NrQmVoYXZpb3IpOwogICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSop
OwogICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2soRXhlY1N0YXRlKik7CisgICAgICAgIHN0YXRp
YyB2b2lkIGxvY2soSlNHbG9iYWxEYXRhKik7CisgICAgICAgIHN0YXRpYyB2b2lkIHVubG9jayhK
U0dsb2JhbERhdGEqKTsKIAogICAgICAgICBzdGF0aWMgaW50cHRyX3QgbG9ja0NvdW50KCk7CiAg
ICAgICAgIHN0YXRpYyBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CkluZGV4OiBX
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gNjIwMTgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE3IEBACisyMDEwLTA2LTI4ICBOYXRoYW4gTGF3cmVuY2UgIDxubGF3cmVuY2VAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktp
dCByZWdpc3RlcnMgYSB0aW1lciB0byB0aGUgSlNDIEdDIHRoYXQgdHJpZ2dlcnMgYSBmdWxsIGdh
cmJhZ2UKKyAgICAgICAgY29sbGVjdGlvbiBhZnRlciAyIHNlY29uZHMgb2YgaW5hY3Rpdml0eS4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6OldlYkNvcmVKU0NsaWVudERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViQ29yZUpTQ2xpZW50RGF0YTo6ZmlyZUdDVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZUpTQ2xpZW50RGF0YTo6cmVzZXRHQ1RpbWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6OnJlc2V0R0NUaW1lckNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OmluaXROb3JtYWxXb3JsZENsaWVudERhdGEpOgorCiAyMDEwLTA2LTI4
ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0Ns
aWVudERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0Ns
aWVudERhdGEuaAkocmV2aXNpb24gNjIwMTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVKU0NsaWVudERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogCiAjaW5j
bHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRE9NT2JqZWN0SGFzaFRhYmxlTWFw
LmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbERhdGEuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMzUsNiArMzcsMTQgQEAgY2xh
c3MgV2ViQ29yZUpTQ2xpZW50RGF0YSA6IHB1YmxpYyBKU0M6OgogICAgIGZyaWVuZCB2b2lkIGlu
aXROb3JtYWxXb3JsZENsaWVudERhdGEoSlNDOjpKU0dsb2JhbERhdGEqKTsKIAogcHVibGljOgor
ICAgIFdlYkNvcmVKU0NsaWVudERhdGEoSlNDOjpKU0dsb2JhbERhdGEgKmdsb2JhbERhdGEpCisg
ICAgICAgIDogbV9HQ1RpbWVyKHRoaXMsICZXZWJDb3JlSlNDbGllbnREYXRhOjpmaXJlR0NUaW1l
cikKKyAgICAgICAgLCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKKyAgICB7CisgICAgICAgIG1f
Z2xvYmFsRGF0YS0+aGVhcC5zZXRHQ0NhbGxiYWNrKFdlYkNvcmVKU0NsaWVudERhdGE6OnJlc2V0
R0NUaW1lckNhbGxiYWNrLCBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcykpOworICAgICAgICBtX2ds
b2JhbERhdGEtPmNsaWVudERhdGEgPSB0aGlzOyAvLyB+SlNHbG9iYWxEYXRhIGRlbGV0ZXMgdGhp
cyBwb2ludGVyLgorICAgIH0KKwogICAgIHZpcnR1YWwgfldlYkNvcmVKU0NsaWVudERhdGEoKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fd29ybGRTZXQuY29udGFpbnMobV9ub3JtYWxXb3JsZC5n
ZXQoKSkpOwpAQCAtNjIsMTcgKzcyLDM1IEBAIHB1YmxpYzoKICAgICAgICAgbV93b3JsZFNldC5y
ZW1vdmUod29ybGQpOwogICAgIH0KIAorICAgIHZvaWQgZmlyZUdDVGltZXIoVGltZXI8V2ViQ29y
ZUpTQ2xpZW50RGF0YT4qKQorICAgIHsKKyAgICAgICAgSlNDOjpKU0xvY2s6OmxvY2sobV9nbG9i
YWxEYXRhKTsKKyAgICAgICAgbV9nbG9iYWxEYXRhLT5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7
CisgICAgICAgIEpTQzo6SlNMb2NrOjp1bmxvY2sobV9nbG9iYWxEYXRhKTsKKyAgICB9CisKKyAg
ICB2b2lkIHJlc2V0R0NUaW1lcigpCisgICAgeworICAgICAgICBtX0dDVGltZXIuc3RhcnRPbmVT
aG90KDIpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJlc2V0R0NUaW1lckNhbGxiYWNrKEpT
Qzo6SGVhcCosIHZvaWQqIHNlbGYpCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3Jl
SlNDbGllbnREYXRhKj4oc2VsZiktPnJlc2V0R0NUaW1lcigpOworICAgIH0KKwogICAgIERPTU9i
amVjdEhhc2hUYWJsZU1hcCBoYXNoVGFibGVNYXA7CiAKIHByaXZhdGU6CiAgICAgSGFzaFNldDxE
T01XcmFwcGVyV29ybGQqPiBtX3dvcmxkU2V0OwogICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+
IG1fbm9ybWFsV29ybGQ7CisgICAgVGltZXI8V2ViQ29yZUpTQ2xpZW50RGF0YT4gbV9HQ1RpbWVy
OworICAgIEpTQzo6SlNHbG9iYWxEYXRhICptX2dsb2JhbERhdGE7CiB9OwogCiBpbmxpbmUgdm9p
ZCBpbml0Tm9ybWFsV29ybGRDbGllbnREYXRhKEpTQzo6SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KQogewotICAgIFdlYkNvcmVKU0NsaWVudERhdGEqIHdlYkNvcmVKU0NsaWVudERhdGEgPSBuZXcg
V2ViQ29yZUpTQ2xpZW50RGF0YTsKLSAgICBnbG9iYWxEYXRhLT5jbGllbnREYXRhID0gd2ViQ29y
ZUpTQ2xpZW50RGF0YTsgLy8gfkpTR2xvYmFsRGF0YSBkZWxldGVzIHRoaXMgcG9pbnRlci4KKyAg
ICBXZWJDb3JlSlNDbGllbnREYXRhKiB3ZWJDb3JlSlNDbGllbnREYXRhID0gbmV3IFdlYkNvcmVK
U0NsaWVudERhdGEoZ2xvYmFsRGF0YSk7CiAgICAgd2ViQ29yZUpTQ2xpZW50RGF0YS0+bV9ub3Jt
YWxXb3JsZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKGdsb2JhbERhdGEsIHRydWUpOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60050</attachid>
            <date>2010-06-29 14:09:00 -0700</date>
            <delta_ts>2010-07-13 00:13:20 -0700</delta_ts>
            <desc>Patch (callback in separate file)</desc>
            <filename>gc-timer.patch</filename>
            <type>text/plain</type>
            <size>19545</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA2MjEzMikKKysrIEphdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDggQEAgU0VU
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0V4ZWN1dGFibGUuY3BwCiAgICAg
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwCisgICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCisgICAgcnVudGlt
ZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAK
ICAgICBydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0lkZW50aWZp
ZXIuY3BwCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNjIxMzIpCisrKyBKYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSw5
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5oIFwKKwlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAor
CUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmhcCisJSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgXAogCUphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0
ZXJTZXR0ZXIuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24u
Y3BwIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDYyMTMyKQor
KysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzAsNyArMjMwLDkgQEAgX19aTjNKU0M2SlNMb2NrMTJEcm9wQWxsTG9ja3NDMUVOU18xNEpTTAog
X19aTjNKU0M2SlNMb2NrMTJEcm9wQWxsTG9ja3NDMUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlND
NkpTTG9jazEyRHJvcEFsbExvY2tzRDFFdgogX19aTjNKU0M2SlNMb2NrNGxvY2tFTlNfMTRKU0xv
Y2tCZWhhdmlvckUKK19fWk4zSlNDNkpTTG9jazRsb2NrRVBOU18xMkpTR2xvYmFsRGF0YUUKIF9f
Wk4zSlNDNkpTTG9jazZ1bmxvY2tFTlNfMTRKU0xvY2tCZWhhdmlvckUKK19fWk4zSlNDNkpTTG9j
azZ1bmxvY2tFUE5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0M2SlNMb2NrOWxvY2tDb3VudEV2
CiBfX1pOM0pTQzZKU0xvY2tDMUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDNlBhcnNlcjVwYXJz
ZUVQTlNfMTJKU0dsb2JhbERhdGFFUGlQTlNfN1VTdHJpbmdFCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmd5cGkJKHJldmlzaW9uIDYyMTMyKQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjE2LDYgKzIxNiw5IEBACiAgICAgICAg
ICAgICAncnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgnLAogICAgICAgICAgICAgJ3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwJywKICAgICAgICAgICAgICdydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmgnLAorICAgICAgICAgICAgJ3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNw
cCcsCisgICAgICAgICAgICAncnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaCcsCisgICAgICAg
ICAgICAncnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAnLAogICAgICAgICAgICAgJ3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9HZXR0ZXJTZXR0
ZXIuaCcsCiAgICAgICAgICAgICAncnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3BwJywKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDYyMTMyKQorKysgSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQy
LDggQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAgICAgcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5jcHAgXAorICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCisgICAgcnVu
dGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgXAogICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVy
LmNwcCBcCiAgICAgcnVudGltZS9HbG9iYWxFdmFsRnVuY3Rpb24uY3BwIFwKICAgICBydW50aW1l
L0lkZW50aWZpZXIuY3BwIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gNjIxMzIpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC03MDksNiArNzA5LDE4IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcR0NBY3Rpdml0eUNhbGxi
YWNrLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXHJ1bnRpbWVcR0NBY3Rpdml0eUNhbGxiYWNrLmgiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEdDQWN0aXZp
dHlDYWxsYmFja0NGLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmNwcCINCiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDYyMTMyKQorKysgSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNTA1LDYgKzUwNSw5IEBACiAJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAv
KiBKdW1wVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi87IH07CiAJ
CUJDRkQ4QzkzMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAv
KiBKdW1wVGFibGUuaCAqLzsgfTsKIAkJQzBBMjcyNjMwRTUwQTA2MzAwRTk2RTE1IC8qIE5vdEZv
dW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEEy
NzIzRjBFNTA5RjFFMDBFOTZFMTUgLyogTm90Rm91bmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlERDM4NTVCMDExREE5MTVEMDBDNzM4REEgLyog
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEREMzg1NUE2MTFEQTkxNUQwMEM3MzhEQSAvKiBHQ0FjdGl2aXR5Q2FsbGJh
Y2suY3BwICovOyB9OworCQlERDM4NTVCMTExREE5MTVEMDBDNzM4REEgLyogR0NBY3Rpdml0eUNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
RDM4NTVBNzExREE5MTVEMDBDNzM4REEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IH07CisJ
CUREMzg1NUIyMTFEQTkxNUQwMEM3MzhEQSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDM4NTVBODExREE5
MTVEMDBDNzM4REEgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwICovOyB9OwogCQlFMTI0QThG
NzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1MEU1NTU3NzUwMDMwOTFGMSAvKiBP
cGFxdWVKU1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUxMjRBOEY4MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI0QThGNjBF
NTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovOyB9OwogCQlFMTc4NjM2RDBE
OUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTc4NjM2QzBEOUJFRUMzMDBENzRFNzUg
LyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi87IH07CkBAIC0xMDQ0LDYgKzEwNDcsOSBAQAog
CQlDMEEyNzIzRjBFNTA5RjFFMDBFOTZFMTUgLyogTm90Rm91bmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTm90Rm91bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDIxMjAyMjgwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlQ29udmVyc2lvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyMTIwMjI5MEFENDMxMEMwMEVENzlCNiAvKiBEYXRl
Q29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUNvbnZl
cnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREQzODU1QTYxMURBOTE1RDAw
QzczOERBIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlERDM4NTVBNzExREE5MTVEMDBDNzM4REEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERDM4NTVBODExREE5MTVEMDBDNzM4REEg
LyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTFENTE3NTBCMkU3OThEMDA1NkMxODggLyogU3RyaW5nRXh0cmFzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJp
bmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BhcXVlSlNTdHJpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8q
IE9wYXF1ZUpTU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE9wYXF1ZUpTU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDgs
NiArMTU1NCw5IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlERDM4NTVBNjExREE5
MTVEMDBDNzM4REEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLywKKwkJCQlERDM4NTVBNzEx
REE5MTVEMDBDNzM4REEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCisJCQkJREQzODU1QTgx
MURBOTE1RDAwQzczOERBIC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCAqLywKIAkJCQlBMTcx
MkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8sCiAJCQkJQTE3MTJCM0UxMUM3
QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8sCiAJCQkJQTE3MTJCM0ExMUM3QjIxMjAw
N0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLywKQEAgLTIxODMsNiArMjE5Miw3IEBACiAJCQkJ
QTc4NEEyNjExMUQxNjYyMjAwNTc3NkFDIC8qIEFTVEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3ODRBMjYzMTFEMTY2MjIwMDU3NzZBQyAvKiBKU1BhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTc4NEEyNjQxMUQxNjYyMjAwNTc3NkFDIC8qIFN5bnRheENoZWNrZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUREMzg1NUIxMTFEQTkxNUQwMEM3MzhEQSAvKiBHQ0FjdGl2aXR5Q2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjYyMyw2ICsyNjMzLDggQEAKIAkJCQlCQzAxRDRGMTEx
QThGMUZGMDBBNTRCMkEgLyogSlNab21iaWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE3MTJC
M0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3ODRBMjYyMTFEMTY2MjIwMDU3NzZBQyAvKiBKU1BhcnNlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlERDM4NTVCMDExREE5MTVEMDBDNzM4REEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUREMzg1NUIyMTFEQTkxNUQwMEM3MzhEQSAvKiBHQ0FjdGl2aXR5
Q2FsbGJhY2tDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bGxlY3Rvci5jcHAJKHJldmlzaW9uIDYyMTMyKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2xsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29sbGVjdG9y
SGVhcEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKQEAgLTEzMCw3ICsxMzEsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogSGVhcDo6
SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCi0gICAgOiBtX21hcmtMaXN0U2V0KDApCisg
ICAgOiBtX2NhbGxiYWNrKGRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2spCisgICAgLCBtX2NhbGxi
YWNrRGF0YSgwKQorICAgICwgbV9tYXJrTGlzdFNldCgwKQogI2lmIEVOQUJMRShKU0NfTVVMVElQ
TEVfVEhSRUFEUykKICAgICAsIG1fcmVnaXN0ZXJlZFRocmVhZHMoMCkKICAgICAsIG1fY3VycmVu
dFRocmVhZFJlZ2lzdHJhcigwKQpAQCAtMTQzLDYgKzE0Niw3IEBAIEhlYXA6OkhlYXAoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQogICAgIEFTU0VSVChnbG9iYWxEYXRhKTsKICAgICBtZW1zZXQo
Jm1faGVhcCwgMCwgc2l6ZW9mKENvbGxlY3RvckhlYXApKTsKICAgICBhbGxvY2F0ZUJsb2NrKCk7
CisgICAgbV9jYWxsYmFjayh0aGlzLCBtX2NhbGxiYWNrRGF0YSk7CiB9CiAKIEhlYXA6On5IZWFw
KCkKQEAgLTQwMiw2ICs0MDYsNyBAQCBhbGxvY2F0ZToKICAgICAvLyBTbG93IGNhc2U6IHJlYWNo
ZWQgdGhlIGVuZCBvZiB0aGUgaGVhcC4gTWFyayBsaXZlIG9iamVjdHMgYW5kIHN0YXJ0IG92ZXIu
CiAKICAgICByZXNldCgpOworICAgIG1fY2FsbGJhY2sodGhpcywgbV9jYWxsYmFja0RhdGEpOwog
ICAgIGdvdG8gYWxsb2NhdGU7CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29s
bGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3Iu
aAkocmV2aXNpb24gNjIxMzIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIEhlYXAgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgY2xh
c3MgVGhyZWFkOworICAgICAgICB0eXBlZGVmIHZvaWQgKCpHQ0NhbGxiYWNrKShIZWFwKiwgdm9p
ZCopOwogCiAgICAgICAgIHZvaWQgZGVzdHJveSgpOwogCkBAIC04MSw2ICs4Miw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNCdXN5KCk7IC8vIHRydWUgaWYgYW4gYWxsb2Nh
dGlvbiBvciBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCiAgICAgICAgIHZvaWQgY29sbGVjdEFs
bEdhcmJhZ2UoKTsKKyAgICAgICAgdm9pZCBzZXRHQ0NhbGxiYWNrKEdDQ2FsbGJhY2ssIHZvaWQq
KTsKIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsKICAg
ICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAyNDsKQEAg
LTE1OCw2ICsxNjAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB0eXBlZGVmIEhhc2hD
b3VudGVkU2V0PEpTQ2VsbCo+IFByb3RlY3RDb3VudFNldDsKIAorICAgICAgICBHQ0NhbGxiYWNr
IG1fY2FsbGJhY2s7CisgICAgICAgIHZvaWQqIG1fY2FsbGJhY2tEYXRhOworCiAgICAgICAgIENv
bGxlY3RvckhlYXAgbV9oZWFwOwogCiAgICAgICAgIFByb3RlY3RDb3VudFNldCBtX3Byb3RlY3Rl
ZFZhbHVlczsKQEAgLTI5MSw2ICsyOTYsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZWNvcmRFeHRyYUNvc3QoY29zdCk7CiAgICAgfQogICAgIAorICAgIGlubGluZSB2b2lkIEhl
YXA6OnNldEdDQ2FsbGJhY2soSGVhcDo6R0NDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tEYXRhKQorICAgIHsKKyAgICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgIG1fY2Fs
bGJhY2tEYXRhID0gY2FsbGJhY2tEYXRhOworICAgIH0KKwogICAgIGlubGluZSB2b2lkKiBIZWFw
OjphbGxvY2F0ZU51bWJlcihzaXplX3QgcykKICAgICB7CiAgICAgICAgIGlmICh2b2lkKiByZXN1
bHQgPSBtX2hlYXAubmV4dE51bWJlcikgewpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
Q0FjdGl2aXR5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFj
ay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmICFQTEFURk9STShDRikKK3ZvaWQgZGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiwgdm9pZCopCit7Cit9CisjZW5kaWYKKworfQpJbmRl
eDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oCShyZXZpc2lv
biAwKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0dDQWN0aXZpdHlDYWxsYmFj
a19oCisjZGVmaW5lIEpTR0NBY3Rpdml0eUNhbGxiYWNrX2gKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEhlYXA7CisKK3ZvaWQgZGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiwgdm9p
ZCopOworCit9CisKKyNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2
aXR5Q2FsbGJhY2tDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
Q0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFj
ay5oIgorCisjaW5jbHVkZSAiQ29sbGVjdG9yLmgiCisjaW5jbHVkZSAiSlNMb2NrLmgiCisKKyNp
ZiBQTEFURk9STShDRikKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIHZvaWQgZGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFja1RyaWdnZXIoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQgKmluZm8pCit7CisgICAgSGVhcCog
aGVhcCA9IHN0YXRpY19jYXN0PEhlYXAqPihpbmZvKTsKKyAgICBKU0xvY2s6OmxvY2soaGVhcC0+
Z2xvYmFsRGF0YSgpKTsKKyAgICBoZWFwLT5jb2xsZWN0QWxsR2FyYmFnZSgpOworICAgIEpTTG9j
azo6dW5sb2NrKGhlYXAtPmdsb2JhbERhdGEoKSk7Cit9CisKK3ZvaWQgZGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjayhIZWFwKiBoZWFwLCB2b2lkKikKK3sKKyAgICBzdGF0aWMgQ0ZSdW5Mb29wVGlt
ZXJSZWYgdGltZXI7CisgICAgc3RhdGljIENGUnVuTG9vcFRpbWVyQ29udGV4dCBjdHg7CisKKyAg
ICBDRlRpbWVJbnRlcnZhbCBkZWNhZGUgPSA2MCAqIDYwICogMjQgKiAzNjUgKiAxMDsKKworICAg
IGZwcmludGYoc3RkZXJyLCAiY3VycmVudDogJXBcbiIsIENGUnVuTG9vcEdldEN1cnJlbnQoKSk7
CisgICAgaWYgKCF0aW1lcikgeworICAgICAgICBjdHguaW5mbyA9IGhlYXA7CisgICAgICAgIHRp
bWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUoMCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkg
KyAyLCBkZWNhZGUsIDAsIDAsIGRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tUcmlnZ2VyLCAmY3R4
KTsKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCB0aW1l
ciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICB9IGVsc2UKKyAgICAgICAgQ0ZSdW5Mb29w
VGltZXJTZXROZXh0RmlyZURhdGUodGltZXIsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsg
Mik7Cit9CisKK30KKworI2VuZGlmCisKKwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNw
cAkocmV2aXNpb24gNjIxMzIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsMTYgQEAgdm9pZCBKU0xvY2s6OnVubG9jayhF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgdW5sb2NrKGV4ZWMtPmdsb2JhbERhdGEoKS5pc1NoYXJlZElu
c3RhbmNlKCkgPyBMb2NrRm9yUmVhbCA6IFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiB9CiAKK3Zv
aWQgSlNMb2NrOjpsb2NrKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICBsb2NrKGds
b2JhbERhdGEtPmlzU2hhcmVkSW5zdGFuY2UoKSA/IExvY2tGb3JSZWFsIDogU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKK30KKwordm9pZCBKU0xvY2s6OnVubG9jayhKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCit7CisgICAgdW5sb2NrKGdsb2JhbERhdGEtPmlzU2hhcmVkSW5zdGFuY2UoKSA/IExv
Y2tGb3JSZWFsIDogU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKK30KKwogYm9vbCBKU0xvY2s6OmN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkKIHsKICAgICBwdGhyZWFkX29uY2UoJmNyZWF0ZUpT
TG9ja0NvdW50T25jZSwgY3JlYXRlSlNMb2NrQ291bnQpOwpAQCAtMjM3LDYgKzI0NywxNCBAQCB2
b2lkIEpTTG9jazo6dW5sb2NrKEV4ZWNTdGF0ZSopCiB7CiB9CiAKK3ZvaWQgSlNMb2NrOjpsb2Nr
KEpTR2xvYmFsRGF0YSopCit7Cit9CisKK3ZvaWQgSlNMb2NrOjp1bmxvY2soSlNHbG9iYWxEYXRh
KikKK3sKK30KKwogSlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhFeGVjU3RhdGUq
KQogewogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCShyZXZpc2lvbiA2MjEzMikKKysr
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYg
KzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gYXNzZXJ0aW9ucyB3b3JraW5nLCBzbyB0
aGF0IGNsaWVudHMgdGhhdCB1c2UgdGhlIHNoYXJlZCBjb250ZXh0IGRvbid0IGJyZWFrLgogCiAg
ICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKIAogICAgIGVudW0g
SlNMb2NrQmVoYXZpb3IgeyBTaWxlbmNlQXNzZXJ0aW9uc09ubHksIExvY2tGb3JSZWFsIH07CiAK
QEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHVu
bG9jayhKU0xvY2tCZWhhdmlvcik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGxvY2soRXhlY1N0YXRl
Kik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHVubG9jayhFeGVjU3RhdGUqKTsKKyAgICAgICAgc3Rh
dGljIHZvaWQgbG9jayhKU0dsb2JhbERhdGEqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdW5sb2Nr
KEpTR2xvYmFsRGF0YSopOwogCiAgICAgICAgIHN0YXRpYyBpbnRwdHJfdCBsb2NrQ291bnQoKTsK
ICAgICAgICAgc3RhdGljIGJvb2wgY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKTsK
</data>
<flag name="review"
          id="47304"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61335</attachid>
            <date>2010-07-13 00:13:20 -0700</date>
            <delta_ts>2010-07-13 07:28:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>gc-timer.patch</filename>
            <type>text/plain</type>
            <size>25468</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzMTc3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMDctMTIgIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQxMzE4CisKKyAgICAgICAgQWRkZWQgYSBjYWxsYmFjayBpbiBKYXZhU2NyaXB0Q29y
ZSB0aGF0IGdldHMgdHJpZ2dlcmVkIGFmdGVyIGFuCisgICAgICAgIGFsbG9jYXRpb24gY2F1c2Vz
IHRoZSBoZWFwIHRvIHJlc2V0LiAgVGhpcyBpcyB1c2VmdWwgZm9yIGFkZGluZyBhCisgICAgICAg
IHRpbWVyIHRoYXQgd2lsbCB0cmlnZ2VyIGdhcmJhZ2UgY29sbGVjdGlvbiBhZnRlciB0aGUgImxh
c3QiCisgICAgICAgIGFsbG9jYXRpb24uCisKKyAgICAgICAgQWxzbyBuZWVkZWQgd2FzIHRvIGFk
ZCBsb2NrIGFuZCB1bmxvY2sgbWV0aG9kcyB0byBKU0xvY2sgdGhhdCBuZWVkZWQKKyAgICAgICAg
b25seSBhIEpTR2xvYmFsRGF0YSBvYmplY3QgdmVyc3VzIGFuIEV4ZWNTdGF0ZSBvYmplY3QuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBy
bzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db2xsZWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmFsbG9jYXRlKToKKyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rvci5oOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKiBydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAg
KEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6fkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJh
Y2spOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpvcGVyYXRvcigp
KToKKyAgICAgICAgKiBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjp+R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAg
ICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2tEYXRhOjp0cmlnZ2VyKToKKyAgICAgICAgKEpTQzo6RGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAg
IChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6On5EZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrKToKKyAgICAgICAgKEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6b3BlcmF0b3Io
KSk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suY3BwOgorICAgICAgICAoSlNDOjpKU0xvY2s6
OkpTTG9jayk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKwogMjAxMC0wNy0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZy
ZXkgR2FyZW4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNjMxNDkpCisrKyBK
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEw
Nyw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9FeGVjdXRhYmxl
LmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAog
ICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAogICAgIHJ1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0
aW9uLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiA2MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjUsNiArMjY1LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCUph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKIAlKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0Fj
dGl2aXR5Q2FsbGJhY2suaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
Y3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oIFwKIAlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAgXApJbmRleDogSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA2MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw2ICsyMTYsOCBAQAogICAg
ICAgICAgICAgJ3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oJywKICAgICAgICAgICAgICdy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5oJywKKyAgICAgICAgICAgICdydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFj
ay5jcHAnLAorICAgICAgICAgICAgJ3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgnLAogICAg
ICAgICAgICAgJ3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCcsCiAgICAgICAgICAgICAncnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuaCcsCiAgICAgICAgICAgICAncnVudGltZS9HbG9iYWxFdmFsRnVuY3Rp
b24uY3BwJywKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDYzMTQ5
KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsNiArMTQyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9FeGVjdXRhYmxlLmNw
cCBcCiAgICAgcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAgXAorICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNw
cCBcCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKICAgICBydW50aW1lL0dsb2JhbEV2
YWxGdW5jdGlvbi5jcHAgXAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAgXApJbmRleDogSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiA2
MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTcwOSw2ICs3MDks
MTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5ccnVudGltZVxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxHQ0FjdGl2aXR5
Q2FsbGJhY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmNwcCINCiAJCQkJPg0KIAkJCTwvRmls
ZT4NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDYzMTQ5KQorKysgSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNTA2LDYgKzUwNiw4IEBACiAJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1w
VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi87IH07CiAJCUJDRkQ4
QzkzMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1w
VGFibGUuaCAqLzsgfTsKIAkJQzBBMjcyNjMwRTUwQTA2MzAwRTk2RTE1IC8qIE5vdEZvdW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEEyNzIzRjBF
NTA5RjFFMDBFOTZFMTUgLyogTm90Rm91bmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlERDBCMzA2ODExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rp
dml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERDBCMzA2NjExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJREQwQjMwNjkx
MUVCQjExRjAwNDlERjNEIC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMEIzMDY3MTFFQkIxMUYwMDQ5REYz
RCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgKi87IH07CiAJCUUxMjRBOEY3MEU1NTU3NzUw
MDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3Ry
aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMw
OTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi87IH07CiAJCUUxNzg2MzZEMEQ5QkVFQzMwMEQ3
NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzg2MzZDMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFs
aXplVGhyZWFkaW5nLmNwcCAqLzsgfTsKQEAgLTEwNDYsNiArMTA0OCw4IEBACiAJCUMwQTI3MjNG
MEU1MDlGMUUwMEU5NkUxNSAvKiBOb3RGb3VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOb3RGb3VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIy
ODBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlQ29udmVyc2lvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERDBCMzA2NjExRUJCMTFGMDA0OURGM0QgLyog
R0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdD
QWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERDBCMzA2
NzExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE3NTBCMkU3OThEMDA1NkMxODggLyogU3Ry
aW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0V4dHJh
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkx
RjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
T3BhcXVlSlNTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNEE4RjYw
RTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1NTEsNiArMTU1NSw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZB
RiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlERDBCMzA2NjExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8s
CisJCQkJREQwQjMwNjcxMUVCQjExRjAwNDlERjNEIC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNw
cCAqLywKIAkJCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8sCiAJ
CQkJQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8sCiAJCQkJQTE3
MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLywKQEAgLTIxODcsNiAr
MjE5Myw3IEBACiAJCQkJQTc4NEEyNjMxMUQxNjYyMjAwNTc3NkFDIC8qIEpTUGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzg0QTI2NDExRDE2NjIyMDA1Nzc2QUMgLyogU3ludGF4Q2hlY2tl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdGMTlFQ0UxMURENDkwOTAwOTMxRTcwIC8qIEZpeGVk
QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUREMEIzMDY4MTFFQkIxMUYwMDQ5REYzRCAvKiBH
Q0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjYyNyw2ICsyNjM0LDcgQEAK
IAkJCQlCQzAxRDRGMTExQThGMUZGMDBBNTRCMkEgLyogSlNab21iaWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3ODRBMjYyMTFEMTY2MjIwMDU3NzZBQyAvKiBKU1BhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlERDBCMzA2OTExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0
eUNhbGxiYWNrQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2xsZWN0b3IuY3BwCShyZXZpc2lvbiA2MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbGxlY3Rv
ckhlYXBJdGVyYXRvci5oIgorI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCkBAIC0xMjksOCArMTMwLDkgQEAgcHVibGljOgogCiAjZW5kaWYKIAotSGVh
cDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCitIZWFwOjpIZWFwKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgR0NBY3Rpdml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKQogICAg
IDogbV9tYXJrTGlzdFNldCgwKQorICAgICwgbV9hY3Rpdml0eUNhbGxiYWNrKGFjdGl2aXR5Q2Fs
bGJhY2spCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAgICwgbV9yZWdpc3Rl
cmVkVGhyZWFkcygwKQogICAgICwgbV9jdXJyZW50VGhyZWFkUmVnaXN0cmFyKDApCkBAIC0xNDMs
NiArMTQ1LDkgQEAgSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgQVNT
RVJUKGdsb2JhbERhdGEpOwogICAgIG1lbXNldCgmbV9oZWFwLCAwLCBzaXplb2YoQ29sbGVjdG9y
SGVhcCkpOwogICAgIGFsbG9jYXRlQmxvY2soKTsKKyAgICBpZiAoIW1fYWN0aXZpdHlDYWxsYmFj
aykKKyAgICAgICAgbV9hY3Rpdml0eUNhbGxiYWNrID0gbmV3IERlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2sodGhpcyk7CisgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiB9CiAKIEhlYXA6On5I
ZWFwKCkKQEAgLTE1NSw2ICsxNjAsOCBAQCB2b2lkIEhlYXA6OmRlc3Ryb3koKQogewogICAgIEpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKKyAgICBkZWxldGUgbV9hY3Rpdml0
eUNhbGxiYWNrOworCiAgICAgaWYgKCFtX2dsb2JhbERhdGEpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNDAyLDYgKzQwOSw3IEBAIGFsbG9jYXRlOgogICAgIC8vIFNsb3cgY2FzZTogcmVhY2hlZCB0
aGUgZW5kIG9mIHRoZSBoZWFwLiBNYXJrIGxpdmUgb2JqZWN0cyBhbmQgc3RhcnQgb3Zlci4KIAog
ICAgIHJlc2V0KCk7CisgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiAgICAgZ290byBhbGxv
Y2F0ZTsKIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCShyZXZpc2lvbiA2
MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29sbGVj
dG9yQmxvY2s7CisgICAgY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogICAgIGNsYXNzIEpTQ2Vs
bDsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKQEAgLTgyLDYg
KzgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBpc0J1c3koKTsgLy8gdHJ1
ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICAgICAgICAg
dm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAgICB2b2lkIHNldEFjdGl2aXR5Q2FsbGJh
Y2soR0NBY3Rpdml0eUNhbGxiYWNrKik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBt
aW5FeHRyYUNvc3QgPSAyNTY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RXh0cmFD
b3N0ID0gMTAyNCAqIDEwMjQ7CkBAIC0xMzIsNyArMTM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBzaXplX3QgY2VsbE9mZnNldChjb25zdCBKU0NlbGwqKTsKIAogICAgICAg
ICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwotICAgICAgICBIZWFwKEpTR2xvYmFsRGF0YSop
OworICAgICAgICBIZWFwKEpTR2xvYmFsRGF0YSosIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZp
dHlDYWxsYmFjayA9IE5VTEwpOwogICAgICAgICB+SGVhcCgpOwogCiAgICAgICAgIE5FVkVSX0lO
TElORSBDb2xsZWN0b3JCbG9jayogYWxsb2NhdGVCbG9jaygpOwpAQCAtMTY1LDYgKzE2Nyw4IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIq
PiogbV9tYXJrTGlzdFNldDsKIAorICAgICAgICBHQ0FjdGl2aXR5Q2FsbGJhY2sqIG1fYWN0aXZp
dHlDYWxsYmFjazsKKwogI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKICAgICAgICAg
dm9pZCBtYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOwogCkBAIC0yOTIsNiArMjk2LDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmVjb3JkRXh0cmFDb3N0KGNvc3QpOwog
ICAgIH0KICAgICAKKyAgICBpbmxpbmUgdm9pZCBIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNrKEdD
QWN0aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaykKKyAgICB7CisgICAgICBtX2FjdGl2
aXR5Q2FsbGJhY2sgPSBhY3Rpdml0eUNhbGxiYWNrOworICAgIH0KKwogICAgIGlubGluZSB2b2lk
KiBIZWFwOjphbGxvY2F0ZU51bWJlcihzaXplX3QgcykKICAgICB7CiAgICAgICAgIGlmICh2b2lk
KiByZXN1bHQgPSBtX2hlYXAubmV4dE51bWJlcikgewpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdDQWN0aXZpdHlD
YWxsYmFjay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IERlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2tEYXRhIHsKK307CisKK0RlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKK3sKK30KKworRGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjazo6fkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soKQoreworfQorCit2b2lkIERlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6Om9wZXJhdG9yKCkoKQoreworfQorCit9CisKK30KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNpb24g
MCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR0NBY3Rpdml0eUNhbGxiYWNrX2gK
KyNkZWZpbmUgR0NBY3Rpdml0eUNhbGxiYWNrX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEhlYXA7CisKK2NsYXNzIEdDQWN0aXZpdHlDYWxsYmFjayB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+R0NBY3Rpdml0eUNhbGxiYWNrKCkge30KKworICAgIHZpcnR1YWwgdm9pZCBvcGVyYXRvcigp
KCkge30KK307CisKK3N0cnVjdCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YTsKKworY2xh
c3MgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2FsbGJhY2sg
eworcHVibGljOgorICAgIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOworICAgIH5E
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKCk7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoKTsKKwor
cHJpdmF0ZToKKyAgICBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YSogZDsKK307CisKK30K
KworI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFj
a0NGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlD
YWxsYmFja0NGLmNwcAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NB
Y3Rpdml0eUNhbGxiYWNrQ0YuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisKKyNp
bmNsdWRlICJDb2xsZWN0b3IuaCIKKyNpbmNsdWRlICJKU0xvY2suaCIKKworI2lmIFBMQVRGT1JN
KENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitzdHJ1Y3QgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja0RhdGEgeworICAg
IHN0YXRpYyB2b2lkIHRyaWdnZXIoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQgKmluZm8pOworCisg
ICAgQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXI7CisgICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNv
bnRleHQ7Cit9OworCitjb25zdCBDRlRpbWVJbnRlcnZhbCBkZWNhZGUgPSA2MCAqIDYwICogMjQg
KiAzNjUgKiAxMDsKKwordm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YTo6dHJpZ2dl
cihDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCAqaW5mbykKK3sKKyAgICBIZWFwKiBoZWFwID0gc3Rh
dGljX2Nhc3Q8SGVhcCo+KGluZm8pOworICAgIEpTTG9jayBsb2NrKGhlYXAtPmdsb2JhbERhdGEo
KSk7CisKKyAgICBoZWFwLT5jb2xsZWN0QWxsR2FyYmFnZSgpOworfQorCitEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCit7Cisg
ICAgZCA9IG5ldyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YTsKKworICAgIG1lbXNldCgm
ZC0+Y29udGV4dCwgJ1wwJywgc2l6ZW9mKENGUnVuTG9vcFRpbWVyQ29udGV4dCkpOworICAgIGQt
PmNvbnRleHQuaW5mbyA9IGhlYXA7CisgICAgZC0+dGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0
ZSgwLCBkZWNhZGUsIGRlY2FkZSwgMCwgMCwgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja0RhdGE6
OnRyaWdnZXIsICZkLT5jb250ZXh0KTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BH
ZXRDdXJyZW50KCksIGQtPnRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworfQorCitEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrOjp+RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaygpCit7Cisg
ICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBkLT50aW1lciwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUoZC0+
dGltZXIpOworICAgIGQtPmNvbnRleHQuaW5mbyA9IDA7CisgICAgZC0+dGltZXIgPSAwOworICAg
IGRlbGV0ZSBkOworICAgIGQgPSAwOworfQorCit2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJh
Y2s6Om9wZXJhdG9yKCkoKQoreworICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKGQt
PnRpbWVyLCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIDIpOworfQorCit9CisKKyNlbmRp
ZgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkocmV2aXNpb24gNjMxNDkpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYg
KzY1LDEyIEBAIEpTTG9jazo6SlNMb2NrKEV4ZWNTdGF0ZSogZXhlYykKICAgICBsb2NrKG1fbG9j
a0JlaGF2aW9yKTsKIH0KIAorSlNMb2NrOjpKU0xvY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KQorICAgIDogbV9sb2NrQmVoYXZpb3IoZ2xvYmFsRGF0YS0+aXNTaGFyZWRJbnN0YW5jZSgpID8g
TG9ja0ZvclJlYWwgOiBTaWxlbmNlQXNzZXJ0aW9uc09ubHkpCit7CisgICAgbG9jayhtX2xvY2tC
ZWhhdmlvcik7Cit9CisKIHZvaWQgSlNMb2NrOjpsb2NrKEpTTG9ja0JlaGF2aW9yIGxvY2tCZWhh
dmlvcikKIHsKICNpZmRlZiBOREVCVUcKQEAgLTIzNyw2ICsyNDMsMTQgQEAgdm9pZCBKU0xvY2s6
OnVubG9jayhFeGVjU3RhdGUqKQogewogfQogCit2b2lkIEpTTG9jazo6bG9jayhKU0dsb2JhbERh
dGEqKQoreworfQorCit2b2lkIEpTTG9jazo6dW5sb2NrKEpTR2xvYmFsRGF0YSopCit7Cit9CisK
IEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKikKIHsKIH0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNpb24gNjMxNDkpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMiArNDksMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gYXNzZXJ0aW9ucyB3b3JraW5nLCBzbyB0aGF0IGNsaWVu
dHMgdGhhdCB1c2UgdGhlIHNoYXJlZCBjb250ZXh0IGRvbid0IGJyZWFrLgogCiAgICAgY2xhc3Mg
RXhlY1N0YXRlOworICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKIAogICAgIGVudW0gSlNMb2NrQmVo
YXZpb3IgeyBTaWxlbmNlQXNzZXJ0aW9uc09ubHksIExvY2tGb3JSZWFsIH07CiAKICAgICBjbGFz
cyBKU0xvY2sgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgSlNM
b2NrKEV4ZWNTdGF0ZSopOworICAgICAgICBKU0xvY2soSlNHbG9iYWxEYXRhKik7CiAKICAgICAg
ICAgSlNMb2NrKEpTTG9ja0JlaGF2aW9yIGxvY2tCZWhhdmlvcikKICAgICAgICAgICAgIDogbV9s
b2NrQmVoYXZpb3IobG9ja0JlaGF2aW9yKQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzMTc3KQorKysgV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNy0xMiAgTmF0
aGFuIExhd3JlbmNlICA8bmxhd3JlbmNlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDEzMTgKKyAgICAgICAgV2ViS2l0IHJlZ2lzdGVycyBhIHRpbWVyIHRvIHRo
ZSBKU0MgR0MgdGhhdCB0cmlnZ2VycyBhIGZ1bGwgZ2FyYmFnZQorICAgICAgICBjb2xsZWN0aW9u
IGFmdGVyIDIgc2Vjb25kcyBvZiBpbmFjdGl2aXR5LgorCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdDQ29udHJvbGxl
cjo6Z2FyYmFnZUNvbGxlY3RTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVHQ0FjdGl2
aXR5Q2FsbGJhY2s6On5XZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvcmVHQ0FjdGl2aXR5Q2FsbGJhY2s6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0dDQ29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXROb3JtYWxXb3JsZENsaWVudERh
dGEpOgorCiAyMDEwLTA3LTEyICBNaWhuZWEgT3ZpZGVuZWEgIDxtaWhuZWFAYWRvYmUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KSW5kZXg6IFdlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvR0NBY3Rpdml0
eUNhbGxiYWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3Jl
X0ZXRF9HQ0FjdGl2aXR5Q2FsbGJhY2tfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9HQ0FjdGl2aXR5
Q2FsbGJhY2tfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5o
PgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biA2MzE0OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsMTAgKzU4LDEwIEBAIEdDQ29udHJvbGxlcjo6R0NDb250cm9sbGVyKCkK
IHsKIH0KIAotdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0U29vbigpCit2b2lkIEdD
Q29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RTb29uKHVuc2lnbmVkIHRpbWUpCiB7CiAgICAgaWYg
KCFtX0dDVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9HQ1RpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKKyAgICAgICAgbV9HQ1RpbWVyLnN0YXJ0T25lU2hvdCh0aW1lKTsKIH0KIAogdm9pZCBHQ0Nv
bnRyb2xsZXI6OmdjVGltZXJGaXJlZChUaW1lcjxHQ0NvbnRyb2xsZXI+KikKQEAgLTg3LDQgKzg3
LDEzIEBAIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE9uQWx0ZXIKICNlbmRpZgog
fQogCitXZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNrOjp+V2ViQ29yZUdDQWN0aXZpdHlDYWxsYmFj
aygpCit7Cit9CisKK3ZvaWQgV2ViQ29yZUdDQWN0aXZpdHlDYWxsYmFjazo6b3BlcmF0b3IoKSgp
Cit7CisgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RTb29uKDIpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmgJKHJl
dmlzaW9uIDYzMTQ5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBHQ0NvbnRyb2xsZXJfaAogI2Rl
ZmluZSBHQ0NvbnRyb2xsZXJfaAogCisjaW5jbHVkZSA8cnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJh
Y2suaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlICJUaW1lci5oIgog
CkBAIC0zNSw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZnJpZW5kIEdD
Q29udHJvbGxlciYgZ2NDb250cm9sbGVyKCk7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQg
Z2FyYmFnZUNvbGxlY3RTb29uKCk7CisgICAgICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RTb29uKHVu
c2lnbmVkIHRpbWUgPSAwKTsKICAgICAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdE5vdygpOyAvLyBJ
dCdzIGJldHRlciB0byBjYWxsIGdhcmJhZ2VDb2xsZWN0U29vbiwgdW5sZXNzIHlvdSBoYXZlIGEg
c3BlY2lmaWMgcmVhc29uIG5vdCB0by4KIAogICAgICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0T25B
bHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcoYm9vbCB3YWl0VW50aWxEb25lKTsgLy8gVXNlZCBm
b3Igc3RyZXNzIHRlc3RpbmcuCkBAIC00Nyw2ICs0OCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFRpbWVyPEdDQ29udHJvbGxlcj4gbV9HQ1RpbWVyOwogICAgIH07CiAKKyAgICBj
bGFzcyBXZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEpTQzo6R0NBY3Rpdml0eUNh
bGxiYWNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIH5XZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNr
KCk7CisgICAgICAgIHZvaWQgb3BlcmF0b3IoKSgpOworICAgIH07CisKICAgICAvLyBGdW5jdGlv
biB0byBvYnRhaW4gdGhlIGdsb2JhbCBHQyBjb250cm9sbGVyLgogICAgIEdDQ29udHJvbGxlciYg
Z2NDb250cm9sbGVyKCk7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oCShyZXZpc2lvbiA2MzE0OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNs
dWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJET01PYmplY3RIYXNoVGFibGVNYXAu
aCIKKyNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAg
LTczLDYgKzc0LDcgQEAgaW5saW5lIHZvaWQgaW5pdE5vcm1hbFdvcmxkQ2xpZW50RGF0YShKUwog
ewogICAgIFdlYkNvcmVKU0NsaWVudERhdGEqIHdlYkNvcmVKU0NsaWVudERhdGEgPSBuZXcgV2Vi
Q29yZUpTQ2xpZW50RGF0YTsKICAgICBnbG9iYWxEYXRhLT5jbGllbnREYXRhID0gd2ViQ29yZUpT
Q2xpZW50RGF0YTsgLy8gfkpTR2xvYmFsRGF0YSBkZWxldGVzIHRoaXMgcG9pbnRlci4KKyAgICBn
bG9iYWxEYXRhLT5oZWFwLnNldEFjdGl2aXR5Q2FsbGJhY2sobmV3IFdlYkNvcmVHQ0FjdGl2aXR5
Q2FsbGJhY2soKSk7CiAgICAgd2ViQ29yZUpTQ2xpZW50RGF0YS0+bV9ub3JtYWxXb3JsZCA9IERP
TVdyYXBwZXJXb3JsZDo6Y3JlYXRlKGdsb2JhbERhdGEsIHRydWUpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61373</attachid>
            <date>2010-07-13 07:28:01 -0700</date>
            <delta_ts>2010-07-13 08:50:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>gc-timer.patch</filename>
            <type>text/plain</type>
            <size>25462</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzMTc3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMDctMTIgIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQxMzE4CisKKyAgICAgICAgQWRkZWQgYSBjYWxsYmFjayBpbiBKYXZhU2NyaXB0Q29y
ZSB0aGF0IGdldHMgdHJpZ2dlcmVkIGFmdGVyIGFuCisgICAgICAgIGFsbG9jYXRpb24gY2F1c2Vz
IHRoZSBoZWFwIHRvIHJlc2V0LiAgVGhpcyBpcyB1c2VmdWwgZm9yIGFkZGluZyBhCisgICAgICAg
IHRpbWVyIHRoYXQgd2lsbCB0cmlnZ2VyIGdhcmJhZ2UgY29sbGVjdGlvbiBhZnRlciB0aGUgImxh
c3QiCisgICAgICAgIGFsbG9jYXRpb24uCisKKyAgICAgICAgQWxzbyBuZWVkZWQgd2FzIHRvIGFk
ZCBsb2NrIGFuZCB1bmxvY2sgbWV0aG9kcyB0byBKU0xvY2sgdGhhdCBuZWVkZWQKKyAgICAgICAg
b25seSBhIEpTR2xvYmFsRGF0YSBvYmplY3QgdmVyc3VzIGFuIEV4ZWNTdGF0ZSBvYmplY3QuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBy
bzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db2xsZWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmFsbG9jYXRlKToKKyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rvci5oOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKiBydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAg
KEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6fkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJh
Y2spOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpvcGVyYXRvcigp
KToKKyAgICAgICAgKiBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjp+R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAg
ICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2tEYXRhOjp0cmlnZ2VyKToKKyAgICAgICAgKEpTQzo6RGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAg
IChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6On5EZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrKToKKyAgICAgICAgKEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6b3BlcmF0b3Io
KSk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suY3BwOgorICAgICAgICAoSlNDOjpKU0xvY2s6
OkpTTG9jayk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKwogMjAxMC0wNy0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZy
ZXkgR2FyZW4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNjMxNDkpCisrKyBK
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEw
Nyw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9FeGVjdXRhYmxl
LmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAog
ICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAogICAgIHJ1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0
aW9uLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiA2MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjUsNiArMjY1LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCUph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKIAlKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0Fj
dGl2aXR5Q2FsbGJhY2suaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
Y3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oIFwKIAlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAgXApJbmRleDogSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA2MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw2ICsyMTYsOCBAQAogICAg
ICAgICAgICAgJ3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oJywKICAgICAgICAgICAgICdy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5oJywKKyAgICAgICAgICAgICdydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFj
ay5jcHAnLAorICAgICAgICAgICAgJ3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgnLAogICAg
ICAgICAgICAgJ3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCcsCiAgICAgICAgICAgICAncnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuaCcsCiAgICAgICAgICAgICAncnVudGltZS9HbG9iYWxFdmFsRnVuY3Rp
b24uY3BwJywKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDYzMTQ5
KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsNiArMTQyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9FeGVjdXRhYmxlLmNw
cCBcCiAgICAgcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAgXAorICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNw
cCBcCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKICAgICBydW50aW1lL0dsb2JhbEV2
YWxGdW5jdGlvbi5jcHAgXAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAgXApJbmRleDogSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiA2
MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTcwOSw2ICs3MDks
MTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5ccnVudGltZVxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxHQ0FjdGl2aXR5
Q2FsbGJhY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmNwcCINCiAJCQkJPg0KIAkJCTwvRmls
ZT4NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDYzMTQ5KQorKysgSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNTA2LDYgKzUwNiw4IEBACiAJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1w
VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi87IH07CiAJCUJDRkQ4
QzkzMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1w
VGFibGUuaCAqLzsgfTsKIAkJQzBBMjcyNjMwRTUwQTA2MzAwRTk2RTE1IC8qIE5vdEZvdW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEEyNzIzRjBF
NTA5RjFFMDBFOTZFMTUgLyogTm90Rm91bmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlERDBCMzA2ODExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rp
dml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERDBCMzA2NjExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJREQwQjMwNjkx
MUVCQjExRjAwNDlERjNEIC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMEIzMDY3MTFFQkIxMUYwMDQ5REYz
RCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgKi87IH07CiAJCUUxMjRBOEY3MEU1NTU3NzUw
MDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3Ry
aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMw
OTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi87IH07CiAJCUUxNzg2MzZEMEQ5QkVFQzMwMEQ3
NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzg2MzZDMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFs
aXplVGhyZWFkaW5nLmNwcCAqLzsgfTsKQEAgLTEwNDYsNiArMTA0OCw4IEBACiAJCUMwQTI3MjNG
MEU1MDlGMUUwMEU5NkUxNSAvKiBOb3RGb3VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOb3RGb3VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIy
ODBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlQ29udmVyc2lvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERDBCMzA2NjExRUJCMTFGMDA0OURGM0QgLyog
R0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdD
QWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERDBCMzA2
NzExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE3NTBCMkU3OThEMDA1NkMxODggLyogU3Ry
aW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0V4dHJh
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkx
RjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
T3BhcXVlSlNTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNEE4RjYw
RTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1NTEsNiArMTU1NSw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZB
RiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlERDBCMzA2NjExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8s
CisJCQkJREQwQjMwNjcxMUVCQjExRjAwNDlERjNEIC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNw
cCAqLywKIAkJCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8sCiAJ
CQkJQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8sCiAJCQkJQTE3
MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLywKQEAgLTIxODcsNiAr
MjE5Myw3IEBACiAJCQkJQTc4NEEyNjMxMUQxNjYyMjAwNTc3NkFDIC8qIEpTUGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzg0QTI2NDExRDE2NjIyMDA1Nzc2QUMgLyogU3ludGF4Q2hlY2tl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdGMTlFQ0UxMURENDkwOTAwOTMxRTcwIC8qIEZpeGVk
QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUREMEIzMDY4MTFFQkIxMUYwMDQ5REYzRCAvKiBH
Q0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjYyNyw2ICsyNjM0LDcgQEAK
IAkJCQlCQzAxRDRGMTExQThGMUZGMDBBNTRCMkEgLyogSlNab21iaWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3ODRBMjYyMTFEMTY2MjIwMDU3NzZBQyAvKiBKU1BhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlERDBCMzA2OTExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0
eUNhbGxiYWNrQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2xsZWN0b3IuY3BwCShyZXZpc2lvbiA2MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbGxlY3Rv
ckhlYXBJdGVyYXRvci5oIgorI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCkBAIC0xMjksOCArMTMwLDkgQEAgcHVibGljOgogCiAjZW5kaWYKIAotSGVh
cDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCitIZWFwOjpIZWFwKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgR0NBY3Rpdml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKQogICAg
IDogbV9tYXJrTGlzdFNldCgwKQorICAgICwgbV9hY3Rpdml0eUNhbGxiYWNrKGFjdGl2aXR5Q2Fs
bGJhY2spCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAgICwgbV9yZWdpc3Rl
cmVkVGhyZWFkcygwKQogICAgICwgbV9jdXJyZW50VGhyZWFkUmVnaXN0cmFyKDApCkBAIC0xNDMs
NiArMTQ1LDkgQEAgSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgQVNT
RVJUKGdsb2JhbERhdGEpOwogICAgIG1lbXNldCgmbV9oZWFwLCAwLCBzaXplb2YoQ29sbGVjdG9y
SGVhcCkpOwogICAgIGFsbG9jYXRlQmxvY2soKTsKKyAgICBpZiAoIW1fYWN0aXZpdHlDYWxsYmFj
aykKKyAgICAgICAgbV9hY3Rpdml0eUNhbGxiYWNrID0gbmV3IERlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2sodGhpcyk7CisgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiB9CiAKIEhlYXA6On5I
ZWFwKCkKQEAgLTE1NSw2ICsxNjAsOCBAQCB2b2lkIEhlYXA6OmRlc3Ryb3koKQogewogICAgIEpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKKyAgICBkZWxldGUgbV9hY3Rpdml0
eUNhbGxiYWNrOworCiAgICAgaWYgKCFtX2dsb2JhbERhdGEpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNDAyLDYgKzQwOSw3IEBAIGFsbG9jYXRlOgogICAgIC8vIFNsb3cgY2FzZTogcmVhY2hlZCB0
aGUgZW5kIG9mIHRoZSBoZWFwLiBNYXJrIGxpdmUgb2JqZWN0cyBhbmQgc3RhcnQgb3Zlci4KIAog
ICAgIHJlc2V0KCk7CisgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiAgICAgZ290byBhbGxv
Y2F0ZTsKIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCShyZXZpc2lvbiA2
MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29sbGVj
dG9yQmxvY2s7CisgICAgY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogICAgIGNsYXNzIEpTQ2Vs
bDsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKQEAgLTgyLDYg
KzgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBpc0J1c3koKTsgLy8gdHJ1
ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICAgICAgICAg
dm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAgICB2b2lkIHNldEFjdGl2aXR5Q2FsbGJh
Y2soR0NBY3Rpdml0eUNhbGxiYWNrKik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBt
aW5FeHRyYUNvc3QgPSAyNTY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RXh0cmFD
b3N0ID0gMTAyNCAqIDEwMjQ7CkBAIC0xMzIsNyArMTM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBzaXplX3QgY2VsbE9mZnNldChjb25zdCBKU0NlbGwqKTsKIAogICAgICAg
ICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwotICAgICAgICBIZWFwKEpTR2xvYmFsRGF0YSop
OworICAgICAgICBIZWFwKEpTR2xvYmFsRGF0YSosIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZp
dHlDYWxsYmFjayA9IDApOwogICAgICAgICB+SGVhcCgpOwogCiAgICAgICAgIE5FVkVSX0lOTElO
RSBDb2xsZWN0b3JCbG9jayogYWxsb2NhdGVCbG9jaygpOwpAQCAtMTY1LDYgKzE2Nyw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiog
bV9tYXJrTGlzdFNldDsKIAorICAgICAgICBHQ0FjdGl2aXR5Q2FsbGJhY2sqIG1fYWN0aXZpdHlD
YWxsYmFjazsKKwogI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKICAgICAgICAgdm9p
ZCBtYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOwogCkBAIC0yOTIsNiArMjk2LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmVjb3JkRXh0cmFDb3N0KGNvc3QpOwogICAg
IH0KICAgICAKKyAgICBpbmxpbmUgdm9pZCBIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNrKEdDQWN0
aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaykKKyAgICB7CisgICAgICBtX2FjdGl2aXR5
Q2FsbGJhY2sgPSBhY3Rpdml0eUNhbGxiYWNrOworICAgIH0KKwogICAgIGlubGluZSB2b2lkKiBI
ZWFwOjphbGxvY2F0ZU51bWJlcihzaXplX3QgcykKICAgICB7CiAgICAgICAgIGlmICh2b2lkKiBy
ZXN1bHQgPSBtX2hlYXAubmV4dE51bWJlcikgewpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxs
YmFjay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IERlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2tEYXRhIHsKK307CisKK0RlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKK3sKK30KKworRGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFjazo6fkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soKQoreworfQorCit2b2lkIERlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2s6Om9wZXJhdG9yKCkoKQoreworfQorCit9CisKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysr
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR0NBY3Rpdml0eUNhbGxiYWNrX2gKKyNkZWZp
bmUgR0NBY3Rpdml0eUNhbGxiYWNrX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEhlYXA7
CisKK2NsYXNzIEdDQWN0aXZpdHlDYWxsYmFjayB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+R0NB
Y3Rpdml0eUNhbGxiYWNrKCkge30KKworICAgIHZpcnR1YWwgdm9pZCBvcGVyYXRvcigpKCkge30K
K307CisKK3N0cnVjdCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YTsKKworY2xhc3MgRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2FsbGJhY2sgeworcHVi
bGljOgorICAgIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOworICAgIH5EZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrKCk7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoKTsKKworcHJpdmF0
ZToKKyAgICBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YSogZDsKK307CisKK30KKworI2Vu
ZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFj
a0NGLmNwcAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0
eUNhbGxiYWNrQ0YuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisKKyNpbmNsdWRl
ICJDb2xsZWN0b3IuaCIKKyNpbmNsdWRlICJKU0xvY2suaCIKKworI2lmIFBMQVRGT1JNKENGKQor
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitzdHJ1Y3QgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja0RhdGEgeworICAgIHN0YXRp
YyB2b2lkIHRyaWdnZXIoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQgKmluZm8pOworCisgICAgQ0ZS
dW5Mb29wVGltZXJSZWYgdGltZXI7CisgICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQ7
Cit9OworCitjb25zdCBDRlRpbWVJbnRlcnZhbCBkZWNhZGUgPSA2MCAqIDYwICogMjQgKiAzNjUg
KiAxMDsKKwordm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YTo6dHJpZ2dlcihDRlJ1
bkxvb3BUaW1lclJlZiwgdm9pZCAqaW5mbykKK3sKKyAgICBIZWFwKiBoZWFwID0gc3RhdGljX2Nh
c3Q8SGVhcCo+KGluZm8pOworICAgIEpTTG9jayBsb2NrKGhlYXAtPmdsb2JhbERhdGEoKSk7CisK
KyAgICBoZWFwLT5jb2xsZWN0QWxsR2FyYmFnZSgpOworfQorCitEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCit7CisgICAgZCA9
IG5ldyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YTsKKworICAgIG1lbXNldCgmZC0+Y29u
dGV4dCwgJ1wwJywgc2l6ZW9mKENGUnVuTG9vcFRpbWVyQ29udGV4dCkpOworICAgIGQtPmNvbnRl
eHQuaW5mbyA9IGhlYXA7CisgICAgZC0+dGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBk
ZWNhZGUsIGRlY2FkZSwgMCwgMCwgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja0RhdGE6OnRyaWdn
ZXIsICZkLT5jb250ZXh0KTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJy
ZW50KCksIGQtPnRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworfQorCitEZWZhdWx0R0NB
Y3Rpdml0eUNhbGxiYWNrOjp+RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaygpCit7CisgICAgQ0ZS
dW5Mb29wUmVtb3ZlVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBkLT50aW1lciwga0NGUnVu
TG9vcENvbW1vbk1vZGVzKTsKKyAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUoZC0+dGltZXIp
OworICAgIGQtPmNvbnRleHQuaW5mbyA9IDA7CisgICAgZC0+dGltZXIgPSAwOworICAgIGRlbGV0
ZSBkOworICAgIGQgPSAwOworfQorCit2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6Om9w
ZXJhdG9yKCkoKQoreworICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKGQtPnRpbWVy
LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIDIpOworfQorCit9CisKKyNlbmRpZgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkocmV2aXNpb24gNjMxNDkpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDEy
IEBAIEpTTG9jazo6SlNMb2NrKEV4ZWNTdGF0ZSogZXhlYykKICAgICBsb2NrKG1fbG9ja0JlaGF2
aW9yKTsKIH0KIAorSlNMb2NrOjpKU0xvY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorICAg
IDogbV9sb2NrQmVoYXZpb3IoZ2xvYmFsRGF0YS0+aXNTaGFyZWRJbnN0YW5jZSgpID8gTG9ja0Zv
clJlYWwgOiBTaWxlbmNlQXNzZXJ0aW9uc09ubHkpCit7CisgICAgbG9jayhtX2xvY2tCZWhhdmlv
cik7Cit9CisKIHZvaWQgSlNMb2NrOjpsb2NrKEpTTG9ja0JlaGF2aW9yIGxvY2tCZWhhdmlvcikK
IHsKICNpZmRlZiBOREVCVUcKQEAgLTIzNyw2ICsyNDMsMTQgQEAgdm9pZCBKU0xvY2s6OnVubG9j
ayhFeGVjU3RhdGUqKQogewogfQogCit2b2lkIEpTTG9jazo6bG9jayhKU0dsb2JhbERhdGEqKQor
eworfQorCit2b2lkIEpTTG9jazo6dW5sb2NrKEpTR2xvYmFsRGF0YSopCit7Cit9CisKIEpTTG9j
azo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKikKIHsKIH0KSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNpb24gNjMxNDkpCisrKyBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMiArNDksMTQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgLy8gYXNzZXJ0aW9ucyB3b3JraW5nLCBzbyB0aGF0IGNsaWVudHMgdGhh
dCB1c2UgdGhlIHNoYXJlZCBjb250ZXh0IGRvbid0IGJyZWFrLgogCiAgICAgY2xhc3MgRXhlY1N0
YXRlOworICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKIAogICAgIGVudW0gSlNMb2NrQmVoYXZpb3Ig
eyBTaWxlbmNlQXNzZXJ0aW9uc09ubHksIExvY2tGb3JSZWFsIH07CiAKICAgICBjbGFzcyBKU0xv
Y2sgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgSlNMb2NrKEV4
ZWNTdGF0ZSopOworICAgICAgICBKU0xvY2soSlNHbG9iYWxEYXRhKik7CiAKICAgICAgICAgSlNM
b2NrKEpTTG9ja0JlaGF2aW9yIGxvY2tCZWhhdmlvcikKICAgICAgICAgICAgIDogbV9sb2NrQmVo
YXZpb3IobG9ja0JlaGF2aW9yKQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzMTc3KQorKysgV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNy0xMiAgTmF0aGFuIExh
d3JlbmNlICA8bmxhd3JlbmNlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDEzMTgKKyAgICAgICAgV2ViS2l0IHJlZ2lzdGVycyBhIHRpbWVyIHRvIHRoZSBKU0Mg
R0MgdGhhdCB0cmlnZ2VycyBhIGZ1bGwgZ2FyYmFnZQorICAgICAgICBjb2xsZWN0aW9uIGFmdGVy
IDIgc2Vjb25kcyBvZiBpbmFjdGl2aXR5LgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
cnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6Z2Fy
YmFnZUNvbGxlY3RTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVHQ0FjdGl2aXR5Q2Fs
bGJhY2s6On5XZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVHQ0FjdGl2aXR5Q2FsbGJhY2s6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0dDQ29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXROb3JtYWxXb3JsZENsaWVudERhdGEpOgor
CiAyMDEwLTA3LTEyICBNaWhuZWEgT3ZpZGVuZWEgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxi
YWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9H
Q0FjdGl2aXR5Q2FsbGJhY2tfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9HQ0FjdGl2aXR5Q2FsbGJh
Y2tfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlDYWxsYmFjay5oPgorI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2MzE0
OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTgsMTAgKzU4LDEwIEBAIEdDQ29udHJvbGxlcjo6R0NDb250cm9sbGVyKCkKIHsKIH0K
IAotdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0U29vbigpCit2b2lkIEdDQ29udHJv
bGxlcjo6Z2FyYmFnZUNvbGxlY3RTb29uKHVuc2lnbmVkIHRpbWUpCiB7CiAgICAgaWYgKCFtX0dD
VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9HQ1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAg
ICAgICAgbV9HQ1RpbWVyLnN0YXJ0T25lU2hvdCh0aW1lKTsKIH0KIAogdm9pZCBHQ0NvbnRyb2xs
ZXI6OmdjVGltZXJGaXJlZChUaW1lcjxHQ0NvbnRyb2xsZXI+KikKQEAgLTg3LDQgKzg3LDEzIEBA
IHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE9uQWx0ZXIKICNlbmRpZgogfQogCitX
ZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNrOjp+V2ViQ29yZUdDQWN0aXZpdHlDYWxsYmFjaygpCit7
Cit9CisKK3ZvaWQgV2ViQ29yZUdDQWN0aXZpdHlDYWxsYmFjazo6b3BlcmF0b3IoKSgpCit7Cisg
ICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RTb29uKDIpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmgJKHJldmlzaW9u
IDYzMTQ5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBHQ0NvbnRyb2xsZXJfaAogI2RlZmluZSBH
Q0NvbnRyb2xsZXJfaAogCisjaW5jbHVkZSA8cnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlICJUaW1lci5oIgogCkBAIC0z
NSw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZnJpZW5kIEdDQ29udHJv
bGxlciYgZ2NDb250cm9sbGVyKCk7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgZ2FyYmFn
ZUNvbGxlY3RTb29uKCk7CisgICAgICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RTb29uKHVuc2lnbmVk
IHRpbWUgPSAwKTsKICAgICAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdE5vdygpOyAvLyBJdCdzIGJl
dHRlciB0byBjYWxsIGdhcmJhZ2VDb2xsZWN0U29vbiwgdW5sZXNzIHlvdSBoYXZlIGEgc3BlY2lm
aWMgcmVhc29uIG5vdCB0by4KIAogICAgICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0T25BbHRlcm5h
dGVUaHJlYWRGb3JEZWJ1Z2dpbmcoYm9vbCB3YWl0VW50aWxEb25lKTsgLy8gVXNlZCBmb3Igc3Ry
ZXNzIHRlc3RpbmcuCkBAIC00Nyw2ICs0OCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIFRpbWVyPEdDQ29udHJvbGxlcj4gbV9HQ1RpbWVyOwogICAgIH07CiAKKyAgICBjbGFzcyBX
ZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNr
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIH5XZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNrKCk7Cisg
ICAgICAgIHZvaWQgb3BlcmF0b3IoKSgpOworICAgIH07CisKICAgICAvLyBGdW5jdGlvbiB0byBv
YnRhaW4gdGhlIGdsb2JhbCBHQyBjb250cm9sbGVyLgogICAgIEdDQ29udHJvbGxlciYgZ2NDb250
cm9sbGVyKCk7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5oCShyZXZpc2lvbiA2MzE0OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJE
T01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJET01PYmplY3RIYXNoVGFibGVNYXAuaCIKKyNp
bmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTczLDYg
Kzc0LDcgQEAgaW5saW5lIHZvaWQgaW5pdE5vcm1hbFdvcmxkQ2xpZW50RGF0YShKUwogewogICAg
IFdlYkNvcmVKU0NsaWVudERhdGEqIHdlYkNvcmVKU0NsaWVudERhdGEgPSBuZXcgV2ViQ29yZUpT
Q2xpZW50RGF0YTsKICAgICBnbG9iYWxEYXRhLT5jbGllbnREYXRhID0gd2ViQ29yZUpTQ2xpZW50
RGF0YTsgLy8gfkpTR2xvYmFsRGF0YSBkZWxldGVzIHRoaXMgcG9pbnRlci4KKyAgICBnbG9iYWxE
YXRhLT5oZWFwLnNldEFjdGl2aXR5Q2FsbGJhY2sobmV3IFdlYkNvcmVHQ0FjdGl2aXR5Q2FsbGJh
Y2soKSk7CiAgICAgd2ViQ29yZUpTQ2xpZW50RGF0YS0+bV9ub3JtYWxXb3JsZCA9IERPTVdyYXBw
ZXJXb3JsZDo6Y3JlYXRlKGdsb2JhbERhdGEsIHRydWUpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61382</attachid>
            <date>2010-07-13 08:50:29 -0700</date>
            <delta_ts>2010-07-13 13:36:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>gc-timer.patch</filename>
            <type>text/plain</type>
            <size>25261</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzMTc3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMDctMTIgIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQxMzE4CisKKyAgICAgICAgQWRkZWQgYSBjYWxsYmFjayBpbiBKYXZhU2NyaXB0Q29y
ZSB0aGF0IGdldHMgdHJpZ2dlcmVkIGFmdGVyIGFuCisgICAgICAgIGFsbG9jYXRpb24gY2F1c2Vz
IHRoZSBoZWFwIHRvIHJlc2V0LiAgVGhpcyBpcyB1c2VmdWwgZm9yIGFkZGluZyBhCisgICAgICAg
IHRpbWVyIHRoYXQgd2lsbCB0cmlnZ2VyIGdhcmJhZ2UgY29sbGVjdGlvbiBhZnRlciB0aGUgImxh
c3QiCisgICAgICAgIGFsbG9jYXRpb24uCisKKyAgICAgICAgQWxzbyBuZWVkZWQgd2FzIHRvIGFk
ZCBsb2NrIGFuZCB1bmxvY2sgbWV0aG9kcyB0byBKU0xvY2sgdGhhdCBuZWVkZWQKKyAgICAgICAg
b25seSBhIEpTR2xvYmFsRGF0YSBvYmplY3QgdmVyc3VzIGFuIEV4ZWNTdGF0ZSBvYmplY3QuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBy
bzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db2xsZWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmFsbG9jYXRlKToKKyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rvci5oOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKiBydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAg
KEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6fkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJh
Y2spOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpvcGVyYXRvcigp
KToKKyAgICAgICAgKiBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjp+R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAg
ICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2tEYXRhOjp0cmlnZ2VyKToKKyAgICAgICAgKEpTQzo6RGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAg
IChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6On5EZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrKToKKyAgICAgICAgKEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6b3BlcmF0b3Io
KSk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suY3BwOgorICAgICAgICAoSlNDOjpKU0xvY2s6
OkpTTG9jayk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKwogMjAxMC0wNy0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZy
ZXkgR2FyZW4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNjMxNDkpCisrKyBK
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEw
Nyw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9FeGVjdXRhYmxl
LmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAog
ICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAogICAgIHJ1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0
aW9uLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiA2MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjUsNiArMjY1LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCUph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKIAlKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0Fj
dGl2aXR5Q2FsbGJhY2suaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
Y3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oIFwKIAlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAgXApJbmRleDogSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA2MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw2ICsyMTYsOCBAQAogICAg
ICAgICAgICAgJ3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oJywKICAgICAgICAgICAgICdy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5oJywKKyAgICAgICAgICAgICdydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFj
ay5jcHAnLAorICAgICAgICAgICAgJ3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgnLAogICAg
ICAgICAgICAgJ3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCcsCiAgICAgICAgICAgICAncnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuaCcsCiAgICAgICAgICAgICAncnVudGltZS9HbG9iYWxFdmFsRnVuY3Rp
b24uY3BwJywKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDYzMTQ5
KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsNiArMTQyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9FeGVjdXRhYmxlLmNw
cCBcCiAgICAgcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAgXAorICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNw
cCBcCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKICAgICBydW50aW1lL0dsb2JhbEV2
YWxGdW5jdGlvbi5jcHAgXAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAgXApJbmRleDogSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiA2
MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTcwOSw2ICs3MDks
MTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5ccnVudGltZVxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxHQ0FjdGl2aXR5
Q2FsbGJhY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcR2V0dGVyU2V0dGVyLmNwcCINCiAJCQkJPg0KIAkJCTwvRmls
ZT4NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDYzMTQ5KQorKysgSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNTA2LDYgKzUwNiw4IEBACiAJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1w
VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi87IH07CiAJCUJDRkQ4
QzkzMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1w
VGFibGUuaCAqLzsgfTsKIAkJQzBBMjcyNjMwRTUwQTA2MzAwRTk2RTE1IC8qIE5vdEZvdW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEEyNzIzRjBF
NTA5RjFFMDBFOTZFMTUgLyogTm90Rm91bmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlERDBCMzA2ODExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rp
dml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERDBCMzA2NjExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJREQwQjMwNjkx
MUVCQjExRjAwNDlERjNEIC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMEIzMDY3MTFFQkIxMUYwMDQ5REYz
RCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgKi87IH07CiAJCUUxMjRBOEY3MEU1NTU3NzUw
MDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3Ry
aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMw
OTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi87IH07CiAJCUUxNzg2MzZEMEQ5QkVFQzMwMEQ3
NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzg2MzZDMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFs
aXplVGhyZWFkaW5nLmNwcCAqLzsgfTsKQEAgLTEwNDYsNiArMTA0OCw4IEBACiAJCUMwQTI3MjNG
MEU1MDlGMUUwMEU5NkUxNSAvKiBOb3RGb3VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOb3RGb3VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIy
ODBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlQ29udmVyc2lvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERDBCMzA2NjExRUJCMTFGMDA0OURGM0QgLyog
R0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdD
QWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERDBCMzA2
NzExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE3NTBCMkU3OThEMDA1NkMxODggLyogU3Ry
aW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0V4dHJh
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkx
RjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
T3BhcXVlSlNTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNEE4RjYw
RTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1NTEsNiArMTU1NSw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZB
RiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlERDBCMzA2NjExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8s
CisJCQkJREQwQjMwNjcxMUVCQjExRjAwNDlERjNEIC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNw
cCAqLywKIAkJCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8sCiAJ
CQkJQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8sCiAJCQkJQTE3
MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLywKQEAgLTIxODcsNiAr
MjE5Myw3IEBACiAJCQkJQTc4NEEyNjMxMUQxNjYyMjAwNTc3NkFDIC8qIEpTUGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzg0QTI2NDExRDE2NjIyMDA1Nzc2QUMgLyogU3ludGF4Q2hlY2tl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdGMTlFQ0UxMURENDkwOTAwOTMxRTcwIC8qIEZpeGVk
QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUREMEIzMDY4MTFFQkIxMUYwMDQ5REYzRCAvKiBH
Q0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjYyNyw2ICsyNjM0LDcgQEAK
IAkJCQlCQzAxRDRGMTExQThGMUZGMDBBNTRCMkEgLyogSlNab21iaWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3ODRBMjYyMTFEMTY2MjIwMDU3NzZBQyAvKiBKU1BhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlERDBCMzA2OTExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0
eUNhbGxiYWNrQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2xsZWN0b3IuY3BwCShyZXZpc2lvbiA2MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbGxlY3Rv
ckhlYXBJdGVyYXRvci5oIgorI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCkBAIC0xMjksOCArMTMwLDkgQEAgcHVibGljOgogCiAjZW5kaWYKIAotSGVh
cDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCitIZWFwOjpIZWFwKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgR0NBY3Rpdml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKQogICAg
IDogbV9tYXJrTGlzdFNldCgwKQorICAgICwgbV9hY3Rpdml0eUNhbGxiYWNrKGFjdGl2aXR5Q2Fs
bGJhY2spCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAgICwgbV9yZWdpc3Rl
cmVkVGhyZWFkcygwKQogICAgICwgbV9jdXJyZW50VGhyZWFkUmVnaXN0cmFyKDApCkBAIC0xNDMs
NiArMTQ1LDkgQEAgSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgQVNT
RVJUKGdsb2JhbERhdGEpOwogICAgIG1lbXNldCgmbV9oZWFwLCAwLCBzaXplb2YoQ29sbGVjdG9y
SGVhcCkpOwogICAgIGFsbG9jYXRlQmxvY2soKTsKKyAgICBpZiAoIW1fYWN0aXZpdHlDYWxsYmFj
aykKKyAgICAgICAgbV9hY3Rpdml0eUNhbGxiYWNrID0gbmV3IERlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2sodGhpcyk7CisgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiB9CiAKIEhlYXA6On5I
ZWFwKCkKQEAgLTE1NSw2ICsxNjAsOCBAQCB2b2lkIEhlYXA6OmRlc3Ryb3koKQogewogICAgIEpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKKyAgICBkZWxldGUgbV9hY3Rpdml0
eUNhbGxiYWNrOworCiAgICAgaWYgKCFtX2dsb2JhbERhdGEpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNDAyLDYgKzQwOSw3IEBAIGFsbG9jYXRlOgogICAgIC8vIFNsb3cgY2FzZTogcmVhY2hlZCB0
aGUgZW5kIG9mIHRoZSBoZWFwLiBNYXJrIGxpdmUgb2JqZWN0cyBhbmQgc3RhcnQgb3Zlci4KIAog
ICAgIHJlc2V0KCk7CisgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiAgICAgZ290byBhbGxv
Y2F0ZTsKIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCShyZXZpc2lvbiA2
MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29sbGVj
dG9yQmxvY2s7CisgICAgY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogICAgIGNsYXNzIEpTQ2Vs
bDsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKQEAgLTgyLDYg
KzgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBpc0J1c3koKTsgLy8gdHJ1
ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICAgICAgICAg
dm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAgICB2b2lkIHNldEFjdGl2aXR5Q2FsbGJh
Y2soR0NBY3Rpdml0eUNhbGxiYWNrKik7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBt
aW5FeHRyYUNvc3QgPSAyNTY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RXh0cmFD
b3N0ID0gMTAyNCAqIDEwMjQ7CkBAIC0xMzIsNyArMTM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBzaXplX3QgY2VsbE9mZnNldChjb25zdCBKU0NlbGwqKTsKIAogICAgICAg
ICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwotICAgICAgICBIZWFwKEpTR2xvYmFsRGF0YSop
OworICAgICAgICBIZWFwKEpTR2xvYmFsRGF0YSosIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZp
dHlDYWxsYmFjayA9IDApOwogICAgICAgICB+SGVhcCgpOwogCiAgICAgICAgIE5FVkVSX0lOTElO
RSBDb2xsZWN0b3JCbG9jayogYWxsb2NhdGVCbG9jaygpOwpAQCAtMTY1LDYgKzE2Nyw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiog
bV9tYXJrTGlzdFNldDsKIAorICAgICAgICBHQ0FjdGl2aXR5Q2FsbGJhY2sqIG1fYWN0aXZpdHlD
YWxsYmFjazsKKwogI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKICAgICAgICAgdm9p
ZCBtYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOwogCkBAIC0yOTIsNiArMjk2LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmVjb3JkRXh0cmFDb3N0KGNvc3QpOwogICAg
IH0KICAgICAKKyAgICBpbmxpbmUgdm9pZCBIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNrKEdDQWN0
aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaykKKyAgICB7CisgICAgICBtX2FjdGl2aXR5
Q2FsbGJhY2sgPSBhY3Rpdml0eUNhbGxiYWNrOworICAgIH0KKwogICAgIGlubGluZSB2b2lkKiBI
ZWFwOjphbGxvY2F0ZU51bWJlcihzaXplX3QgcykKICAgICB7CiAgICAgICAgIGlmICh2b2lkKiBy
ZXN1bHQgPSBtX2hlYXAubmV4dE51bWJlcikgewpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxs
YmFjay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IERlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2tEYXRhIHsKK307CisKK0RlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKK3sKK30KKworRGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFjazo6fkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soKQoreworfQorCit2b2lkIERlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2s6Om9wZXJhdG9yKCkoKQoreworfQorCit9CisKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysr
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR0NBY3Rpdml0eUNhbGxiYWNrX2gKKyNkZWZp
bmUgR0NBY3Rpdml0eUNhbGxiYWNrX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEhlYXA7
CisKK2NsYXNzIEdDQWN0aXZpdHlDYWxsYmFjayB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+R0NB
Y3Rpdml0eUNhbGxiYWNrKCkge30KKworICAgIHZpcnR1YWwgdm9pZCBvcGVyYXRvcigpKCkge30K
K307CisKK3N0cnVjdCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YTsKKworY2xhc3MgRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2FsbGJhY2sgeworcHVi
bGljOgorICAgIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOworICAgIH5EZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrKCk7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoKTsKKworcHJpdmF0
ZToKKyAgICBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YSogZDsKK307CisKK30KKworI2Vu
ZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFj
a0NGLmNwcAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0
eUNhbGxiYWNrQ0YuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisKKyNpbmNsdWRl
ICJDb2xsZWN0b3IuaCIKKyNpbmNsdWRlICJKU0xvY2suaCIKKworI2lmIFBMQVRGT1JNKENGKQor
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitzdHJ1Y3QgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja0RhdGEgeworICAgIHN0YXRp
YyB2b2lkIHRyaWdnZXIoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQgKmluZm8pOworCisgICAgQ0ZS
dW5Mb29wVGltZXJSZWYgdGltZXI7CisgICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQ7
Cit9OworCitjb25zdCBDRlRpbWVJbnRlcnZhbCBkZWNhZGUgPSA2MCAqIDYwICogMjQgKiAzNjUg
KiAxMDsKKwordm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YTo6dHJpZ2dlcihDRlJ1
bkxvb3BUaW1lclJlZiwgdm9pZCAqaW5mbykKK3sKKyAgICBIZWFwKiBoZWFwID0gc3RhdGljX2Nh
c3Q8SGVhcCo+KGluZm8pOworICAgIEpTTG9jayBsb2NrKGhlYXAtPmdsb2JhbERhdGEoKSk7CisK
KyAgICBoZWFwLT5jb2xsZWN0QWxsR2FyYmFnZSgpOworfQorCitEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCit7CisgICAgZCA9
IG5ldyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YTsKKworICAgIG1lbXNldCgmZC0+Y29u
dGV4dCwgJ1wwJywgc2l6ZW9mKENGUnVuTG9vcFRpbWVyQ29udGV4dCkpOworICAgIGQtPmNvbnRl
eHQuaW5mbyA9IGhlYXA7CisgICAgZC0+dGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBk
ZWNhZGUsIGRlY2FkZSwgMCwgMCwgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja0RhdGE6OnRyaWdn
ZXIsICZkLT5jb250ZXh0KTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJy
ZW50KCksIGQtPnRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworfQorCitEZWZhdWx0R0NB
Y3Rpdml0eUNhbGxiYWNrOjp+RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaygpCit7CisgICAgQ0ZS
dW5Mb29wUmVtb3ZlVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBkLT50aW1lciwga0NGUnVu
TG9vcENvbW1vbk1vZGVzKTsKKyAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUoZC0+dGltZXIp
OworICAgIGQtPmNvbnRleHQuaW5mbyA9IDA7CisgICAgZC0+dGltZXIgPSAwOworICAgIGRlbGV0
ZSBkOworICAgIGQgPSAwOworfQorCit2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6Om9w
ZXJhdG9yKCkoKQoreworICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKGQtPnRpbWVy
LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIDIpOworfQorCit9CisKKyNlbmRpZgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkocmV2aXNpb24gNjMxNDkpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDEy
IEBAIEpTTG9jazo6SlNMb2NrKEV4ZWNTdGF0ZSogZXhlYykKICAgICBsb2NrKG1fbG9ja0JlaGF2
aW9yKTsKIH0KIAorSlNMb2NrOjpKU0xvY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorICAg
IDogbV9sb2NrQmVoYXZpb3IoZ2xvYmFsRGF0YS0+aXNTaGFyZWRJbnN0YW5jZSgpID8gTG9ja0Zv
clJlYWwgOiBTaWxlbmNlQXNzZXJ0aW9uc09ubHkpCit7CisgICAgbG9jayhtX2xvY2tCZWhhdmlv
cik7Cit9CisKIHZvaWQgSlNMb2NrOjpsb2NrKEpTTG9ja0JlaGF2aW9yIGxvY2tCZWhhdmlvcikK
IHsKICNpZmRlZiBOREVCVUcKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNpb24g
NjMxNDkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSwxMiArNDksMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gYXNzZXJ0aW9ucyB3
b3JraW5nLCBzbyB0aGF0IGNsaWVudHMgdGhhdCB1c2UgdGhlIHNoYXJlZCBjb250ZXh0IGRvbid0
IGJyZWFrLgogCiAgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsK
IAogICAgIGVudW0gSlNMb2NrQmVoYXZpb3IgeyBTaWxlbmNlQXNzZXJ0aW9uc09ubHksIExvY2tG
b3JSZWFsIH07CiAKICAgICBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAg
IHB1YmxpYzoKICAgICAgICAgSlNMb2NrKEV4ZWNTdGF0ZSopOworICAgICAgICBKU0xvY2soSlNH
bG9iYWxEYXRhKik7CiAKICAgICAgICAgSlNMb2NrKEpTTG9ja0JlaGF2aW9yIGxvY2tCZWhhdmlv
cikKICAgICAgICAgICAgIDogbV9sb2NrQmVoYXZpb3IobG9ja0JlaGF2aW9yKQpJbmRleDogV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDYzMTc3KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MCBAQAorMjAxMC0wNy0xMiAgTmF0aGFuIExhd3JlbmNlICA8bmxhd3JlbmNlQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEzMTgKKyAgICAgICAgV2ViS2l0IHJl
Z2lzdGVycyBhIHRpbWVyIHRvIHRoZSBKU0MgR0MgdGhhdCB0cmlnZ2VycyBhIGZ1bGwgZ2FyYmFn
ZQorICAgICAgICBjb2xsZWN0aW9uIGFmdGVyIDIgc2Vjb25kcyBvZiBpbmFjdGl2aXR5LgorCisg
ICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaDog
QWRkZWQuCisgICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RTb29uKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvcmVHQ0FjdGl2aXR5Q2FsbGJhY2s6On5XZWJDb3JlR0NBY3Rpdml0eUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVHQ0FjdGl2aXR5Q2FsbGJhY2s6Om9wZXJh
dG9yKCkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Omlu
aXROb3JtYWxXb3JsZENsaWVudERhdGEpOgorCiAyMDEwLTA3LTEyICBNaWhuZWEgT3ZpZGVuZWEg
IDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4K
SW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJh
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvR0NB
Y3Rpdml0eUNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9HQ0FjdGl2aXR5Q2FsbGJhY2tfaAorI2RlZmluZSBX
ZWJDb3JlX0ZXRF9HQ0FjdGl2aXR5Q2FsbGJhY2tfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0dDQWN0aXZpdHlDYWxsYmFjay5oPgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0dDQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0Nv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2MzE0OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvR0ND
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTAgKzU4LDEwIEBAIEdDQ29udHJv
bGxlcjo6R0NDb250cm9sbGVyKCkKIHsKIH0KIAotdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VD
b2xsZWN0U29vbigpCit2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RTb29uKHVuc2ln
bmVkIHRpbWUpCiB7CiAgICAgaWYgKCFtX0dDVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9H
Q1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICAgICAgbV9HQ1RpbWVyLnN0YXJ0T25lU2hvdCh0
aW1lKTsKIH0KIAogdm9pZCBHQ0NvbnRyb2xsZXI6OmdjVGltZXJGaXJlZChUaW1lcjxHQ0NvbnRy
b2xsZXI+KikKQEAgLTg3LDQgKzg3LDEzIEBAIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29s
bGVjdE9uQWx0ZXIKICNlbmRpZgogfQogCitXZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNrOjp+V2Vi
Q29yZUdDQWN0aXZpdHlDYWxsYmFjaygpCit7Cit9CisKK3ZvaWQgV2ViQ29yZUdDQWN0aXZpdHlD
YWxsYmFjazo6b3BlcmF0b3IoKSgpCit7CisgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxl
Y3RTb29uKDIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvR0NDb250cm9sbGVyLmgJKHJldmlzaW9uIDYzMTQ5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9HQ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRl
ZiBHQ0NvbnRyb2xsZXJfaAogI2RlZmluZSBHQ0NvbnRyb2xsZXJfaAogCisjaW5jbHVkZSA8cnVu
dGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlICJUaW1lci5oIgogCkBAIC0zNSw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgZnJpZW5kIEdDQ29udHJvbGxlciYgZ2NDb250cm9sbGVyKCk7CiAKICAgICBw
dWJsaWM6Ci0gICAgICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RTb29uKCk7CisgICAgICAgIHZvaWQg
Z2FyYmFnZUNvbGxlY3RTb29uKHVuc2lnbmVkIHRpbWUgPSAwKTsKICAgICAgICAgdm9pZCBnYXJi
YWdlQ29sbGVjdE5vdygpOyAvLyBJdCdzIGJldHRlciB0byBjYWxsIGdhcmJhZ2VDb2xsZWN0U29v
biwgdW5sZXNzIHlvdSBoYXZlIGEgc3BlY2lmaWMgcmVhc29uIG5vdCB0by4KIAogICAgICAgICB2
b2lkIGdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcoYm9vbCB3YWl0
VW50aWxEb25lKTsgLy8gVXNlZCBmb3Igc3RyZXNzIHRlc3RpbmcuCkBAIC00Nyw2ICs0OCwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFRpbWVyPEdDQ29udHJvbGxlcj4gbV9HQ1Rp
bWVyOwogICAgIH07CiAKKyAgICBjbGFzcyBXZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVi
bGljIEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIH5XZWJD
b3JlR0NBY3Rpdml0eUNhbGxiYWNrKCk7CisgICAgICAgIHZvaWQgb3BlcmF0b3IoKSgpOworICAg
IH07CisKICAgICAvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBHQyBjb250cm9sbGVy
LgogICAgIEdDQ29udHJvbGxlciYgZ2NDb250cm9sbGVyKCk7CiAKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCShyZXZpc2lvbiA2MzE0OSkKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJE
T01PYmplY3RIYXNoVGFibGVNYXAuaCIKKyNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTczLDYgKzc0LDcgQEAgaW5saW5lIHZvaWQgaW5pdE5vcm1h
bFdvcmxkQ2xpZW50RGF0YShKUwogewogICAgIFdlYkNvcmVKU0NsaWVudERhdGEqIHdlYkNvcmVK
U0NsaWVudERhdGEgPSBuZXcgV2ViQ29yZUpTQ2xpZW50RGF0YTsKICAgICBnbG9iYWxEYXRhLT5j
bGllbnREYXRhID0gd2ViQ29yZUpTQ2xpZW50RGF0YTsgLy8gfkpTR2xvYmFsRGF0YSBkZWxldGVz
IHRoaXMgcG9pbnRlci4KKyAgICBnbG9iYWxEYXRhLT5oZWFwLnNldEFjdGl2aXR5Q2FsbGJhY2so
bmV3IFdlYkNvcmVHQ0FjdGl2aXR5Q2FsbGJhY2soKSk7CiAgICAgd2ViQ29yZUpTQ2xpZW50RGF0
YS0+bV9ub3JtYWxXb3JsZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKGdsb2JhbERhdGEsIHRy
dWUpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61411</attachid>
            <date>2010-07-13 13:36:51 -0700</date>
            <delta_ts>2010-07-22 14:40:58 -0700</delta_ts>
            <desc>Patch (with smart pointers)</desc>
            <filename>gc-timer.patch</filename>
            <type>text/plain</type>
            <size>25761</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzMTc3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMDctMTIgIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQxMzE4CisKKyAgICAgICAgQWRkZWQgYSBjYWxsYmFjayBpbiBKYXZhU2NyaXB0Q29y
ZSB0aGF0IGdldHMgdHJpZ2dlcmVkIGFmdGVyIGFuCisgICAgICAgIGFsbG9jYXRpb24gY2F1c2Vz
IHRoZSBoZWFwIHRvIHJlc2V0LiAgVGhpcyBpcyB1c2VmdWwgZm9yIGFkZGluZyBhCisgICAgICAg
IHRpbWVyIHRoYXQgd2lsbCB0cmlnZ2VyIGdhcmJhZ2UgY29sbGVjdGlvbiBhZnRlciB0aGUgImxh
c3QiCisgICAgICAgIGFsbG9jYXRpb24uCisKKyAgICAgICAgQWxzbyBuZWVkZWQgd2FzIHRvIGFk
ZCBsb2NrIGFuZCB1bmxvY2sgbWV0aG9kcyB0byBKU0xvY2sgdGhhdCBuZWVkZWQKKyAgICAgICAg
b25seSBhIEpTR2xvYmFsRGF0YSBvYmplY3QgdmVyc3VzIGFuIEV4ZWNTdGF0ZSBvYmplY3QuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBy
bzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9Db2xsZWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmFsbG9jYXRlKToKKyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rvci5oOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKiBydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAg
KEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6fkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJh
Y2spOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpvcGVyYXRvcigp
KToKKyAgICAgICAgKiBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjp+R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAg
ICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2tEYXRhOjp0cmlnZ2VyKToKKyAgICAgICAgKEpTQzo6RGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAg
IChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6On5EZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrKToKKyAgICAgICAgKEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6b3BlcmF0b3Io
KSk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suY3BwOgorICAgICAgICAoSlNDOjpKU0xvY2s6
OkpTTG9jayk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKwogMjAxMC0wNy0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZy
ZXkgR2FyZW4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNjMxNDkpCisrKyBK
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEw
Nyw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9FeGVjdXRhYmxl
LmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAog
ICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAogICAgIHJ1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0
aW9uLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiA2MzE0OSkKKysrIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjUsNiArMjY1LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCUph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKIAlKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCisJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0Fj
dGl2aXR5Q2FsbGJhY2suaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
Y3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oIFwKIAlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAgXApJbmRleDogSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gNjMxNDkpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYsNyBAQCBfX1pOM0pT
QzRIZWFwMTZvYmplY3RUeXBlQ291bnRzRXYKIF9fWk4zSlNDNEhlYXAxNnByaW1hcnlIZWFwQmVn
aW5FdgogX19aTjNKU0M0SGVhcDE3Y29sbGVjdEFsbEdhcmJhZ2VFdgogX19aTjNKU0M0SGVhcDE3
Z2xvYmFsT2JqZWN0Q291bnRFdgorX19aTjNKU0M0SGVhcDE5c2V0QWN0aXZpdHlDYWxsYmFja0VO
M1dURjEwUGFzc093blB0cklOU18xOEdDQWN0aXZpdHlDYWxsYmFja0VFRQogX19aTjNKU0M0SGVh
cDIwcHJvdGVjdGVkT2JqZWN0Q291bnRFdgogX19aTjNKU0M0SGVhcDI1cHJvdGVjdGVkT2JqZWN0
VHlwZUNvdW50c0V2CiBfX1pOM0pTQzRIZWFwMjZwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudEV2
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHJldmlzaW9uIDYzMTQ5KQorKysg
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjE2
LDYgKzIxNiw4IEBACiAgICAgICAgICAgICAncnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgn
LAogICAgICAgICAgICAgJ3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwJywKICAgICAgICAg
ICAgICdydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgnLAorICAgICAgICAgICAgJ3J1bnRpbWUv
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcCcsCisgICAgICAgICAgICAncnVudGltZS9HQ0FjdGl2aXR5
Q2FsbGJhY2suaCcsCiAgICAgICAgICAgICAncnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwJywKICAg
ICAgICAgICAgICdydW50aW1lL0dldHRlclNldHRlci5oJywKICAgICAgICAgICAgICdydW50aW1l
L0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAnLApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBy
bwkocmV2aXNpb24gNjMxNDkpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8J
KHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBydW50
aW1lL0V4ZWN1dGFibGUuY3BwIFwKICAgICBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
IFwKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9HQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwIFwKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAgXAogICAg
IHJ1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCBcCiAgICAgcnVudGltZS9JZGVudGlmaWVy
LmNwcCBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2oJKHJldmlzaW9uIDYzMTQ5KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtNzA5LDYgKzcwOSwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XHJ1bnRpbWVcR0NBY3Rpdml0eUNhbGxiYWNrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEdldHRlclNldHRlci5jcHAi
DQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2MzE0
OSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUwNiw2ICs1MDYsOCBAQAogCQlCQ0ZEOEM5MjBFRUIy
RUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUu
Y3BwICovOyB9OwogCQlCQ0ZEOEM5MzBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZEOEM5MTBFRUIy
RUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi87IH07CiAJCUMwQTI3MjYzMEU1MEEwNjMwMEU5
NkUxNSAvKiBOb3RGb3VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzBBMjcyM0YwRTUwOUYxRTAwRTk2RTE1IC8qIE5vdEZvdW5kLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJREQwQjMwNjgxMUVCQjEx
RjAwNDlERjNEIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQwQjMwNjYxMUVCQjExRjAwNDlERjNEIC8qIEdDQWN0
aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUREMEIzMDY5MTFFQkIxMUYwMDQ5REYzRCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tD
Ri5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDBC
MzA2NzExRUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwICovOyB9Owog
CQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1MEU1NTU3NzUwMDMw
OTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUxMjRBOEY4MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0
cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTI0QThGNjBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovOyB9OwogCQlF
MTc4NjM2RDBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTc4NjM2QzBEOUJFRUMz
MDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi87IH07CkBAIC0xMDQ2LDYgKzEw
NDgsOCBAQAogCQlDMEEyNzIzRjBFNTA5RjFFMDBFOTZFMTUgLyogTm90Rm91bmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm90Rm91bmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDIxMjAyMjgwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlQ29udmVyc2lvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyMTIwMjI5MEFENDMxMEMwMEVENzlC
NiAvKiBEYXRlQ29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGF0ZUNvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREQwQjMwNjYx
MUVCQjExRjAwNDlERjNEIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJREQwQjMwNjcxMUVCQjExRjAwNDlERjNEIC8qIEdDQWN0aXZpdHlDYWxsYmFj
a0NGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlD
YWxsYmFja0NGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTExRDUxNzUwQjJF
Nzk4RDAwNTZDMTg4IC8qIFN0cmluZ0V4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJpbmdFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEy
NEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcGFxdWVKU1N0cmluZy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTUxLDYgKzE1NTUsOCBAQAogCQk3RUY2
RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJREQwQjMwNjYxMUVCQjExRjAwNDlERjNEIC8qIEdDQWN0
aXZpdHlDYWxsYmFjay5oICovLAorCQkJCUREMEIzMDY3MTFFQkIxMUYwMDQ5REYzRCAvKiBHQ0Fj
dGl2aXR5Q2FsbGJhY2tDRi5jcHAgKi8sCiAJCQkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8q
IFJlZ0V4cEtleS5oICovLAogCQkJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBD
YWNoZS5oICovLAogCQkJCUExNzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5j
cHAgKi8sCkBAIC0yMTg3LDYgKzIxOTMsNyBAQAogCQkJCUE3ODRBMjYzMTFEMTY2MjIwMDU3NzZB
QyAvKiBKU1BhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NEEyNjQxMUQxNjYyMjAwNTc3
NkFDIC8qIFN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RjE5RUNFMTFERDQ5
MDkwMDkzMUU3MCAvKiBGaXhlZEFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlERDBCMzA2ODEx
RUJCMTFGMDA0OURGM0QgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTI2MjcsNiArMjYzNCw3IEBACiAJCQkJQkMwMUQ0RjExMUE4RjFGRjAwQTU0QjJBIC8qIEpTWm9t
YmllLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNzEyQjNCMTFDN0IyMTIwMDdBNTMxNSAvKiBS
ZWdFeHBDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzg0QTI2MjExRDE2NjIyMDA1Nzc2
QUMgLyogSlNQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREQwQjMwNjkxMUVCQjExRjAw
NDlERjNEIC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gNjMxNDkpCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJHQ0FjdGl2aXR5
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXku
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtMTQzLDYgKzE0NCw4IEBAIEhlYXA6
OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgIEFTU0VSVChnbG9iYWxEYXRhKTsK
ICAgICBtZW1zZXQoJm1faGVhcCwgMCwgc2l6ZW9mKENvbGxlY3RvckhlYXApKTsKICAgICBhbGxv
Y2F0ZUJsb2NrKCk7CisgICAgbV9hY3Rpdml0eUNhbGxiYWNrID0gRGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjazo6Y3JlYXRlKHRoaXMpOworICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogfQog
CiBIZWFwOjp+SGVhcCgpCkBAIC00MDIsNiArNDA1LDcgQEAgYWxsb2NhdGU6CiAgICAgLy8gU2xv
dyBjYXNlOiByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGhlYXAuIE1hcmsgbGl2ZSBvYmplY3RzIGFu
ZCBzdGFydCBvdmVyLgogCiAgICAgcmVzZXQoKTsKKyAgICAoKm1fYWN0aXZpdHlDYWxsYmFjayko
KTsKICAgICBnb3RvIGFsbG9jYXRlOwogfQogCkBAIC0xMjYyLDYgKzEyNjYsMTEgQEAgdm9pZCBI
ZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSgpCiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7CiB9
CiAKK3ZvaWQgSGVhcDo6c2V0QWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZpdHlD
YWxsYmFjaz4gYWN0aXZpdHlDYWxsYmFjaykKK3sKKyAgICBtX2FjdGl2aXR5Q2FsbGJhY2sgPSBh
Y3Rpdml0eUNhbGxiYWNrOworfQorCiBMaXZlT2JqZWN0SXRlcmF0b3IgSGVhcDo6cHJpbWFyeUhl
YXBCZWdpbigpCiB7CiAgICAgcmV0dXJuIExpdmVPYmplY3RJdGVyYXRvcihtX2hlYXAsIDApOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCShyZXZpc2lvbiA2MzE0OSkKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nLmg+CiAKQEAgLTQ1LDYgKzQ2LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
Q29sbGVjdG9yQmxvY2s7CisgICAgY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogICAgIGNsYXNz
IEpTQ2VsbDsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKQEAg
LTgyLDYgKzg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBpc0J1c3koKTsg
Ly8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICAg
ICAgICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAgICB2b2lkIHNldEFjdGl2aXR5
Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+KTsKIAogICAgICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAyNDsKQEAgLTE2NSw2ICsxNjgsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4q
IG1fbWFya0xpc3RTZXQ7CiAKKyAgICAgICAgT3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9h
Y3Rpdml0eUNhbGxiYWNrOworCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAg
ICAgICB2b2lkIG1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJlYWRzKCk7CiAKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDAp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YSB7Cit9OworCitEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCit7Cit9CisKK0RlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6On5EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKCkKK3sKK30K
Kwordm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpvcGVyYXRvcigpKCkKK3sKK30KKwor
fQorCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgJ
KHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFj
ay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdDQWN0aXZpdHlD
YWxsYmFja19oCisjZGVmaW5lIEdDQWN0aXZpdHlDYWxsYmFja19oCisKKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEhlYXA7CisKK2NsYXNzIEdDQWN0aXZpdHlDYWxsYmFjayB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+R0NBY3Rpdml0eUNhbGxiYWNrKCkge30KKyAgICB2aXJ0dWFsIHZvaWQgb3Bl
cmF0b3IoKSgpIHt9CisKK3Byb3RlY3RlZDoKKyAgICBHQ0FjdGl2aXR5Q2FsbGJhY2soKSB7fQor
fTsKKworc3RydWN0IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tEYXRhOworCitjbGFzcyBEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gY3Jl
YXRlKEhlYXAqKTsKKworICAgIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOworICAg
IH5EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKCk7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoKTsK
KworcHJpdmF0ZToKKyAgICBPd25QdHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja0RhdGEqPiBk
OworfTsKKworaW5saW5lIFBhc3NPd25QdHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKEhlYXAqIGhlYXApCit7CisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKTsKK30KKworfQor
CisjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNr
Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNh
bGxiYWNrQ0YuY3BwCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0Fj
dGl2aXR5Q2FsbGJhY2tDRi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKKworI2lu
Y2x1ZGUgIkNvbGxlY3Rvci5oIgorI2luY2x1ZGUgIkpTTG9jay5oIgorCisjaWYgUExBVEZPUk0o
Q0YpCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK3N0cnVjdCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrRGF0YSB7CisgICAg
c3RhdGljIHZvaWQgdHJpZ2dlcihDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCAqaW5mbyk7CisKKyAg
ICBDRlJ1bkxvb3BUaW1lclJlZiB0aW1lcjsKKyAgICBDRlJ1bkxvb3BUaW1lckNvbnRleHQgY29u
dGV4dDsKK307CisKK2NvbnN0IENGVGltZUludGVydmFsIGRlY2FkZSA9IDYwICogNjAgKiAyNCAq
IDM2NSAqIDEwOworCit2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tEYXRhOjp0cmlnZ2Vy
KENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkICppbmZvKQoreworICAgIEhlYXAqIGhlYXAgPSBzdGF0
aWNfY2FzdDxIZWFwKj4oaW5mbyk7CisgICAgSlNMb2NrIGxvY2soaGVhcC0+Z2xvYmFsRGF0YSgp
KTsKKworICAgIGhlYXAtPmNvbGxlY3RBbGxHYXJiYWdlKCk7Cit9CisKK0RlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKK3sKKyAg
ICBkID0gYWRvcHRQdHIobmV3IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tEYXRhKTsKKworICAg
IG1lbXNldCgmZC0+Y29udGV4dCwgJ1wwJywgc2l6ZW9mKENGUnVuTG9vcFRpbWVyQ29udGV4dCkp
OworICAgIGQtPmNvbnRleHQuaW5mbyA9IGhlYXA7CisgICAgZC0+dGltZXIgPSBDRlJ1bkxvb3BU
aW1lckNyZWF0ZSgwLCBkZWNhZGUsIGRlY2FkZSwgMCwgMCwgRGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFja0RhdGE6OnRyaWdnZXIsICZkLT5jb250ZXh0KTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihD
RlJ1bkxvb3BHZXRDdXJyZW50KCksIGQtPnRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwor
fQorCitEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjp+RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
aygpCit7CisgICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBk
LT50aW1lciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICBDRlJ1bkxvb3BUaW1lckludmFs
aWRhdGUoZC0+dGltZXIpOworICAgIGQtPmNvbnRleHQuaW5mbyA9IDA7CisgICAgZC0+dGltZXIg
PSAwOworfQorCit2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6Om9wZXJhdG9yKCkoKQor
eworICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKGQtPnRpbWVyLCBDRkFic29sdXRl
VGltZUdldEN1cnJlbnQoKSArIDIpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMb2NrLmNwcAkocmV2aXNpb24gNjMxNDkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDEyIEBAIEpTTG9jazo6
SlNMb2NrKEV4ZWNTdGF0ZSogZXhlYykKICAgICBsb2NrKG1fbG9ja0JlaGF2aW9yKTsKIH0KIAor
SlNMb2NrOjpKU0xvY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorICAgIDogbV9sb2NrQmVo
YXZpb3IoZ2xvYmFsRGF0YS0+aXNTaGFyZWRJbnN0YW5jZSgpID8gTG9ja0ZvclJlYWwgOiBTaWxl
bmNlQXNzZXJ0aW9uc09ubHkpCit7CisgICAgbG9jayhtX2xvY2tCZWhhdmlvcik7Cit9CisKIHZv
aWQgSlNMb2NrOjpsb2NrKEpTTG9ja0JlaGF2aW9yIGxvY2tCZWhhdmlvcikKIHsKICNpZmRlZiBO
REVCVUcKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNpb24gNjMxNDkpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMiAr
NDksMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gYXNzZXJ0aW9ucyB3b3JraW5nLCBzbyB0
aGF0IGNsaWVudHMgdGhhdCB1c2UgdGhlIHNoYXJlZCBjb250ZXh0IGRvbid0IGJyZWFrLgogCiAg
ICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKIAogICAgIGVudW0g
SlNMb2NrQmVoYXZpb3IgeyBTaWxlbmNlQXNzZXJ0aW9uc09ubHksIExvY2tGb3JSZWFsIH07CiAK
ICAgICBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAg
ICAgICAgSlNMb2NrKEV4ZWNTdGF0ZSopOworICAgICAgICBKU0xvY2soSlNHbG9iYWxEYXRhKik7
CiAKICAgICAgICAgSlNMb2NrKEpTTG9ja0JlaGF2aW9yIGxvY2tCZWhhdmlvcikKICAgICAgICAg
ICAgIDogbV9sb2NrQmVoYXZpb3IobG9ja0JlaGF2aW9yKQpJbmRleDogV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzMTc3KQorKysg
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0w
Ny0xMiAgTmF0aGFuIExhd3JlbmNlICA8bmxhd3JlbmNlQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEzMTgKKyAgICAgICAgV2ViS2l0IHJlZ2lzdGVycyBhIHRp
bWVyIHRvIHRoZSBKU0MgR0MgdGhhdCB0cmlnZ2VycyBhIGZ1bGwgZ2FyYmFnZQorICAgICAgICBj
b2xsZWN0aW9uIGFmdGVyIDIgc2Vjb25kcyBvZiBpbmFjdGl2aXR5LgorCisgICAgICAgICogRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaDogQWRkZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdD
Q29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
cmVHQ0FjdGl2aXR5Q2FsbGJhY2s6On5XZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVHQ0FjdGl2aXR5Q2FsbGJhY2s6Om9wZXJhdG9yKCkpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXROb3JtYWxXb3Js
ZENsaWVudERhdGEpOgorCiAyMDEwLTA3LTEyICBNaWhuZWEgT3ZpZGVuZWEgIDxtaWhuZWFAYWRv
YmUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KSW5kZXg6IFdlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxi
YWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
R0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRl
ZiBXZWJDb3JlX0ZXRF9HQ0FjdGl2aXR5Q2FsbGJhY2tfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9H
Q0FjdGl2aXR5Q2FsbGJhY2tfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0aXZpdHlD
YWxsYmFjay5oPgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiA2MzE0OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTAgKzU4LDEwIEBAIEdDQ29udHJvbGxlcjo6R0NDb250
cm9sbGVyKCkKIHsKIH0KIAotdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0U29vbigp
Cit2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RTb29uKHVuc2lnbmVkIHRpbWUpCiB7
CiAgICAgaWYgKCFtX0dDVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9HQ1RpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKKyAgICAgICAgbV9HQ1RpbWVyLnN0YXJ0T25lU2hvdCh0aW1lKTsKIH0KIAog
dm9pZCBHQ0NvbnRyb2xsZXI6OmdjVGltZXJGaXJlZChUaW1lcjxHQ0NvbnRyb2xsZXI+KikKQEAg
LTg3LDQgKzg3LDEzIEBAIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE9uQWx0ZXIK
ICNlbmRpZgogfQogCitXZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNrOjp+V2ViQ29yZUdDQWN0aXZp
dHlDYWxsYmFjaygpCit7Cit9CisKK3ZvaWQgV2ViQ29yZUdDQWN0aXZpdHlDYWxsYmFjazo6b3Bl
cmF0b3IoKSgpCit7CisgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RTb29uKDIpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0dD
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9s
bGVyLmgJKHJldmlzaW9uIDYzMTQ5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBHQ0NvbnRyb2xs
ZXJfaAogI2RlZmluZSBHQ0NvbnRyb2xsZXJfaAogCisjaW5jbHVkZSA8cnVudGltZS9HQ0FjdGl2
aXR5Q2FsbGJhY2suaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlICJU
aW1lci5oIgogCkBAIC0zNSw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ZnJpZW5kIEdDQ29udHJvbGxlciYgZ2NDb250cm9sbGVyKCk7CiAKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RTb29uKCk7CisgICAgICAgIHZvaWQgZ2FyYmFnZUNvbGxl
Y3RTb29uKHVuc2lnbmVkIHRpbWUgPSAwKTsKICAgICAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdE5v
dygpOyAvLyBJdCdzIGJldHRlciB0byBjYWxsIGdhcmJhZ2VDb2xsZWN0U29vbiwgdW5sZXNzIHlv
dSBoYXZlIGEgc3BlY2lmaWMgcmVhc29uIG5vdCB0by4KIAogICAgICAgICB2b2lkIGdhcmJhZ2VD
b2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcoYm9vbCB3YWl0VW50aWxEb25lKTsg
Ly8gVXNlZCBmb3Igc3RyZXNzIHRlc3RpbmcuCkBAIC00Nyw2ICs0OCwxOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFRpbWVyPEdDQ29udHJvbGxlcj4gbV9HQ1RpbWVyOwogICAgIH07
CiAKKyAgICBjbGFzcyBXZWJDb3JlR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEpTQzo6R0NB
Y3Rpdml0eUNhbGxiYWNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRy
PFdlYkNvcmVHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZSgpOworICAgICAgICB+V2ViQ29yZUdD
QWN0aXZpdHlDYWxsYmFjaygpOworICAgICAgICB2b2lkIG9wZXJhdG9yKCkoKTsKKyAgICB9Owor
CisgICAgaW5saW5lIFBhc3NPd25QdHI8V2ViQ29yZUdDQWN0aXZpdHlDYWxsYmFjaz4gV2ViQ29y
ZUdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgV2ViQ29yZUdDQWN0aXZpdHlDYWxsYmFjayk7CisgICAgfQorCiAgICAgLy8gRnVu
Y3Rpb24gdG8gb2J0YWluIHRoZSBnbG9iYWwgR0MgY29udHJvbGxlci4KICAgICBHQ0NvbnRyb2xs
ZXImIGdjQ29udHJvbGxlcigpOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaAkocmV2aXNpb24gNjMxNDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVKU0NsaWVudERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAj
aW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRE9NT2JqZWN0SGFzaFRhYmxl
TWFwLmgiCisjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CkBAIC03Myw2ICs3NCw3IEBAIGlubGluZSB2b2lkIGluaXROb3JtYWxXb3JsZENsaWVudERhdGEo
SlMKIHsKICAgICBXZWJDb3JlSlNDbGllbnREYXRhKiB3ZWJDb3JlSlNDbGllbnREYXRhID0gbmV3
IFdlYkNvcmVKU0NsaWVudERhdGE7CiAgICAgZ2xvYmFsRGF0YS0+Y2xpZW50RGF0YSA9IHdlYkNv
cmVKU0NsaWVudERhdGE7IC8vIH5KU0dsb2JhbERhdGEgZGVsZXRlcyB0aGlzIHBvaW50ZXIuCisg
ICAgZ2xvYmFsRGF0YS0+aGVhcC5zZXRBY3Rpdml0eUNhbGxiYWNrKFdlYkNvcmVHQ0FjdGl2aXR5
Q2FsbGJhY2s6OmNyZWF0ZSgpKTsKICAgICB3ZWJDb3JlSlNDbGllbnREYXRhLT5tX25vcm1hbFdv
cmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoZ2xvYmFsRGF0YSwgdHJ1ZSk7CiB9CiAK
</data>
<flag name="review"
          id="49433"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62343</attachid>
            <date>2010-07-22 14:40:58 -0700</date>
            <delta_ts>2010-07-28 07:23:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>gc-timer.patch</filename>
            <type>text/plain</type>
            <size>22531</size>
            <attacher name="Nathan Lawrence">nlawrence</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzNzUwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDctMjAgIE5hdGhhbiBM
YXdyZW5jZSAgPG5sYXdyZW5jZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQxMzE4CisKKyAgICAgICAgQWRkZWQgYSBjYWxsYmFjayBpbiBKYXZhU2NyaXB0Q29y
ZSB0aGF0IGdldHMgdHJpZ2dlcmVkIGFmdGVyIGFuCisgICAgICAgIGFsbG9jYXRpb24gY2F1c2Vz
IHRoZSBoZWFwIHRvIHJlc2V0LiAgVGhpcyBpcyB1c2VmdWwgZm9yIGFkZGluZyBhCisgICAgICAg
IHRpbWVyIHRoYXQgd2lsbCB0cmlnZ2VyIGdhcmJhZ2UgY29sbGVjdGlvbiBhZnRlciB0aGUgImxh
c3QiIGFsbG9jYXRpb24uCisKKyAgICAgICAgQWxzbyBuZWVkZWQgd2FzIHRvIGFkZCBsb2NrIGFu
ZCB1bmxvY2sgbWV0aG9kcyB0byBKU0xvY2sgdGhhdCBuZWVkZWQKKyAgICAgICAgb25seSBhIEpT
R2xvYmFsRGF0YSBvYmplY3QgdmVyc3VzIGFuIEV4ZWNTdGF0ZSBvYmplY3QuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaToKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS5wcm86CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rvci5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6Okhl
YXApOgorICAgICAgICAoSlNDOjpIZWFwOjpyZXNldCk6CisgICAgICAgIChKU0M6OkhlYXA6OnNl
dEFjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayk6
CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6On5EZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6
b3BlcmF0b3IoKSk6CisgICAgICAgICogcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6fkdDQWN0aXZpdHlDYWxsYmFj
ayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6b3BlcmF0b3IoKSk6CisgICAg
ICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAg
ICAgKEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybURhdGE6OnRyaWdnZXIpOgorICAgICAgICAo
SlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
KToKKyAgICAgICAgKEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6fkRlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
OjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChK
U0M6OkpTTG9jazo6SlNMb2NrKToKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5oOgorCiAyMDEw
LTA3LTIwICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjM3NDIuCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gNjM3NDkpCisrKyBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgcnVudGltZS9FeGVjdXRhYmxlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRp
bWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAogICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAog
ICAgIHJ1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRpZmll
ci5jcHAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2Mzc0OSkKKysrIEphdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNiArMjY1LDgg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmggXAorCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCisJ
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaCBcCiAJSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dldHRlclNldHRlci5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV2YWxGdW5j
dGlvbi5jcHAgXApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gNjM3
NDkpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwNiw2ICsyMDYsNyBAQCBfX1pOM0pTQzRIZWFwMTZvYmplY3RUeXBlQ291bnRzRXYKIF9f
Wk4zSlNDNEhlYXAxNnByaW1hcnlIZWFwQmVnaW5FdgogX19aTjNKU0M0SGVhcDE3Y29sbGVjdEFs
bEdhcmJhZ2VFdgogX19aTjNKU0M0SGVhcDE3Z2xvYmFsT2JqZWN0Q291bnRFdgorX19aTjNKU0M0
SGVhcDE5c2V0QWN0aXZpdHlDYWxsYmFja0VOM1dURjEwUGFzc093blB0cklOU18xOEdDQWN0aXZp
dHlDYWxsYmFja0VFRQogX19aTjNKU0M0SGVhcDIwcHJvdGVjdGVkT2JqZWN0Q291bnRFdgogX19a
TjNKU0M0SGVhcDI1cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50c0V2CiBfX1pOM0pTQzRIZWFwMjZw
cm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudEV2CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkJKHJldmlzaW9uIDYzNzQ5KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjE2LDYgKzIxNiw4IEBACiAgICAgICAgICAgICAncnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwJywKICAgICAgICAgICAgICdydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmgnLAorICAgICAgICAgICAgJ3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCcsCisgICAg
ICAgICAgICAncnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaCcsCiAgICAgICAgICAgICAncnVu
dGltZS9HZXR0ZXJTZXR0ZXIuY3BwJywKICAgICAgICAgICAgICdydW50aW1lL0dldHRlclNldHRl
ci5oJywKICAgICAgICAgICAgICdydW50aW1lL0dsb2JhbEV2YWxGdW5jdGlvbi5jcHAnLApJbmRl
eDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkocmV2aXNpb24gNjM3NDkpCisrKyBKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBydW50aW1lL0V4ZWN1dGFibGUuY3BwIFwKICAgICBydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmNwcCBcCisgICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKICAgICBydW50
aW1lL0dldHRlclNldHRlci5jcHAgXAogICAgIHJ1bnRpbWUvR2xvYmFsRXZhbEZ1bmN0aW9uLmNw
cCBcCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcCBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDYzNzQ5KQorKysgSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzA5LDYgKzcwOSwxNCBAQAogCQkJCT4N
CiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1l
XEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcR0NBY3Rpdml0eUNhbGxiYWNrLmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXEdldHRlclNldHRlci5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpJbmRleDog
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA2Mzc0OSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUwNiw2
ICs1MDYsOCBAQAogCQlCQ0ZEOEM5MjBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkwMEVF
QjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovOyB9OwogCQlCQ0ZEOEM5MzBFRUIyRUU3
MDAyODM4NDggLyogSnVtcFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi87
IH07CiAJCUMwQTI3MjYzMEU1MEEwNjMwMEU5NkUxNSAvKiBOb3RGb3VuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBBMjcyM0YwRTUwOUYxRTAwRTk2
RTE1IC8qIE5vdEZvdW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRERGN0FCRDQxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERGN0FC
RDIxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyB9OworCQlEREY3
QUJENTExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERGN0FCRDMxMUY2MEVEMjAw
MTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCAqLzsgfTsKIAkJRTEyNEE4RjcwRTU1
NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVl
SlNTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMTI0QThGODBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjYwRTU1NTc3
NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLzsgfTsKIAkJRTE3ODYzNkQwRDlCRUVD
MzAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3ODYzNkMwRDlCRUVDMzAwRDc0RTc1IC8qIElu
aXRpYWxpemVUaHJlYWRpbmcuY3BwICovOyB9OwpAQCAtMTA0Niw2ICsxMDQ4LDggQEAKIAkJQzBB
MjcyM0YwRTUwOUYxRTAwRTk2RTE1IC8qIE5vdEZvdW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5vdEZvdW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQy
MTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZl
cnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb252ZXJzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURERjdBQkQyMTFGNjBFRDIwMDEwOEUz
NiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURE
RjdBQkQzMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMUQ1MTc1MEIyRTc5OEQwMDU2QzE4OCAv
KiBTdHJpbmdFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5n
RXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjRBOEY1MEU1NTU3NzUw
MDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBPcGFxdWVKU1N0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI0
QThGNjBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3BhcXVlSlNTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTU1MSw2ICsxNTU1LDggQEAKIAkJN0VGNkUwQkIwRUI3QTFFQzAw
NzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCURERjdBQkQyMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2su
aCAqLywKKwkJCQlEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNr
Q0YuY3BwICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAq
LywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJCUJD
MjU3REU1MEUxRjUxQzUwMDE2QjZDOSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtMjE4Nyw2ICsy
MTkzLDcgQEAKIAkJCQk4NjhCRkExODExN0NGMTk5MDBCOTA4QjEgLyogV1RGU3RyaW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NkQwOEQ1NDExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRERGN0FCRDQxMUY2MEVEMjAwMTA4RTM2IC8q
IEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjI3LDYgKzI2MzQsNyBA
QAogCQkJCUUxRUY3OUFBMENFOTdCQTYwMDg4RDUwMCAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2OEJGQTE3MTE3Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZEMDhENTMxMTc5MzYxMzAwNkU1RUQwIC8qIFdURlRocmVhZERhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRERGN0FCRDUxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZp
dHlDYWxsYmFja0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiA2Mzc0OSkKKysrIEphdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSwxMCArMjEx
LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICBlbWl0
RmFzdEFyaXRoSW1tVG9JbnQocmVnVDEpOwogI2VuZGlmCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKKyAgICAvLyBCRUdJTiBIT1QgQ09ERQogICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIEltbVB0cihtX2dsb2Jh
bERhdGEtPmpzQXJyYXlWUHRyKSkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JF
cXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU0FycmF5LCBtX3Zl
Y3Rvckxlbmd0aCkpKSk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZT
RVRPRihKU0FycmF5LCBtX3N0b3JhZ2UpKSwgcmVnVDIpOworICAgIC8vIEVORCBIT1QgQ09ERQog
CiAgICAgSnVtcCBlbXB0eSA9IGJyYW5jaFRlc3RQdHIoWmVybywgQmFzZUluZGV4KHJlZ1QyLCBy
ZWdUMSwgU2NhbGVQdHIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBd
KSkpOwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCShyZXZpc2lvbiA2
Mzc0OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbGxlY3RvckhlYXBJdGVyYXRvci5oIgorI2luY2x1
ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC0xNDMsNiAr
MTQ0LDggQEAgSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgQVNTRVJU
KGdsb2JhbERhdGEpOwogICAgIG1lbXNldCgmbV9oZWFwLCAwLCBzaXplb2YoQ29sbGVjdG9ySGVh
cCkpOwogICAgIGFsbG9jYXRlQmxvY2soKTsKKyAgICBtX2FjdGl2aXR5Q2FsbGJhY2sgPSBEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGUodGhpcyk7CisgICAgKCptX2FjdGl2aXR5Q2Fs
bGJhY2spKCk7CiB9CiAKIEhlYXA6On5IZWFwKCkKQEAgLTEyMzYsNiArMTIzOSw4IEBAIHZvaWQg
SGVhcDo6cmVzZXQoKQogICAgIHJlc2l6ZUJsb2NrcygpOwogCiAgICAgSkFWQVNDUklQVENPUkVf
R0NfRU5EKCk7CisKKyAgICAoKm1fYWN0aXZpdHlDYWxsYmFjaykoKTsKIH0KIAogdm9pZCBIZWFw
Ojpjb2xsZWN0QWxsR2FyYmFnZSgpCkBAIC0xMjcyLDQgKzEyNzcsOSBAQCBMaXZlT2JqZWN0SXRl
cmF0b3IgSGVhcDo6cHJpbWFyeUhlYXBFbmQoCiAgICAgcmV0dXJuIExpdmVPYmplY3RJdGVyYXRv
cihtX2hlYXAsIG1faGVhcC51c2VkQmxvY2tzKTsKIH0KIAordm9pZCBIZWFwOjpzZXRBY3Rpdml0
eUNhbGxiYWNrKFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBhY3Rpdml0eUNhbGxiYWNr
KQoreworICAgIG1fYWN0aXZpdHlDYWxsYmFjayA9IGFjdGl2aXR5Q2FsbGJhY2s7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCShyZXZp
c2lvbiA2Mzc0OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKQEAgLTQ1LDYgKzQ2LDcgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgQ29sbGVjdG9yQmxvY2s7CisgICAgY2xhc3MgR0NBY3Rpdml0eUNh
bGxiYWNrOwogICAgIGNsYXNzIEpTQ2VsbDsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAg
Y2xhc3MgSlNWYWx1ZTsKQEAgLTgyLDYgKzg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgYm9vbCBpc0J1c3koKTsgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24g
aXMgaW4gcHJvZ3Jlc3MKICAgICAgICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAg
ICB2b2lkIHNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+
KTsKIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsKICAg
ICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAyNDsKQEAg
LTE2NSw2ICsxNjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBIYXNoU2V0PE1hcmtl
ZEFyZ3VtZW50QnVmZmVyKj4qIG1fbWFya0xpc3RTZXQ7CiAKKyAgICAgICAgT3duUHRyPEdDQWN0
aXZpdHlDYWxsYmFjaz4gbV9hY3Rpdml0eUNhbGxiYWNrOworCiAjaWYgRU5BQkxFKEpTQ19NVUxU
SVBMRV9USFJFQURTKQogICAgICAgICB2b2lkIG1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJlYWRz
KCk7CiAKQEAgLTMwMyw3ICszMDgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbV9oZWFw
Lm5leHROdW1iZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4ocmVzdWx0KSArIChDRUxMX1NJWkUgLyAy
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYgLyogQ29sbGVjdG9yX2ggKi8KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJh
Y2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrUGxhdGZvcm1EYXRhIHsKK307CisKK0RlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKK3sKK30KKworRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjazo6fkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soKQoreworfQorCit2b2lkIERl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6Om9wZXJhdG9yKCkoKQoreworfQorCit9CisKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNpb24g
MCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR0NBY3Rpdml0eUNhbGxiYWNrX2gK
KyNkZWZpbmUgR0NBY3Rpdml0eUNhbGxiYWNrX2gKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
SGVhcDsKKworY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5HQ0FjdGl2aXR5Q2FsbGJhY2soKSB7fQorICAgIHZpcnR1YWwgdm9pZCBvcGVyYXRvcigpKCkg
e30KKworcHJvdGVjdGVkOgorICAgIEdDQWN0aXZpdHlDYWxsYmFjaygpIHt9Cit9OworCitzdHJ1
Y3QgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YTsKKworY2xhc3MgRGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2FsbGJhY2sgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0
ZShIZWFwKik7CisKKyAgICBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqKTsKKyAgICB+
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaygpOworCisgICAgdm9pZCBvcGVyYXRvcigpKCk7CisK
K3ByaXZhdGU6CisgICAgT3duUHRyPERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybURh
dGEqPiBkOworfTsKKworaW5saW5lIFBhc3NPd25QdHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
az4gRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKEhlYXAqIGhlYXApCit7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKTsKK30K
KworfQorCisjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNh
bGxiYWNrQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rp
dml0eUNhbGxiYWNrQ0YuY3BwCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIK
KworI2luY2x1ZGUgIkNvbGxlY3Rvci5oIgorI2luY2x1ZGUgIkpTTG9jay5oIgorCisjaWYgUExB
VEZPUk0oQ0YpCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZv
cm1EYXRhIHsKKyAgICBzdGF0aWMgdm9pZCB0cmlnZ2VyKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lk
ICppbmZvKTsKKworICAgIENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyOworICAgIENGUnVuTG9vcFRp
bWVyQ29udGV4dCBjb250ZXh0OworfTsKKworY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgZGVjYWRlID0g
NjAgKiA2MCAqIDI0ICogMzY1ICogMTA7CisKK3ZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
a1BsYXRmb3JtRGF0YTo6dHJpZ2dlcihDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCAqaW5mbykKK3sK
KyAgICBIZWFwKiBoZWFwID0gc3RhdGljX2Nhc3Q8SGVhcCo+KGluZm8pOworICAgIEpTTG9jayBs
b2NrKGhlYXAtPmdsb2JhbERhdGEoKSk7CisKKyAgICBoZWFwLT5jb2xsZWN0QWxsR2FyYmFnZSgp
OworfQorCitEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXApCit7CisgICAgZCA9IGFkb3B0UHRyKG5ldyBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrUGxhdGZvcm1EYXRhKTsKKworICAgIG1lbXNldCgmZC0+Y29udGV4dCwgJ1wwJywg
c2l6ZW9mKENGUnVuTG9vcFRpbWVyQ29udGV4dCkpOworICAgIGQtPmNvbnRleHQuaW5mbyA9IGhl
YXA7CisgICAgZC0+dGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBkZWNhZGUsIGRlY2Fk
ZSwgMCwgMCwgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YTo6dHJpZ2dlciwg
JmQtPmNvbnRleHQpOworICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQo
KSwgZC0+dGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cit9CisKK0RlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2s6On5EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKCkKK3sKKyAgICBDRlJ1bkxv
b3BSZW1vdmVUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGQtPnRpbWVyLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShkLT50aW1lcik7Cisg
ICAgZC0+Y29udGV4dC5pbmZvID0gMDsKKyAgICBkLT50aW1lciA9IDA7Cit9CisKK3ZvaWQgRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6b3BlcmF0b3IoKSgpCit7CisgICAgQ0ZSdW5Mb29wVGlt
ZXJTZXROZXh0RmlyZURhdGUoZC0+dGltZXIsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsg
Mik7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShy
ZXZpc2lvbiA2Mzc0OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTIgQEAgSlNMb2NrOjpKU0xvY2soRXhlY1N0YXRlKiBl
eGVjKQogICAgIGxvY2sobV9sb2NrQmVoYXZpb3IpOwogfQogCitKU0xvY2s6OkpTTG9jayhKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEpCisgICAgOiBtX2xvY2tCZWhhdmlvcihnbG9iYWxEYXRhLT5p
c1NoYXJlZEluc3RhbmNlKCkgPyBMb2NrRm9yUmVhbCA6IFNpbGVuY2VBc3NlcnRpb25zT25seSkK
K3sKKyAgICBsb2NrKG1fbG9ja0JlaGF2aW9yKTsKK30KKwogdm9pZCBKU0xvY2s6OmxvY2soSlNM
b2NrQmVoYXZpb3IgbG9ja0JlaGF2aW9yKQogewogI2lmZGVmIE5ERUJVRwpJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5oCShyZXZpc2lvbiA2Mzc0OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEyICs0OSwxNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAvLyBhc3NlcnRpb25zIHdvcmtpbmcsIHNvIHRoYXQgY2xpZW50cyB0aGF0IHVz
ZSB0aGUgc2hhcmVkIGNvbnRleHQgZG9uJ3QgYnJlYWsuCiAKICAgICBjbGFzcyBFeGVjU3RhdGU7
CisgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogCiAgICAgZW51bSBKU0xvY2tCZWhhdmlvciB7IFNp
bGVuY2VBc3NlcnRpb25zT25seSwgTG9ja0ZvclJlYWwgfTsKIAogICAgIGNsYXNzIEpTTG9jayA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBKU0xvY2soRXhlY1N0
YXRlKik7CisgICAgICAgIEpTTG9jayhKU0dsb2JhbERhdGEqKTsKIAogICAgICAgICBKU0xvY2so
SlNMb2NrQmVoYXZpb3IgbG9ja0JlaGF2aW9yKQogICAgICAgICAgICAgOiBtX2xvY2tCZWhhdmlv
cihsb2NrQmVoYXZpb3IpCg==
</data>
<flag name="review"
          id="50524"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="51004"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>