<?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>59741</bug_id>
          
          <creation_ts>2011-04-28 14:36:53 -0700</creation_ts>
          <short_desc>Chromium Mac: Add scrollbar overlay drawing functions</short_desc>
          <delta_ts>2011-05-02 10:56:07 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>59728</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Sailesh Agrawal">sail</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jamesr</cc>
    
    <cc>mihaip</cc>
    
    <cc>rsesek</cc>
    
    <cc>thakis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>394759</commentid>
    <comment_count>0</comment_count>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-04-28 14:36:53 -0700</bug_when>
    <thetext>Chromium Mac: Add scrollbar overlay drawing functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394761</commentid>
    <comment_count>1</comment_count>
      <attachid>91560</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-04-28 14:38:05 -0700</bug_when>
    <thetext>Created attachment 91560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394780</commentid>
    <comment_count>2</comment_count>
      <attachid>91562</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-04-28 14:55:11 -0700</bug_when>
    <thetext>Created attachment 91562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394789</commentid>
    <comment_count>3</comment_count>
      <attachid>91562</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-04-28 15:04:36 -0700</bug_when>
    <thetext>Comment on attachment 91562
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=91562&amp;action=review

I think this looks fine. I&apos;m not a reviewer, though.

&gt; Source/WebCore/platform/chromium/ScrollbarOverlayUtilitiesMac.mm:38
&gt; +// we lookup at runtime. If the private APIs don&apos;t exist then the wkMake*

s/lookup/look up/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394877</commentid>
    <comment_count>4</comment_count>
      <attachid>91562</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-04-28 16:17:32 -0700</bug_when>
    <thetext>Comment on attachment 91562
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=91562&amp;action=review

&gt; Source/WebCore/platform/chromium/ScrollbarOverlayUtilitiesMac.mm:36
&gt; +// This file contains utilities to draw overlay scrollbars. There are no plublic

s/plublic/public/.

&gt; Source/WebCore/platform/chromium/ScrollbarOverlayUtilitiesMac.mm:106
&gt; +static Class LookUpNSScrollerImpClass() {

There&apos;s a quite a few WebKit style issues here:
- opening brace should be on its own line for function definitions.
- The first letter does not need to be capitalized.
- Indents should be 4 spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394889</commentid>
    <comment_count>5</comment_count>
      <attachid>91585</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-04-28 16:27:04 -0700</bug_when>
    <thetext>Created attachment 91585
Addressed review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394892</commentid>
    <comment_count>6</comment_count>
      <attachid>91562</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-04-28 16:27:45 -0700</bug_when>
    <thetext>Comment on attachment 91562
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=91562&amp;action=review

&gt;&gt; Source/WebCore/platform/chromium/ScrollbarOverlayUtilitiesMac.mm:36
&gt;&gt; +// This file contains utilities to draw overlay scrollbars. There are no plublic
&gt; 
&gt; s/plublic/public/.

Fixed.

&gt;&gt; Source/WebCore/platform/chromium/ScrollbarOverlayUtilitiesMac.mm:38
&gt;&gt; +// we lookup at runtime. If the private APIs don&apos;t exist then the wkMake*
&gt; 
&gt; s/lookup/look up/

Fixed.

&gt;&gt; Source/WebCore/platform/chromium/ScrollbarOverlayUtilitiesMac.mm:106
&gt;&gt; +static Class LookUpNSScrollerImpClass() {
&gt; 
&gt; There&apos;s a quite a few WebKit style issues here:
&gt; - opening brace should be on its own line for function definitions.
&gt; - The first letter does not need to be capitalized.
&gt; - Indents should be 4 spaces.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394900</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-28 16:38:37 -0700</bug_when>
    <thetext>Mark the patch review? if you would like it reviewed.  Also, when uploading a new patch you should obsolete any patches it replaces.

webkit-patch upload will take care of this for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395483</commentid>
    <comment_count>8</comment_count>
      <attachid>91727</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-04-29 14:00:15 -0700</bug_when>
    <thetext>Created attachment 91727
Fixed some bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395506</commentid>
    <comment_count>9</comment_count>
      <attachid>91735</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-04-29 14:14:00 -0700</bug_when>
    <thetext>Created attachment 91735
Updated change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396471</commentid>
    <comment_count>10</comment_count>
      <attachid>91735</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-02 10:56:01 -0700</bug_when>
    <thetext>Comment on attachment 91735
Updated change log.

Clearing flags on attachment: 91735

Committed r85492: &lt;http://trac.webkit.org/changeset/85492&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396472</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-02 10:56:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91560</attachid>
            <date>2011-04-28 14:38:05 -0700</date>
            <delta_ts>2011-04-28 14:55:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59741-20110428143804.patch</filename>
            <type>text/plain</type>
            <size>19252</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ5MzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYzgzZmFhYjE1M2ZiODg3
ODlmNWM0NzhmNDFjNjE3ZDJjMTNkZmZjLi4xNTVjZWVkMGU1ODI4ZTI2YmY1NTU5MTY1Yzg4OTJm
YjEzNTAxZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDQtMjggIFNhaWxl
c2ggQWdyYXdhbCAgPHNhaWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9taXVtIE1hYzogQWRkIHNjcm9sbGJhciBvdmVy
bGF5IGRyYXdpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01OTc0MQorCisgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgc2ltcGx5
IGNvcGllZCBmcm9tIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuIFRoZXNlIHdpbGwgYmUgdXNlZCB0
byBpbXBsZW1lbnQgb3ZlcmxheSBzY3JvbGxiYXJzIGZvciBDaHJvbWl1bSBNYWMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWMubW06IEFkZGVkLgorICAgICAg
ICAoTG9va1VwTlNTY3JvbGxlckltcENsYXNzKToKKyAgICAgICAgKExvb2tVcE5TU2Nyb2xsZXJJ
bXBQYWlyQ2xhc3MpOgorICAgICAgICAoU2Nyb2xsYmFyQ29udHJvbFNpemVUb05TQ29udHJvbFNp
emUpOgorICAgICAgICAod2tTY3JvbGxiYXJQYWludGVyVXNlc092ZXJsYXlTY3JvbGxlcnMpOgor
ICAgICAgICAod2tTY3JvbGxiYXJQYWludGVySXNIb3Jpem9udGFsKToKKyAgICAgICAgKHdrU2Ny
b2xsYmFyUGFpbnRlcktub2JBbHBoYSk6CisgICAgICAgICh3a1Njcm9sbGJhclBhaW50ZXJTZXRP
dmVybGF5U3RhdGUpOgorICAgICAgICAod2tTY3JvbGxiYXJQYWludGVyUGFpbnQpOgorICAgICAg
ICAod2tTY3JvbGxiYXJNaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAod2tTY3JvbGxiYXJQ
YWludGVyU2V0RGVsZWdhdGUpOgorICAgICAgICAod2tTY3JvbGxiYXJQYWludGVyVHJhY2tBbHBo
YSk6CisgICAgICAgICh3a01ha2VTY3JvbGxiYXJQYWludGVyKToKKyAgICAgICAgKHdrU2Nyb2xs
YmFyVGhpY2tuZXNzKToKKyAgICAgICAgKHdrU2Nyb2xsYmFyTWluaW11bVRvdGFsTGVuZ3RoTmVl
ZGVkRm9yVGh1bWIpOgorICAgICAgICAod2tWZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXJGb3JDb250
cm9sbGVyKToKKyAgICAgICAgKHdrSG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXJGb3JDb250cm9s
bGVyKToKKyAgICAgICAgKHdrTWFrZVNjcm9sbGJhclJlcGxhY2VtZW50UGFpbnRlcik6CisgICAg
ICAgICh3a1NldFBhaW50ZXJGb3JQYWludGVyQ29udHJvbGxlcik6CisgICAgICAgICh3a1NldFNj
cm9sbGJhclBhaW50ZXJDb250cm9sbGVyU3R5bGUpOgorICAgICAgICAod2tTY3JvbGxiYXJQYWlu
dGVyS25vYlJlY3QpOgorICAgICAgICAod2tTZXRTY3JvbGxiYXJQYWludGVyS25vYkFscGhhKToK
KyAgICAgICAgKHdrU2V0U2Nyb2xsYmFyUGFpbnRlclRyYWNrQWxwaGEpOgorICAgICAgICAod2tT
ZXRTY3JvbGxiYXJQYWludGVyS25vYlN0eWxlKToKKyAgICAgICAgKHdrTWFrZVNjcm9sbGJhclBh
aW50ZXJDb250cm9sbGVyKToKKyAgICAgICAgKHdrQ29udGVudEFyZWFTY3JvbGxlZCk6CisgICAg
ICAgICh3a0NvbnRlbnRBcmVhV2lsbFBhaW50KToKKyAgICAgICAgKHdrTW91c2VFbnRlcmVkQ29u
dGVudEFyZWEpOgorICAgICAgICAod2tNb3VzZUV4aXRlZENvbnRlbnRBcmVhKToKKyAgICAgICAg
KHdrTW91c2VNb3ZlZEluQ29udGVudEFyZWEpOgorICAgICAgICAod2tXaWxsU3RhcnRMaXZlUmVz
aXplKToKKyAgICAgICAgKHdrQ29udGVudEFyZWFSZXNpemVkKToKKyAgICAgICAgKHdrV2lsbEVu
ZExpdmVSZXNpemUpOgorICAgICAgICAod2tDb250ZW50QXJlYURpZFNob3cpOgorICAgICAgICAo
d2tDb250ZW50QXJlYURpZEhpZGUpOgorICAgICAgICAod2tEaWRCZWdpblNjcm9sbEdlc3R1cmUp
OgorICAgICAgICAod2tEaWRFbmRTY3JvbGxHZXN0dXJlKToKKyAgICAgICAgKHdrU2Nyb2xsYmFy
UGFpbnRlckZvcmNlRmxhc2hTY3JvbGxlcnMpOgorICAgICAgICAoSXNTY3JvbGxiYXJPdmVybGF5
QVBJQXZhaWxhYmxlKToKKwogMjAxMS0wNC0yNSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGll
c01hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3Zlcmxh
eVV0aWxpdGllc01hYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1MWJkYWE3OTQ1YjkwZWRiYjg4YzMxMTg3NzJm
NWYyYjcyMTcyMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLmgKQEAgLTAsMCArMSwxMDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIFNjcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWNfaAorI2RlZmluZSBTY3JvbGxiYXJPdmVy
bGF5VXRpbGl0aWVzTWFjX2gKKworI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKKworLy8g
UHVibGljIEFQSXMgbm90IGF2YWlsYWJsZSBvbiB2ZXJzaW9ucyBvZiBNYWMgb24gd2hpY2ggd2Ug
YnVpbGQKKyNpZiAoZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSB8fCBkZWZpbmVkKEJVSUxE
SU5HX09OX1NOT1dfTEVPUEFSRCkpCitlbnVtIHsKKyAgICBOU1Njcm9sbGVyU3R5bGVMZWdhY3kg
ICAgICAgPSAwLAorICAgIE5TU2Nyb2xsZXJTdHlsZU92ZXJsYXkgICAgICA9IDEKK307Cit0eXBl
ZGVmIE5TSW50ZWdlciBOU1Njcm9sbGVyU3R5bGU7CisjZW5kaWYKKworI2lmZGVmIF9fT0JKQ19f
CitAY2xhc3MgTlNTY3JvbGxlckltcDsKK0BjbGFzcyBOU1Njcm9sbGVySW1wUGFpcjsKKyNlbHNl
CitjbGFzcyBOU1Njcm9sbGVySW1wOworY2xhc3MgTlNTY3JvbGxlckltcFBhaXI7CisjZW5kaWYK
KwordHlwZWRlZiBOU1Njcm9sbGVySW1wKiBXS1Njcm9sbGJhclBhaW50ZXJSZWY7Cit0eXBlZGVm
IE5TU2Nyb2xsZXJJbXBQYWlyKiBXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmOworCiti
b29sIElzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpOworCisvLyBTY3JvbGxiYXIgUGFp
bnRlcgorYm9vbCB3a1Njcm9sbGJhclBhaW50ZXJVc2VzT3ZlcmxheVNjcm9sbGVycyh2b2lkKTsK
K2Jvb2wgd2tTY3JvbGxiYXJQYWludGVySXNIb3Jpem9udGFsKFdLU2Nyb2xsYmFyUGFpbnRlclJl
Zik7CitDR0Zsb2F0IHdrU2Nyb2xsYmFyUGFpbnRlcktub2JBbHBoYShXS1Njcm9sbGJhclBhaW50
ZXJSZWYpOwordm9pZCB3a1Njcm9sbGJhclBhaW50ZXJTZXRPdmVybGF5U3RhdGUoV0tTY3JvbGxi
YXJQYWludGVyUmVmLCBpbnQgb3ZlcmxheVNjcm9sbGVyU3RhdGUpOwordm9pZCB3a1Njcm9sbGJh
clBhaW50ZXJQYWludChXS1Njcm9sbGJhclBhaW50ZXJSZWYsIGJvb2wgZW5hYmxlZCwgZG91Ymxl
IHZhbHVlLCBDR0Zsb2F0IHByb3BvcnRpb24sIE5TUmVjdCBmcmFtZVJlY3QpOworaW50IHdrU2Ny
b2xsYmFyTWluaW11bVRodW1iTGVuZ3RoKFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7Cit2b2lkIHdr
U2Nyb2xsYmFyUGFpbnRlclNldERlbGVnYXRlKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiwgaWQgc2Ny
b2xsYmFyUGFpbnRlckRlbGVnYXRlKTsKK0NHRmxvYXQgd2tTY3JvbGxiYXJQYWludGVyVHJhY2tB
bHBoYShXS1Njcm9sbGJhclBhaW50ZXJSZWYpOworV0tTY3JvbGxiYXJQYWludGVyUmVmIHdrTWFr
ZVNjcm9sbGJhclBhaW50ZXIoaW50IGNvbnRyb2xTaXplLCBib29sIGlzSG9yaXpvbnRhbCk7Citp
bnQgd2tTY3JvbGxiYXJUaGlja25lc3MoaW50IGNvbnRyb2xTaXplKTsKK2ludCB3a1Njcm9sbGJh
ck1pbmltdW1Ub3RhbExlbmd0aE5lZWRlZEZvclRodW1iKFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7
CitDR1JlY3Qgd2tTY3JvbGxiYXJQYWludGVyS25vYlJlY3QoV0tTY3JvbGxiYXJQYWludGVyUmVm
KTsKK1dLU2Nyb2xsYmFyUGFpbnRlclJlZiB3a01ha2VTY3JvbGxiYXJSZXBsYWNlbWVudFBhaW50
ZXIoV0tTY3JvbGxiYXJQYWludGVyUmVmIG9sZFBhaW50ZXIsIGludCBuZXdTdHlsZSwgaW50IGNv
bnRyb2xTaXplLCBib29sIGlzSG9yaXpvbnRhbCk7Cit2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRl
cktub2JBbHBoYShXS1Njcm9sbGJhclBhaW50ZXJSZWYsIENHRmxvYXQpOwordm9pZCB3a1NldFNj
cm9sbGJhclBhaW50ZXJUcmFja0FscGhhKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiwgQ0dGbG9hdCk7
CisKK2VudW0geworICAgIHdrU2Nyb2xsZXJLbm9iU3R5bGVEZWZhdWx0ID0gMCwKKyAgICB3a1Nj
cm9sbGVyS25vYlN0eWxlRGFyayA9IDEsCisgICAgd2tTY3JvbGxlcktub2JTdHlsZUxpZ2h0ID0g
MgorfTsKK3R5cGVkZWYgdWludDMyIHdrU2Nyb2xsZXJLbm9iU3R5bGU7CitleHRlcm4gdm9pZCB3
a1NldFNjcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUoV0tTY3JvbGxiYXJQYWludGVyUmVmLCB3a1Nj
cm9sbGVyS25vYlN0eWxlKTsKKworLy8gU2Nyb2xsYmFyIFBhaW50ZXIgQ29udHJvbGxlcgorV0tT
Y3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiB3a01ha2VTY3JvbGxiYXJQYWludGVyQ29udHJv
bGxlcihpZCBwYWludGVyQ29udHJvbGxlckRlbGVnYXRlKTsKK3ZvaWQgd2tDb250ZW50QXJlYVNj
cm9sbGVkKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwordm9pZCB3a0NvbnRlbnRB
cmVhV2lsbFBhaW50KFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwordm9pZCB3a01v
dXNlRW50ZXJlZENvbnRlbnRBcmVhKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwor
dm9pZCB3a01vdXNlRXhpdGVkQ29udGVudEFyZWEoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
clJlZik7Cit2b2lkIHdrTW91c2VNb3ZlZEluQ29udGVudEFyZWEoV0tTY3JvbGxiYXJQYWludGVy
Q29udHJvbGxlclJlZik7Cit2b2lkIHdrV2lsbFN0YXJ0TGl2ZVJlc2l6ZShXS1Njcm9sbGJhclBh
aW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tDb250ZW50QXJlYVJlc2l6ZWQoV0tTY3JvbGxi
YXJQYWludGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrV2lsbEVuZExpdmVSZXNpemUoV0tTY3Jv
bGxiYXJQYWludGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrQ29udGVudEFyZWFEaWRTaG93KFdL
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwordm9pZCB3a0NvbnRlbnRBcmVhRGlkSGlk
ZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tEaWRCZWdpblNjcm9s
bEdlc3R1cmUoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrRGlkRW5k
U2Nyb2xsR2VzdHVyZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tT
Y3JvbGxiYXJQYWludGVyRm9yY2VGbGFzaFNjcm9sbGVycyhXS1Njcm9sbGJhclBhaW50ZXJDb250
cm9sbGVyUmVmKTsKK3ZvaWQgd2tTZXRTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclN0eWxlKFdL
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYsIGludCBuZXdTdHlsZSk7Cit2b2lkIHdrU2V0
UGFpbnRlckZvclBhaW50ZXJDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJS
ZWYsIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiwgYm9vbCBpc0hvcml6b250YWwpOworV0tTY3JvbGxi
YXJQYWludGVyUmVmIHdrVmVydGljYWxTY3JvbGxiYXJQYWludGVyRm9yQ29udHJvbGxlcihXS1Nj
cm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKTsKK1dLU2Nyb2xsYmFyUGFpbnRlclJlZiB3a0hv
cml6b250YWxTY3JvbGxiYXJQYWludGVyRm9yQ29udHJvbGxlcihXS1Njcm9sbGJhclBhaW50ZXJD
b250cm9sbGVyUmVmKTsKKworI2VuZGlmIC8vIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKKwor
I2VuZGlmIC8vIFNjcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWNfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc01h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhck92ZXJsYXlV
dGlsaXRpZXNNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI3ZGY0MDI5M2IwYTM3OTIwZDU5ZGUxY2U4ZDVm
ZTkxZDEzNjQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWMubW0KQEAgLTAsMCArMSwyOTcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCisKKyNpbmNs
dWRlICJTY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLmgiCisjaW5jbHVkZSAiU2Nyb2xsVHlw
ZXMuaCIKKyNpbmNsdWRlIDxDb2NvYS9Db2NvYS5oPgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHV0aWxpdGllcyB0byBkcmF3IG92ZXJsYXkgc2Nyb2xs
YmFycy4gVGhlcmUgYXJlIG5vIHBsdWJsaWMKKy8vIEFQSXMgeWV0IG9uIHRoZSBNYWMgdG8gZHJh
dyBvdmVybGF5IHNjcm9sbGJhcnMgc28gd2UgdXNlIHByaXZhdGUgQVBJcyB0aGF0CisvLyB3ZSBs
b29rdXAgYXQgcnVudGltZS4gSWYgdGhlIHByaXZhdGUgQVBJcyBkb24ndCBleGlzdCB0aGVuIHRo
ZSB3a01ha2UqCisvLyBmdW5jdGlvbnMgd2lsbCByZXR1cm4gbmlsLgorLy8KKy8vIE5vdGUsIHRo
aXMgZmlsZSBjb250YWlucyBmdW5jdGlvbnMgY29waWVkIGZyb20gV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oLgorLy8gVXNpbmcgdGhlIHNhbWUgbmFtZXMgbWFrZXMgdGhlIGNvZGUgZWFzaWVyIHRv
IG1haW50YWluLgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gUHVibGljIEFQSXMgbm90
IGF2YWlsYWJsZSBvbiB2ZXJzaW9ucyBvZiBNYWMgb24gd2hpY2ggd2UgYnVpbGQKKyNpZiAoZGVm
aW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkpCitAaW50ZXJmYWNlIE5TU2Nyb2xsZXIgKE5TT2JqZWN0KQorKyAoTlNTY3JvbGxlclN0
eWxlKXByZWZlcnJlZFNjcm9sbGVyU3R5bGU7CitAZW5kCisjZW5kaWYKKworLy8gVGhlc2UgYXJl
IHByaXZhdGUgQVBJcyB0byBkcmF3IG92ZXJsYXkgc2Nyb2xsYmFycy4KK0BpbnRlcmZhY2UgTlNT
Y3JvbGxlckltcCA6IE5TT2JqZWN0CisKKysgKGlkKXNjcm9sbGVySW1wV2l0aFN0eWxlOihOU1Nj
cm9sbGVyU3R5bGUpc3R5bGUKKyAgICAgICAgICAgICAgIGNvbnRyb2xTaXplOihOU0NvbnRyb2xT
aXplKXNpemUKKyAgICAgICAgICAgICAgICBob3Jpem9udGFsOihCT09MKWhvcml6b250YWwKKyAg
ICAgIHJlcGxhY2luZ1Njcm9sbGVySW1wOihpZClzY3JvbGxlcjsKKworQHByb3BlcnR5IENHRmxv
YXQga25vYkFscGhhOworQHByb3BlcnR5IENHRmxvYXQgdHJhY2tBbHBoYTsKK0Bwcm9wZXJ0eSBD
R0Zsb2F0IGtub2JQcm9wb3J0aW9uOworQHByb3BlcnR5KGdldHRlcj1pc0VuYWJsZWQpIEJPT0wg
ZW5hYmxlZDsKK0Bwcm9wZXJ0eShnZXR0ZXI9aXNIb3Jpem9udGFsKSBCT09MIGhvcml6b250YWw7
CitAcHJvcGVydHkgZG91YmxlIGRvdWJsZVZhbHVlOworQHByb3BlcnR5KGFzc2lnbikgaWQgZGVs
ZWdhdGU7CisKKy0gKENHRmxvYXQpa25vYk1pbkxlbmd0aDsKKy0gKENHRmxvYXQpdHJhY2tCb3hX
aWR0aDsKKy0gKENHRmxvYXQpdHJhY2tXaWR0aDsKKy0gKHZvaWQpc2V0Qm91bmRzU2l6ZTooTlNT
aXplKXNpemU7CistICh2b2lkKWRyYXdLbm9iU2xvdEluUmVjdDooTlNSZWN0KXJlY3QKKyAgICAg
ICAgICAgICAgICAgaGlnaGxpZ2h0OihCT09MKWZsYWc7CistICh2b2lkKWRyYXdLbm9iOworLSAo
dm9pZClzZXRPdmVybGF5U2Nyb2xsZXJTdGF0ZTooTlNTY3JvbGxlclN0eWxlKXN0YXRlCisgICAg
ICAgICAgICAgICBmb3JjZUltbWVkaWF0ZWx5OihCT09MKWZsYWc7CistICh2b2lkKXNldERlbGVn
YXRlOihpZClkZWxlZ2F0ZTsKKworQGVuZAorCisvLyBUaGVzZSBhcmUgcHJpdmF0ZSBBUElzIHRv
IG1hbmFnZSBvdmVybGF5IHNjcm9sbGJhcnMuCitAaW50ZXJmYWNlIE5TU2Nyb2xsZXJJbXBQYWly
IDogTlNPYmplY3QKKworQHByb3BlcnR5IE5TU2Nyb2xsZXJTdHlsZSBzY3JvbGxlclN0eWxlOwor
QHByb3BlcnR5KHJldGFpbikgTlNTY3JvbGxlckltcCAqaG9yaXpvbnRhbFNjcm9sbGVySW1wOwor
QHByb3BlcnR5KHJldGFpbikgTlNTY3JvbGxlckltcCAqdmVydGljYWxTY3JvbGxlckltcDsKK0Bw
cm9wZXJ0eShhc3NpZ24pIGlkIGRlbGVnYXRlOworCistICh2b2lkKWZsYXNoU2Nyb2xsZXJzOwor
LSAodm9pZCljb250ZW50QXJlYVNjcm9sbGVkOworLSAodm9pZCljb250ZW50QXJlYVdpbGxEcmF3
OworLSAodm9pZCljb250ZW50QXJlYURpZEhpZGU7CistICh2b2lkKXdpbmRvd09yZGVyZWRPdXQ7
CistICh2b2lkKXdpbmRvd09yZGVyZWRJbjsKKy0gKHZvaWQpbW91c2VFbnRlcmVkQ29udGVudEFy
ZWE7CistICh2b2lkKW1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhOworLSAodm9pZCltb3VzZUV4aXRl
ZENvbnRlbnRBcmVhOworLSAodm9pZClzdGFydExpdmVSZXNpemU7CistICh2b2lkKWNvbnRlbnRB
cmVhRGlkUmVzaXplOworLSAodm9pZCllbmRMaXZlUmVzaXplOworLSAodm9pZCliZWdpblNjcm9s
bEdlc3R1cmU7CistICh2b2lkKWVuZFNjcm9sbEdlc3R1cmU7CisKK0BlbmQKKworc3RhdGljIENs
YXNzIExvb2tVcE5TU2Nyb2xsZXJJbXBDbGFzcygpIHsKKyAgc3RhdGljIENsYXNzIHJlc3VsdCA9
IE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNTY3JvbGxlckltcCIpOworICByZXR1cm4gcmVzdWx0Owor
fQorCitzdGF0aWMgQ2xhc3MgTG9va1VwTlNTY3JvbGxlckltcFBhaXJDbGFzcygpIHsKKyAgc3Rh
dGljIENsYXNzIHJlc3VsdCA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNTY3JvbGxlckltcFBhaXIi
KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIE5TQ29udHJvbFNpemUgU2Nyb2xsYmFy
Q29udHJvbFNpemVUb05TQ29udHJvbFNpemUoaW50IGNvbnRyb2xTaXplKSB7CisgICAgcmV0dXJu
IGNvbnRyb2xTaXplID09IFdlYkNvcmU6OlJlZ3VsYXJTY3JvbGxiYXIgPyBOU1JlZ3VsYXJDb250
cm9sU2l6ZSA6IE5TU21hbGxDb250cm9sU2l6ZTsKK30KKworYm9vbCB3a1Njcm9sbGJhclBhaW50
ZXJVc2VzT3ZlcmxheVNjcm9sbGVycyh2b2lkKSB7CisgICAgaWYgKFtOU1Njcm9sbGVyIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJlZmVycmVkU2Nyb2xsZXJTdHlsZSldKQorICAgICAg
ICByZXR1cm4gW05TU2Nyb2xsZXIgcHJlZmVycmVkU2Nyb2xsZXJTdHlsZV07CisgICAgcmV0dXJu
IE5TU2Nyb2xsZXJTdHlsZUxlZ2FjeTsKK30KKworYm9vbCB3a1Njcm9sbGJhclBhaW50ZXJJc0hv
cml6b250YWwoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIpIHsKKyAgICByZXR1cm4gW3Bh
aW50ZXIgaXNIb3Jpem9udGFsXTsKK30KKworQ0dGbG9hdCB3a1Njcm9sbGJhclBhaW50ZXJLbm9i
QWxwaGEoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIpIHsKKyAgICByZXR1cm4gW3BhaW50
ZXIga25vYkFscGhhXTsKK30KKwordm9pZCB3a1Njcm9sbGJhclBhaW50ZXJTZXRPdmVybGF5U3Rh
dGUoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIsIGludCBvdmVybGF5U2Nyb2xsZXJTdGF0
ZSkgeworICAgIFtwYWludGVyIHNldE92ZXJsYXlTY3JvbGxlclN0YXRlOm92ZXJsYXlTY3JvbGxl
clN0YXRlCisgICAgICAgICAgICAgICAgICAgIGZvcmNlSW1tZWRpYXRlbHk6WUVTXTsKK30KKwor
dm9pZCB3a1Njcm9sbGJhclBhaW50ZXJQYWludChXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRl
ciwgYm9vbCBlbmFibGVkLCBkb3VibGUgdmFsdWUsIENHRmxvYXQgcHJvcG9ydGlvbiwgTlNSZWN0
IGZyYW1lUmVjdCkgeworICAgIFtwYWludGVyIHNldEVuYWJsZWQ6ZW5hYmxlZF07CisgICAgW3Bh
aW50ZXIgc2V0Qm91bmRzU2l6ZTpmcmFtZVJlY3Quc2l6ZV07CisgICAgW3BhaW50ZXIgc2V0RG91
YmxlVmFsdWU6dmFsdWVdOworICAgIFtwYWludGVyIHNldEtub2JQcm9wb3J0aW9uOnByb3BvcnRp
b25dOworCisgICAgaWYgKFtwYWludGVyIGlzSG9yaXpvbnRhbF0pCisgICAgICAgIGZyYW1lUmVj
dC5zaXplLmhlaWdodCA9IFtwYWludGVyIHRyYWNrV2lkdGhdOworICAgIGVsc2UKKyAgICAgICAg
ZnJhbWVSZWN0LnNpemUud2lkdGggPSBbcGFpbnRlciB0cmFja1dpZHRoXTsKKworICAgIFtwYWlu
dGVyIGRyYXdLbm9iU2xvdEluUmVjdDpmcmFtZVJlY3QgaGlnaGxpZ2h0Ok5PXTsKKyAgICBbcGFp
bnRlciBkcmF3S25vYl07Cit9CisKK2ludCB3a1Njcm9sbGJhck1pbmltdW1UaHVtYkxlbmd0aChX
S1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlcikgeworICAgIHJldHVybiBbcGFpbnRlciBrbm9i
TWluTGVuZ3RoXTsKK30KKwordm9pZCB3a1Njcm9sbGJhclBhaW50ZXJTZXREZWxlZ2F0ZShXS1Nj
cm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlciwgaWQgc2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlKSB7
CisgICAgW3BhaW50ZXIgc2V0RGVsZWdhdGU6c2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlXTsKK30K
KworQ0dGbG9hdCB3a1Njcm9sbGJhclBhaW50ZXJUcmFja0FscGhhKFdLU2Nyb2xsYmFyUGFpbnRl
clJlZiBwYWludGVyKSB7CisgICAgcmV0dXJuIFtwYWludGVyIHRyYWNrQWxwaGFdOworfQorCitX
S1Njcm9sbGJhclBhaW50ZXJSZWYgd2tNYWtlU2Nyb2xsYmFyUGFpbnRlcihpbnQgY29udHJvbFNp
emUsIGJvb2wgaXNIb3Jpem9udGFsKSB7CisgICAgcmV0dXJuIHdrTWFrZVNjcm9sbGJhclJlcGxh
Y2VtZW50UGFpbnRlcihuaWwsIHdrU2Nyb2xsYmFyUGFpbnRlclVzZXNPdmVybGF5U2Nyb2xsZXJz
KCksIGNvbnRyb2xTaXplLCBpc0hvcml6b250YWwpOworfQorCitpbnQgd2tTY3JvbGxiYXJUaGlj
a25lc3MoaW50IGNvbnRyb2xTaXplKSB7CisgICAgcmV0dXJuIFt3a01ha2VTY3JvbGxiYXJQYWlu
dGVyKGNvbnRyb2xTaXplLCBmYWxzZSkgdHJhY2tCb3hXaWR0aF07Cit9CisKK2ludCB3a1Njcm9s
bGJhck1pbmltdW1Ub3RhbExlbmd0aE5lZWRlZEZvclRodW1iKFdLU2Nyb2xsYmFyUGFpbnRlclJl
ZiBwYWludGVyKSB7CisgICAgLy8gVE9ETyhzYWlsKTogVGhpcyBkb2Vzbid0IG1hdGNoIHRoZSBp
bXBsZW1lbnRhdGlvbiBpbiBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuCisgICAgcmV0dXJuIHdrU2Ny
b2xsYmFyTWluaW11bVRodW1iTGVuZ3RoKHBhaW50ZXIpOworfQorCitXS1Njcm9sbGJhclBhaW50
ZXJSZWYgd2tWZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXJGb3JDb250cm9sbGVyKFdLU2Nyb2xsYmFy
UGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxlcikgeworICAgIHJldHVybiBbY29udHJvbGxl
ciB2ZXJ0aWNhbFNjcm9sbGVySW1wXTsKK30KKworV0tTY3JvbGxiYXJQYWludGVyUmVmIHdrSG9y
aXpvbnRhbFNjcm9sbGJhclBhaW50ZXJGb3JDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNv
bnRyb2xsZXJSZWYgY29udHJvbGxlcikgeworICAgIHJldHVybiBbY29udHJvbGxlciBob3Jpem9u
dGFsU2Nyb2xsZXJJbXBdOworfQorCitXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tNYWtlU2Nyb2xs
YmFyUmVwbGFjZW1lbnRQYWludGVyKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBvbGRQYWludGVyLCBp
bnQgbmV3U3R5bGUsIGludCBjb250cm9sU2l6ZSwgYm9vbCBpc0hvcml6b250YWwpIHsKKyAgICBp
ZiAoIUlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gbmls
OworICAgIHJldHVybiBbTG9va1VwTlNTY3JvbGxlckltcENsYXNzKCkgc2Nyb2xsZXJJbXBXaXRo
U3R5bGU6bmV3U3R5bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRyb2xTaXplOlNjcm9sbGJhckNvbnRyb2xTaXplVG9OU0NvbnRyb2xTaXplKGNv
bnRyb2xTaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhvcml6b250YWw6aXNIb3Jpem9udGFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXBsYWNpbmdTY3JvbGxlckltcDpvbGRQYWludGVyXTsKK30KKwordm9pZCB3
a1NldFBhaW50ZXJGb3JQYWludGVyQ29udHJvbGxlcihXS1Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyUmVmIGNvbnRyb2xsZXIsIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyLCBib29sIGlz
SG9yaXpvbnRhbCkgeworICAgIGlmIChpc0hvcml6b250YWwpCisgICAgICAgIFtjb250cm9sbGVy
IHNldEhvcml6b250YWxTY3JvbGxlckltcDpwYWludGVyXTsKKyAgICBlbHNlCisgICAgICAgIFtj
b250cm9sbGVyIHNldFZlcnRpY2FsU2Nyb2xsZXJJbXA6cGFpbnRlcl07Cit9CisKK3ZvaWQgd2tT
ZXRTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclN0eWxlKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRy
b2xsZXJSZWYgcGFpbnRlciwgaW50IG5ld1N0eWxlKSB7CisgICAgW3BhaW50ZXIgc2V0U2Nyb2xs
ZXJTdHlsZTpuZXdTdHlsZV07Cit9CisKK0NHUmVjdCB3a1Njcm9sbGJhclBhaW50ZXJLbm9iUmVj
dChXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlcikgeworICAgIHJldHVybiBOU1JlY3RUb0NH
UmVjdChOU1plcm9SZWN0KTsKK30KKwordm9pZCB3a1NldFNjcm9sbGJhclBhaW50ZXJLbm9iQWxw
aGEoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIsIENHRmxvYXQgYWxwaGEpIHsKKyAgICBb
cGFpbnRlciBzZXRLbm9iQWxwaGE6YWxwaGFdOworfQorCit2b2lkIHdrU2V0U2Nyb2xsYmFyUGFp
bnRlclRyYWNrQWxwaGEoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIsIENHRmxvYXQgYWxw
aGEpIHsKKyAgICBbcGFpbnRlciBzZXRUcmFja0FscGhhOmFscGhhXTsKK30KKwordm9pZCB3a1Nl
dFNjcm9sbGJhclBhaW50ZXJLbm9iU3R5bGUoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIs
IHdrU2Nyb2xsZXJLbm9iU3R5bGUgc3R5bGUpIHsKKyAgICAvLyBUT0RPKHNhaWwpOiBBIGtub2Ig
c3R5bGUgQVBJIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIHNlZWRzIGN1cnJlbnRseSBhdmFpbGFibGUu
IAorfQorCitXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIHdrTWFrZVNjcm9sbGJhclBh
aW50ZXJDb250cm9sbGVyKGlkIHBhaW50ZXJDb250cm9sbGVyRGVsZWdhdGUpIHsKKyAgICBpZiAo
IUlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIE5TU2Nyb2xsZXJJbXBQYWlyKiBjb250cm9sbGVyID0gW1tbTG9va1VwTlNTY3JvbGxlcklt
cFBhaXJDbGFzcygpIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgW2NvbnRyb2xsZXIg
c2V0RGVsZWdhdGU6cGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZV07CisgICAgW2NvbnRyb2xsZXIg
c2V0U2Nyb2xsZXJTdHlsZTp3a1Njcm9sbGJhclBhaW50ZXJVc2VzT3ZlcmxheVNjcm9sbGVycygp
XTsKKyAgICByZXR1cm4gY29udHJvbGxlcjsKK30KKwordm9pZCB3a0NvbnRlbnRBcmVhU2Nyb2xs
ZWQoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKSB7CisgICAgW2Nv
bnRyb2xsZXIgY29udGVudEFyZWFTY3JvbGxlZF07Cit9CisKK3ZvaWQgd2tDb250ZW50QXJlYVdp
bGxQYWludChXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xsZXIpIHsKKyAg
ICBbY29udHJvbGxlciBjb250ZW50QXJlYVdpbGxEcmF3XTsKK30KKwordm9pZCB3a01vdXNlRW50
ZXJlZENvbnRlbnRBcmVhKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxl
cikgeworICAgIFtjb250cm9sbGVyIG1vdXNlRW50ZXJlZENvbnRlbnRBcmVhXTsKK30KKwordm9p
ZCB3a01vdXNlRXhpdGVkQ29udGVudEFyZWEoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJl
ZiBjb250cm9sbGVyKSB7CisgICAgW2NvbnRyb2xsZXIgbW91c2VFeGl0ZWRDb250ZW50QXJlYV07
Cit9CisKK3ZvaWQgd2tNb3VzZU1vdmVkSW5Db250ZW50QXJlYShXS1Njcm9sbGJhclBhaW50ZXJD
b250cm9sbGVyUmVmIGNvbnRyb2xsZXIpIHsKKyAgICBbY29udHJvbGxlciBtb3VzZU1vdmVkSW5D
b250ZW50QXJlYV07Cit9CisKK3ZvaWQgd2tXaWxsU3RhcnRMaXZlUmVzaXplKFdLU2Nyb2xsYmFy
UGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxlcikgeworICAgIFtjb250cm9sbGVyIHN0YXJ0
TGl2ZVJlc2l6ZV07Cit9CisKK3ZvaWQgd2tDb250ZW50QXJlYVJlc2l6ZWQoV0tTY3JvbGxiYXJQ
YWludGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKSB7CisgICAgW2NvbnRyb2xsZXIgY29udGVu
dEFyZWFEaWRSZXNpemVdOworfQorCit2b2lkIHdrV2lsbEVuZExpdmVSZXNpemUoV0tTY3JvbGxi
YXJQYWludGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKSB7CisgICAgW2NvbnRyb2xsZXIgZW5k
TGl2ZVJlc2l6ZV07Cit9CisKK3ZvaWQgd2tDb250ZW50QXJlYURpZFNob3coV0tTY3JvbGxiYXJQ
YWludGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKSB7CisgICAgW2NvbnRyb2xsZXIgd2luZG93
T3JkZXJlZEluXTsKK30KKwordm9pZCB3a0NvbnRlbnRBcmVhRGlkSGlkZShXS1Njcm9sbGJhclBh
aW50ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xsZXIpIHsKKyAgICBbY29udHJvbGxlciB3aW5kb3dP
cmRlcmVkT3V0XTsKK30KKwordm9pZCB3a0RpZEJlZ2luU2Nyb2xsR2VzdHVyZShXS1Njcm9sbGJh
clBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xsZXIpIHsKKyAgICBbY29udHJvbGxlciBiZWdp
blNjcm9sbEdlc3R1cmVdOworfQorCit2b2lkIHdrRGlkRW5kU2Nyb2xsR2VzdHVyZShXS1Njcm9s
bGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xsZXIpIHsKKyAgICBbY29udHJvbGxlciBl
bmRTY3JvbGxHZXN0dXJlXTsKK30KKwordm9pZCB3a1Njcm9sbGJhclBhaW50ZXJGb3JjZUZsYXNo
U2Nyb2xsZXJzKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxlcikgewor
ICAgIFtjb250cm9sbGVyIGZsYXNoU2Nyb2xsZXJzXTsKK30KKworYm9vbCBJc1Njcm9sbGJhck92
ZXJsYXlBUElBdmFpbGFibGUoKSB7CisgICAgLy8gVE9ETyhzYWlsKTogRGlzYWJsZSBvdmVybGF5
IHNjcm9sbGJhcnMgZm9yIG5vdyB1bnRpbCB0aGUgZm9sbG93aW5nIGlzc3VlcyBhcmUgZml4ZWQ6
CisgICAgLy8gIzE6IEludmFsaWRhdGlvbiBpc3N1ZXMgY2F1c2VzIHRoZSBzY3JvbGxiYXIgdG8g
bGVhdmUgdHJhaWxpbmcgYXJ0aWZhY3RzLgorICAgIC8vICMyOiBWYXJpb3VzIG1lc3NhZ2VzIHN1
Y2ggYXMgbGl2ZSByZXNpemUgc3RhcnRlZC9lbmRlZCBuZWVkIHRvIGJlIHBpcGVkIGZyb20gdGhl
IFVJLgorICAgIC8vICMzOiBGaW5kIHRpY2sgbWFya3MgbmVlZCB0byBiZSBkcmF3biBvbiB0aGUg
c2Nyb2xsYmFyIHRyYWNrLgorICAgIC8vICM0OiBOZWVkIHRvIGhhdmUgdGhlIHRoZW1lIGVuZ2lu
ZSBkcmF3IHRoZSB0aHVtYi4KKyAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgYm9vbCBh
cGlBdmFpbGFibGUgPSBbTG9va1VwTlNTY3JvbGxlckltcENsYXNzKCkgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihzY3JvbGxlckltcFdpdGhTdHlsZTpjb250cm9sU2l6ZTpob3Jpem9udGFs
OnJlcGxhY2luZ1Njcm9sbGVySW1wOildICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW0xvb2tVcE5TU2Nyb2xsZXJJbXBQYWlyQ2xhc3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxl
Y3RvcjpAc2VsZWN0b3Ioc2Nyb2xsZXJTdHlsZSldOworICAgIHJldHVybiBhcGlBdmFpbGFibGU7
Cit9CisKKyNlbmRpZiAvLyBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91562</attachid>
            <date>2011-04-28 14:55:11 -0700</date>
            <delta_ts>2011-04-28 16:48:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59741-20110428145510.patch</filename>
            <type>text/plain</type>
            <size>20025</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ5MzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYzgzZmFhYjE1M2ZiODg3
ODlmNWM0NzhmNDFjNjE3ZDJjMTNkZmZjLi40N2FiY2I0YjIzYTg2NGE2YjJhODRlYmZiYmQ2NTU1
NjcwNDBiYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDQtMjggIFNhaWxl
c2ggQWdyYXdhbCAgPHNhaWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9taXVtIE1hYzogQWRkIHNjcm9sbGJhciBvdmVy
bGF5IGRyYXdpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01OTc0MQorCisgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgc2ltcGx5
IGNvcGllZCBmcm9tIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuIFRoZXNlIHdpbGwgYmUgdXNlZCB0
byBpbXBsZW1lbnQgb3ZlcmxheSBzY3JvbGxiYXJzIGZvciBDaHJvbWl1bSBNYWMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc01hYy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0
aWVzTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKExvb2tVcE5TU2Nyb2xsZXJJbXBDbGFzcyk6Cisg
ICAgICAgIChMb29rVXBOU1Njcm9sbGVySW1wUGFpckNsYXNzKToKKyAgICAgICAgKFNjcm9sbGJh
ckNvbnRyb2xTaXplVG9OU0NvbnRyb2xTaXplKToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRl
clVzZXNPdmVybGF5U2Nyb2xsZXJzKToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlcklzSG9y
aXpvbnRhbCk6CisgICAgICAgICh3a1Njcm9sbGJhclBhaW50ZXJLbm9iQWxwaGEpOgorICAgICAg
ICAod2tTY3JvbGxiYXJQYWludGVyU2V0T3ZlcmxheVN0YXRlKToKKyAgICAgICAgKHdrU2Nyb2xs
YmFyUGFpbnRlclBhaW50KToKKyAgICAgICAgKHdrU2Nyb2xsYmFyTWluaW11bVRodW1iTGVuZ3Ro
KToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlclNldERlbGVnYXRlKToKKyAgICAgICAgKHdr
U2Nyb2xsYmFyUGFpbnRlclRyYWNrQWxwaGEpOgorICAgICAgICAod2tNYWtlU2Nyb2xsYmFyUGFp
bnRlcik6CisgICAgICAgICh3a1Njcm9sbGJhclRoaWNrbmVzcyk6CisgICAgICAgICh3a1Njcm9s
bGJhck1pbmltdW1Ub3RhbExlbmd0aE5lZWRlZEZvclRodW1iKToKKyAgICAgICAgKHdrVmVydGlj
YWxTY3JvbGxiYXJQYWludGVyRm9yQ29udHJvbGxlcik6CisgICAgICAgICh3a0hvcml6b250YWxT
Y3JvbGxiYXJQYWludGVyRm9yQ29udHJvbGxlcik6CisgICAgICAgICh3a01ha2VTY3JvbGxiYXJS
ZXBsYWNlbWVudFBhaW50ZXIpOgorICAgICAgICAod2tTZXRQYWludGVyRm9yUGFpbnRlckNvbnRy
b2xsZXIpOgorICAgICAgICAod2tTZXRTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclN0eWxlKToK
KyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlcktub2JSZWN0KToKKyAgICAgICAgKHdrU2V0U2Ny
b2xsYmFyUGFpbnRlcktub2JBbHBoYSk6CisgICAgICAgICh3a1NldFNjcm9sbGJhclBhaW50ZXJU
cmFja0FscGhhKToKKyAgICAgICAgKHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JTdHlsZSk6Cisg
ICAgICAgICh3a01ha2VTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlcik6CisgICAgICAgICh3a0Nv
bnRlbnRBcmVhU2Nyb2xsZWQpOgorICAgICAgICAod2tDb250ZW50QXJlYVdpbGxQYWludCk6Cisg
ICAgICAgICh3a01vdXNlRW50ZXJlZENvbnRlbnRBcmVhKToKKyAgICAgICAgKHdrTW91c2VFeGl0
ZWRDb250ZW50QXJlYSk6CisgICAgICAgICh3a01vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKToKKyAg
ICAgICAgKHdrV2lsbFN0YXJ0TGl2ZVJlc2l6ZSk6CisgICAgICAgICh3a0NvbnRlbnRBcmVhUmVz
aXplZCk6CisgICAgICAgICh3a1dpbGxFbmRMaXZlUmVzaXplKToKKyAgICAgICAgKHdrQ29udGVu
dEFyZWFEaWRTaG93KToKKyAgICAgICAgKHdrQ29udGVudEFyZWFEaWRIaWRlKToKKyAgICAgICAg
KHdrRGlkQmVnaW5TY3JvbGxHZXN0dXJlKToKKyAgICAgICAgKHdrRGlkRW5kU2Nyb2xsR2VzdHVy
ZSk6CisgICAgICAgICh3a1Njcm9sbGJhclBhaW50ZXJGb3JjZUZsYXNoU2Nyb2xsZXJzKToKKyAg
ICAgICAgKElzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSk6CisKIDIwMTEtMDQtMjUgIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBP
bGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxYWM5ODY3ZmIyZmU2ZDBhYWQzMzU4ZTAx
ODU1MjNmODYwZTM1MjE5Li5iMjkxOTlhNmI1ODIyOGQxYmNiZTQ0YWYwYjI1NjU4MzA3YjRjMDg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zODA1LDYgKzM4MDUsOCBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9TU0xLZXlHZW5lcmF0b3JDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWMuaCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc01hYy5t
bScsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDUxYmRhYTc5NDViOTBlZGJiODhjMzExODc3MmY1ZjJiNzIxNzIwOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhck92ZXJsYXlV
dGlsaXRpZXNNYWMuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU2Nyb2xsYmFyT3ZlcmxheVV0aWxp
dGllc01hY19oCisjZGVmaW5lIFNjcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWNfaAorCisjaWYg
VVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQorCisvLyBQdWJsaWMgQVBJcyBub3QgYXZhaWxhYmxl
IG9uIHZlcnNpb25zIG9mIE1hYyBvbiB3aGljaCB3ZSBidWlsZAorI2lmIChkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSkKK2Vu
dW0geworICAgIE5TU2Nyb2xsZXJTdHlsZUxlZ2FjeSAgICAgICA9IDAsCisgICAgTlNTY3JvbGxl
clN0eWxlT3ZlcmxheSAgICAgID0gMQorfTsKK3R5cGVkZWYgTlNJbnRlZ2VyIE5TU2Nyb2xsZXJT
dHlsZTsKKyNlbmRpZgorCisjaWZkZWYgX19PQkpDX18KK0BjbGFzcyBOU1Njcm9sbGVySW1wOwor
QGNsYXNzIE5TU2Nyb2xsZXJJbXBQYWlyOworI2Vsc2UKK2NsYXNzIE5TU2Nyb2xsZXJJbXA7Citj
bGFzcyBOU1Njcm9sbGVySW1wUGFpcjsKKyNlbmRpZgorCit0eXBlZGVmIE5TU2Nyb2xsZXJJbXAq
IFdLU2Nyb2xsYmFyUGFpbnRlclJlZjsKK3R5cGVkZWYgTlNTY3JvbGxlckltcFBhaXIqIFdLU2Ny
b2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWY7CisKK2Jvb2wgSXNTY3JvbGxiYXJPdmVybGF5QVBJ
QXZhaWxhYmxlKCk7CisKKy8vIFNjcm9sbGJhciBQYWludGVyCitib29sIHdrU2Nyb2xsYmFyUGFp
bnRlclVzZXNPdmVybGF5U2Nyb2xsZXJzKHZvaWQpOworYm9vbCB3a1Njcm9sbGJhclBhaW50ZXJJ
c0hvcml6b250YWwoV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKK0NHRmxvYXQgd2tTY3JvbGxiYXJQ
YWludGVyS25vYkFscGhhKFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7Cit2b2lkIHdrU2Nyb2xsYmFy
UGFpbnRlclNldE92ZXJsYXlTdGF0ZShXS1Njcm9sbGJhclBhaW50ZXJSZWYsIGludCBvdmVybGF5
U2Nyb2xsZXJTdGF0ZSk7Cit2b2lkIHdrU2Nyb2xsYmFyUGFpbnRlclBhaW50KFdLU2Nyb2xsYmFy
UGFpbnRlclJlZiwgYm9vbCBlbmFibGVkLCBkb3VibGUgdmFsdWUsIENHRmxvYXQgcHJvcG9ydGlv
biwgTlNSZWN0IGZyYW1lUmVjdCk7CitpbnQgd2tTY3JvbGxiYXJNaW5pbXVtVGh1bWJMZW5ndGgo
V0tTY3JvbGxiYXJQYWludGVyUmVmKTsKK3ZvaWQgd2tTY3JvbGxiYXJQYWludGVyU2V0RGVsZWdh
dGUoV0tTY3JvbGxiYXJQYWludGVyUmVmLCBpZCBzY3JvbGxiYXJQYWludGVyRGVsZWdhdGUpOwor
Q0dGbG9hdCB3a1Njcm9sbGJhclBhaW50ZXJUcmFja0FscGhhKFdLU2Nyb2xsYmFyUGFpbnRlclJl
Zik7CitXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tNYWtlU2Nyb2xsYmFyUGFpbnRlcihpbnQgY29u
dHJvbFNpemUsIGJvb2wgaXNIb3Jpem9udGFsKTsKK2ludCB3a1Njcm9sbGJhclRoaWNrbmVzcyhp
bnQgY29udHJvbFNpemUpOworaW50IHdrU2Nyb2xsYmFyTWluaW11bVRvdGFsTGVuZ3RoTmVlZGVk
Rm9yVGh1bWIoV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKK0NHUmVjdCB3a1Njcm9sbGJhclBhaW50
ZXJLbm9iUmVjdChXS1Njcm9sbGJhclBhaW50ZXJSZWYpOworV0tTY3JvbGxiYXJQYWludGVyUmVm
IHdrTWFrZVNjcm9sbGJhclJlcGxhY2VtZW50UGFpbnRlcihXS1Njcm9sbGJhclBhaW50ZXJSZWYg
b2xkUGFpbnRlciwgaW50IG5ld1N0eWxlLCBpbnQgY29udHJvbFNpemUsIGJvb2wgaXNIb3Jpem9u
dGFsKTsKK3ZvaWQgd2tTZXRTY3JvbGxiYXJQYWludGVyS25vYkFscGhhKFdLU2Nyb2xsYmFyUGFp
bnRlclJlZiwgQ0dGbG9hdCk7Cit2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlclRyYWNrQWxwaGEo
V0tTY3JvbGxiYXJQYWludGVyUmVmLCBDR0Zsb2F0KTsKKworZW51bSB7CisgICAgd2tTY3JvbGxl
cktub2JTdHlsZURlZmF1bHQgPSAwLAorICAgIHdrU2Nyb2xsZXJLbm9iU3R5bGVEYXJrID0gMSwK
KyAgICB3a1Njcm9sbGVyS25vYlN0eWxlTGlnaHQgPSAyCit9OwordHlwZWRlZiB1aW50MzIgd2tT
Y3JvbGxlcktub2JTdHlsZTsKK2V4dGVybiB2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JT
dHlsZShXS1Njcm9sbGJhclBhaW50ZXJSZWYsIHdrU2Nyb2xsZXJLbm9iU3R5bGUpOworCisvLyBT
Y3JvbGxiYXIgUGFpbnRlciBDb250cm9sbGVyCitXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
UmVmIHdrTWFrZVNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVyKGlkIHBhaW50ZXJDb250cm9sbGVy
RGVsZWdhdGUpOwordm9pZCB3a0NvbnRlbnRBcmVhU2Nyb2xsZWQoV0tTY3JvbGxiYXJQYWludGVy
Q29udHJvbGxlclJlZik7Cit2b2lkIHdrQ29udGVudEFyZWFXaWxsUGFpbnQoV0tTY3JvbGxiYXJQ
YWludGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrTW91c2VFbnRlcmVkQ29udGVudEFyZWEoV0tT
Y3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrTW91c2VFeGl0ZWRDb250ZW50
QXJlYShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tNb3VzZU1vdmVk
SW5Db250ZW50QXJlYShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tX
aWxsU3RhcnRMaXZlUmVzaXplKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwordm9p
ZCB3a0NvbnRlbnRBcmVhUmVzaXplZChXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKTsK
K3ZvaWQgd2tXaWxsRW5kTGl2ZVJlc2l6ZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVm
KTsKK3ZvaWQgd2tDb250ZW50QXJlYURpZFNob3coV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
clJlZik7Cit2b2lkIHdrQ29udGVudEFyZWFEaWRIaWRlKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRy
b2xsZXJSZWYpOwordm9pZCB3a0RpZEJlZ2luU2Nyb2xsR2VzdHVyZShXS1Njcm9sbGJhclBhaW50
ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tEaWRFbmRTY3JvbGxHZXN0dXJlKFdLU2Nyb2xsYmFy
UGFpbnRlckNvbnRyb2xsZXJSZWYpOwordm9pZCB3a1Njcm9sbGJhclBhaW50ZXJGb3JjZUZsYXNo
U2Nyb2xsZXJzKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwordm9pZCB3a1NldFNj
cm9sbGJhclBhaW50ZXJDb250cm9sbGVyU3R5bGUoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
clJlZiwgaW50IG5ld1N0eWxlKTsKK3ZvaWQgd2tTZXRQYWludGVyRm9yUGFpbnRlckNvbnRyb2xs
ZXIoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiwgV0tTY3JvbGxiYXJQYWludGVyUmVm
LCBib29sIGlzSG9yaXpvbnRhbCk7CitXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tWZXJ0aWNhbFNj
cm9sbGJhclBhaW50ZXJGb3JDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJS
ZWYpOworV0tTY3JvbGxiYXJQYWludGVyUmVmIHdrSG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXJG
b3JDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOworCisjZW5kaWYg
Ly8gVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQorCisjZW5kaWYgLy8gU2Nyb2xsYmFyT3Zlcmxh
eVV0aWxpdGllc01hY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc01hYy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMjdkZjQwMjkzYjBhMzc5MjBkNTlkZTFjZThkNWZlOTFkMTM2NDRlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0
aWxpdGllc01hYy5tbQpAQCAtMCwwICsxLDI5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVT
RShXS19TQ1JPTExCQVJfUEFJTlRFUikKKworI2luY2x1ZGUgIlNjcm9sbGJhck92ZXJsYXlVdGls
aXRpZXNNYWMuaCIKKyNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2luY2x1ZGUgPENvY29hL0Nv
Y29hLmg+CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBUaGlzIGZpbGUgY29udGFpbnMg
dXRpbGl0aWVzIHRvIGRyYXcgb3ZlcmxheSBzY3JvbGxiYXJzLiBUaGVyZSBhcmUgbm8gcGx1Ymxp
YworLy8gQVBJcyB5ZXQgb24gdGhlIE1hYyB0byBkcmF3IG92ZXJsYXkgc2Nyb2xsYmFycyBzbyB3
ZSB1c2UgcHJpdmF0ZSBBUElzIHRoYXQKKy8vIHdlIGxvb2t1cCBhdCBydW50aW1lLiBJZiB0aGUg
cHJpdmF0ZSBBUElzIGRvbid0IGV4aXN0IHRoZW4gdGhlIHdrTWFrZSoKKy8vIGZ1bmN0aW9ucyB3
aWxsIHJldHVybiBuaWwuCisvLworLy8gTm90ZSwgdGhpcyBmaWxlIGNvbnRhaW5zIGZ1bmN0aW9u
cyBjb3BpZWQgZnJvbSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmguCisvLyBVc2luZyB0aGUgc2Ft
ZSBuYW1lcyBtYWtlcyB0aGUgY29kZSBlYXNpZXIgdG8gbWFpbnRhaW4uCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisvLyBQdWJsaWMgQVBJcyBub3QgYXZhaWxhYmxlIG9uIHZlcnNpb25zIG9m
IE1hYyBvbiB3aGljaCB3ZSBidWlsZAorI2lmIChkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQp
IHx8IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSkKK0BpbnRlcmZhY2UgTlNTY3Jv
bGxlciAoTlNPYmplY3QpCisrIChOU1Njcm9sbGVyU3R5bGUpcHJlZmVycmVkU2Nyb2xsZXJTdHls
ZTsKK0BlbmQKKyNlbmRpZgorCisvLyBUaGVzZSBhcmUgcHJpdmF0ZSBBUElzIHRvIGRyYXcgb3Zl
cmxheSBzY3JvbGxiYXJzLgorQGludGVyZmFjZSBOU1Njcm9sbGVySW1wIDogTlNPYmplY3QKKwor
KyAoaWQpc2Nyb2xsZXJJbXBXaXRoU3R5bGU6KE5TU2Nyb2xsZXJTdHlsZSlzdHlsZQorICAgICAg
ICAgICAgICAgY29udHJvbFNpemU6KE5TQ29udHJvbFNpemUpc2l6ZQorICAgICAgICAgICAgICAg
IGhvcml6b250YWw6KEJPT0wpaG9yaXpvbnRhbAorICAgICAgcmVwbGFjaW5nU2Nyb2xsZXJJbXA6
KGlkKXNjcm9sbGVyOworCitAcHJvcGVydHkgQ0dGbG9hdCBrbm9iQWxwaGE7CitAcHJvcGVydHkg
Q0dGbG9hdCB0cmFja0FscGhhOworQHByb3BlcnR5IENHRmxvYXQga25vYlByb3BvcnRpb247CitA
cHJvcGVydHkoZ2V0dGVyPWlzRW5hYmxlZCkgQk9PTCBlbmFibGVkOworQHByb3BlcnR5KGdldHRl
cj1pc0hvcml6b250YWwpIEJPT0wgaG9yaXpvbnRhbDsKK0Bwcm9wZXJ0eSBkb3VibGUgZG91Ymxl
VmFsdWU7CitAcHJvcGVydHkoYXNzaWduKSBpZCBkZWxlZ2F0ZTsKKworLSAoQ0dGbG9hdClrbm9i
TWluTGVuZ3RoOworLSAoQ0dGbG9hdCl0cmFja0JveFdpZHRoOworLSAoQ0dGbG9hdCl0cmFja1dp
ZHRoOworLSAodm9pZClzZXRCb3VuZHNTaXplOihOU1NpemUpc2l6ZTsKKy0gKHZvaWQpZHJhd0tu
b2JTbG90SW5SZWN0OihOU1JlY3QpcmVjdAorICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6KEJP
T0wpZmxhZzsKKy0gKHZvaWQpZHJhd0tub2I7CistICh2b2lkKXNldE92ZXJsYXlTY3JvbGxlclN0
YXRlOihOU1Njcm9sbGVyU3R5bGUpc3RhdGUKKyAgICAgICAgICAgICAgIGZvcmNlSW1tZWRpYXRl
bHk6KEJPT0wpZmxhZzsKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkKWRlbGVnYXRlOworCitAZW5k
CisKKy8vIFRoZXNlIGFyZSBwcml2YXRlIEFQSXMgdG8gbWFuYWdlIG92ZXJsYXkgc2Nyb2xsYmFy
cy4KK0BpbnRlcmZhY2UgTlNTY3JvbGxlckltcFBhaXIgOiBOU09iamVjdAorCitAcHJvcGVydHkg
TlNTY3JvbGxlclN0eWxlIHNjcm9sbGVyU3R5bGU7CitAcHJvcGVydHkocmV0YWluKSBOU1Njcm9s
bGVySW1wICpob3Jpem9udGFsU2Nyb2xsZXJJbXA7CitAcHJvcGVydHkocmV0YWluKSBOU1Njcm9s
bGVySW1wICp2ZXJ0aWNhbFNjcm9sbGVySW1wOworQHByb3BlcnR5KGFzc2lnbikgaWQgZGVsZWdh
dGU7CisKKy0gKHZvaWQpZmxhc2hTY3JvbGxlcnM7CistICh2b2lkKWNvbnRlbnRBcmVhU2Nyb2xs
ZWQ7CistICh2b2lkKWNvbnRlbnRBcmVhV2lsbERyYXc7CistICh2b2lkKWNvbnRlbnRBcmVhRGlk
SGlkZTsKKy0gKHZvaWQpd2luZG93T3JkZXJlZE91dDsKKy0gKHZvaWQpd2luZG93T3JkZXJlZElu
OworLSAodm9pZCltb3VzZUVudGVyZWRDb250ZW50QXJlYTsKKy0gKHZvaWQpbW91c2VNb3ZlZElu
Q29udGVudEFyZWE7CistICh2b2lkKW1vdXNlRXhpdGVkQ29udGVudEFyZWE7CistICh2b2lkKXN0
YXJ0TGl2ZVJlc2l6ZTsKKy0gKHZvaWQpY29udGVudEFyZWFEaWRSZXNpemU7CistICh2b2lkKWVu
ZExpdmVSZXNpemU7CistICh2b2lkKWJlZ2luU2Nyb2xsR2VzdHVyZTsKKy0gKHZvaWQpZW5kU2Ny
b2xsR2VzdHVyZTsKKworQGVuZAorCitzdGF0aWMgQ2xhc3MgTG9va1VwTlNTY3JvbGxlckltcENs
YXNzKCkgeworICBzdGF0aWMgQ2xhc3MgcmVzdWx0ID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJOU1Nj
cm9sbGVySW1wIik7CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBDbGFzcyBMb29rVXBO
U1Njcm9sbGVySW1wUGFpckNsYXNzKCkgeworICBzdGF0aWMgQ2xhc3MgcmVzdWx0ID0gTlNDbGFz
c0Zyb21TdHJpbmcoQCJOU1Njcm9sbGVySW1wUGFpciIpOworICByZXR1cm4gcmVzdWx0OworfQor
CitzdGF0aWMgTlNDb250cm9sU2l6ZSBTY3JvbGxiYXJDb250cm9sU2l6ZVRvTlNDb250cm9sU2l6
ZShpbnQgY29udHJvbFNpemUpIHsKKyAgICByZXR1cm4gY29udHJvbFNpemUgPT0gV2ViQ29yZTo6
UmVndWxhclNjcm9sbGJhciA/IE5TUmVndWxhckNvbnRyb2xTaXplIDogTlNTbWFsbENvbnRyb2xT
aXplOworfQorCitib29sIHdrU2Nyb2xsYmFyUGFpbnRlclVzZXNPdmVybGF5U2Nyb2xsZXJzKHZv
aWQpIHsKKyAgICBpZiAoW05TU2Nyb2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihw
cmVmZXJyZWRTY3JvbGxlclN0eWxlKV0pCisgICAgICAgIHJldHVybiBbTlNTY3JvbGxlciBwcmVm
ZXJyZWRTY3JvbGxlclN0eWxlXTsKKyAgICByZXR1cm4gTlNTY3JvbGxlclN0eWxlTGVnYWN5Owor
fQorCitib29sIHdrU2Nyb2xsYmFyUGFpbnRlcklzSG9yaXpvbnRhbChXS1Njcm9sbGJhclBhaW50
ZXJSZWYgcGFpbnRlcikgeworICAgIHJldHVybiBbcGFpbnRlciBpc0hvcml6b250YWxdOworfQor
CitDR0Zsb2F0IHdrU2Nyb2xsYmFyUGFpbnRlcktub2JBbHBoYShXS1Njcm9sbGJhclBhaW50ZXJS
ZWYgcGFpbnRlcikgeworICAgIHJldHVybiBbcGFpbnRlciBrbm9iQWxwaGFdOworfQorCit2b2lk
IHdrU2Nyb2xsYmFyUGFpbnRlclNldE92ZXJsYXlTdGF0ZShXS1Njcm9sbGJhclBhaW50ZXJSZWYg
cGFpbnRlciwgaW50IG92ZXJsYXlTY3JvbGxlclN0YXRlKSB7CisgICAgW3BhaW50ZXIgc2V0T3Zl
cmxheVNjcm9sbGVyU3RhdGU6b3ZlcmxheVNjcm9sbGVyU3RhdGUKKyAgICAgICAgICAgICAgICAg
ICAgZm9yY2VJbW1lZGlhdGVseTpZRVNdOworfQorCit2b2lkIHdrU2Nyb2xsYmFyUGFpbnRlclBh
aW50KFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyLCBib29sIGVuYWJsZWQsIGRvdWJsZSB2
YWx1ZSwgQ0dGbG9hdCBwcm9wb3J0aW9uLCBOU1JlY3QgZnJhbWVSZWN0KSB7CisgICAgW3BhaW50
ZXIgc2V0RW5hYmxlZDplbmFibGVkXTsKKyAgICBbcGFpbnRlciBzZXRCb3VuZHNTaXplOmZyYW1l
UmVjdC5zaXplXTsKKyAgICBbcGFpbnRlciBzZXREb3VibGVWYWx1ZTp2YWx1ZV07CisgICAgW3Bh
aW50ZXIgc2V0S25vYlByb3BvcnRpb246cHJvcG9ydGlvbl07CisKKyAgICBpZiAoW3BhaW50ZXIg
aXNIb3Jpem9udGFsXSkKKyAgICAgICAgZnJhbWVSZWN0LnNpemUuaGVpZ2h0ID0gW3BhaW50ZXIg
dHJhY2tXaWR0aF07CisgICAgZWxzZQorICAgICAgICBmcmFtZVJlY3Quc2l6ZS53aWR0aCA9IFtw
YWludGVyIHRyYWNrV2lkdGhdOworCisgICAgW3BhaW50ZXIgZHJhd0tub2JTbG90SW5SZWN0OmZy
YW1lUmVjdCBoaWdobGlnaHQ6Tk9dOworICAgIFtwYWludGVyIGRyYXdLbm9iXTsKK30KKworaW50
IHdrU2Nyb2xsYmFyTWluaW11bVRodW1iTGVuZ3RoKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWlu
dGVyKSB7CisgICAgcmV0dXJuIFtwYWludGVyIGtub2JNaW5MZW5ndGhdOworfQorCit2b2lkIHdr
U2Nyb2xsYmFyUGFpbnRlclNldERlbGVnYXRlKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVy
LCBpZCBzY3JvbGxiYXJQYWludGVyRGVsZWdhdGUpIHsKKyAgICBbcGFpbnRlciBzZXREZWxlZ2F0
ZTpzY3JvbGxiYXJQYWludGVyRGVsZWdhdGVdOworfQorCitDR0Zsb2F0IHdrU2Nyb2xsYmFyUGFp
bnRlclRyYWNrQWxwaGEoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIpIHsKKyAgICByZXR1
cm4gW3BhaW50ZXIgdHJhY2tBbHBoYV07Cit9CisKK1dLU2Nyb2xsYmFyUGFpbnRlclJlZiB3a01h
a2VTY3JvbGxiYXJQYWludGVyKGludCBjb250cm9sU2l6ZSwgYm9vbCBpc0hvcml6b250YWwpIHsK
KyAgICByZXR1cm4gd2tNYWtlU2Nyb2xsYmFyUmVwbGFjZW1lbnRQYWludGVyKG5pbCwgd2tTY3Jv
bGxiYXJQYWludGVyVXNlc092ZXJsYXlTY3JvbGxlcnMoKSwgY29udHJvbFNpemUsIGlzSG9yaXpv
bnRhbCk7Cit9CisKK2ludCB3a1Njcm9sbGJhclRoaWNrbmVzcyhpbnQgY29udHJvbFNpemUpIHsK
KyAgICByZXR1cm4gW3drTWFrZVNjcm9sbGJhclBhaW50ZXIoY29udHJvbFNpemUsIGZhbHNlKSB0
cmFja0JveFdpZHRoXTsKK30KKworaW50IHdrU2Nyb2xsYmFyTWluaW11bVRvdGFsTGVuZ3RoTmVl
ZGVkRm9yVGh1bWIoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIpIHsKKyAgICAvLyBUT0RP
KHNhaWwpOiBUaGlzIGRvZXNuJ3QgbWF0Y2ggdGhlIGltcGxlbWVudGF0aW9uIGluIFdlYktpdFN5
c3RlbUludGVyZmFjZS4KKyAgICByZXR1cm4gd2tTY3JvbGxiYXJNaW5pbXVtVGh1bWJMZW5ndGgo
cGFpbnRlcik7Cit9CisKK1dLU2Nyb2xsYmFyUGFpbnRlclJlZiB3a1ZlcnRpY2FsU2Nyb2xsYmFy
UGFpbnRlckZvckNvbnRyb2xsZXIoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBjb250
cm9sbGVyKSB7CisgICAgcmV0dXJuIFtjb250cm9sbGVyIHZlcnRpY2FsU2Nyb2xsZXJJbXBdOwor
fQorCitXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tIb3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlckZv
ckNvbnRyb2xsZXIoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKSB7
CisgICAgcmV0dXJuIFtjb250cm9sbGVyIGhvcml6b250YWxTY3JvbGxlckltcF07Cit9CisKK1dL
U2Nyb2xsYmFyUGFpbnRlclJlZiB3a01ha2VTY3JvbGxiYXJSZXBsYWNlbWVudFBhaW50ZXIoV0tT
Y3JvbGxiYXJQYWludGVyUmVmIG9sZFBhaW50ZXIsIGludCBuZXdTdHlsZSwgaW50IGNvbnRyb2xT
aXplLCBib29sIGlzSG9yaXpvbnRhbCkgeworICAgIGlmICghSXNTY3JvbGxiYXJPdmVybGF5QVBJ
QXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFtMb29rVXBOU1Nj
cm9sbGVySW1wQ2xhc3MoKSBzY3JvbGxlckltcFdpdGhTdHlsZTpuZXdTdHlsZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFNpemU6U2Nyb2xs
YmFyQ29udHJvbFNpemVUb05TQ29udHJvbFNpemUoY29udHJvbFNpemUpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbDppc0hvcml6b250
YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2luZ1Njcm9s
bGVySW1wOm9sZFBhaW50ZXJdOworfQorCit2b2lkIHdrU2V0UGFpbnRlckZvclBhaW50ZXJDb250
cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxlciwgV0tTY3Jv
bGxiYXJQYWludGVyUmVmIHBhaW50ZXIsIGJvb2wgaXNIb3Jpem9udGFsKSB7CisgICAgaWYgKGlz
SG9yaXpvbnRhbCkKKyAgICAgICAgW2NvbnRyb2xsZXIgc2V0SG9yaXpvbnRhbFNjcm9sbGVySW1w
OnBhaW50ZXJdOworICAgIGVsc2UKKyAgICAgICAgW2NvbnRyb2xsZXIgc2V0VmVydGljYWxTY3Jv
bGxlckltcDpwYWludGVyXTsKK30KKwordm9pZCB3a1NldFNjcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyU3R5bGUoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBwYWludGVyLCBpbnQgbmV3
U3R5bGUpIHsKKyAgICBbcGFpbnRlciBzZXRTY3JvbGxlclN0eWxlOm5ld1N0eWxlXTsKK30KKwor
Q0dSZWN0IHdrU2Nyb2xsYmFyUGFpbnRlcktub2JSZWN0KFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBw
YWludGVyKSB7CisgICAgcmV0dXJuIE5TUmVjdFRvQ0dSZWN0KE5TWmVyb1JlY3QpOworfQorCit2
b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JBbHBoYShXS1Njcm9sbGJhclBhaW50ZXJSZWYg
cGFpbnRlciwgQ0dGbG9hdCBhbHBoYSkgeworICAgIFtwYWludGVyIHNldEtub2JBbHBoYTphbHBo
YV07Cit9CisKK3ZvaWQgd2tTZXRTY3JvbGxiYXJQYWludGVyVHJhY2tBbHBoYShXS1Njcm9sbGJh
clBhaW50ZXJSZWYgcGFpbnRlciwgQ0dGbG9hdCBhbHBoYSkgeworICAgIFtwYWludGVyIHNldFRy
YWNrQWxwaGE6YWxwaGFdOworfQorCit2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JTdHls
ZShXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlciwgd2tTY3JvbGxlcktub2JTdHlsZSBzdHls
ZSkgeworICAgIC8vIFRPRE8oc2FpbCk6IEEga25vYiBzdHlsZSBBUEkgZG9lc24ndCBleGlzdCBp
biB0aGUgc2VlZHMgY3VycmVudGx5IGF2YWlsYWJsZS4gCit9CisKK1dLU2Nyb2xsYmFyUGFpbnRl
ckNvbnRyb2xsZXJSZWYgd2tNYWtlU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIoaWQgcGFpbnRl
ckNvbnRyb2xsZXJEZWxlZ2F0ZSkgeworICAgIGlmICghSXNTY3JvbGxiYXJPdmVybGF5QVBJQXZh
aWxhYmxlKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgTlNTY3JvbGxlckltcFBhaXIqIGNv
bnRyb2xsZXIgPSBbW1tMb29rVXBOU1Njcm9sbGVySW1wUGFpckNsYXNzKCkgYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXTsKKyAgICBbY29udHJvbGxlciBzZXREZWxlZ2F0ZTpwYWludGVyQ29udHJv
bGxlckRlbGVnYXRlXTsKKyAgICBbY29udHJvbGxlciBzZXRTY3JvbGxlclN0eWxlOndrU2Nyb2xs
YmFyUGFpbnRlclVzZXNPdmVybGF5U2Nyb2xsZXJzKCldOworICAgIHJldHVybiBjb250cm9sbGVy
OworfQorCit2b2lkIHdrQ29udGVudEFyZWFTY3JvbGxlZChXS1Njcm9sbGJhclBhaW50ZXJDb250
cm9sbGVyUmVmIGNvbnRyb2xsZXIpIHsKKyAgICBbY29udHJvbGxlciBjb250ZW50QXJlYVNjcm9s
bGVkXTsKK30KKwordm9pZCB3a0NvbnRlbnRBcmVhV2lsbFBhaW50KFdLU2Nyb2xsYmFyUGFpbnRl
ckNvbnRyb2xsZXJSZWYgY29udHJvbGxlcikgeworICAgIFtjb250cm9sbGVyIGNvbnRlbnRBcmVh
V2lsbERyYXddOworfQorCit2b2lkIHdrTW91c2VFbnRlcmVkQ29udGVudEFyZWEoV0tTY3JvbGxi
YXJQYWludGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKSB7CisgICAgW2NvbnRyb2xsZXIgbW91
c2VFbnRlcmVkQ29udGVudEFyZWFdOworfQorCit2b2lkIHdrTW91c2VFeGl0ZWRDb250ZW50QXJl
YShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xsZXIpIHsKKyAgICBbY29u
dHJvbGxlciBtb3VzZUV4aXRlZENvbnRlbnRBcmVhXTsKK30KKwordm9pZCB3a01vdXNlTW92ZWRJ
bkNvbnRlbnRBcmVhKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxlcikg
eworICAgIFtjb250cm9sbGVyIG1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhXTsKK30KKwordm9pZCB3
a1dpbGxTdGFydExpdmVSZXNpemUoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBjb250
cm9sbGVyKSB7CisgICAgW2NvbnRyb2xsZXIgc3RhcnRMaXZlUmVzaXplXTsKK30KKwordm9pZCB3
a0NvbnRlbnRBcmVhUmVzaXplZChXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRy
b2xsZXIpIHsKKyAgICBbY29udHJvbGxlciBjb250ZW50QXJlYURpZFJlc2l6ZV07Cit9CisKK3Zv
aWQgd2tXaWxsRW5kTGl2ZVJlc2l6ZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNv
bnRyb2xsZXIpIHsKKyAgICBbY29udHJvbGxlciBlbmRMaXZlUmVzaXplXTsKK30KKwordm9pZCB3
a0NvbnRlbnRBcmVhRGlkU2hvdyhXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRy
b2xsZXIpIHsKKyAgICBbY29udHJvbGxlciB3aW5kb3dPcmRlcmVkSW5dOworfQorCit2b2lkIHdr
Q29udGVudEFyZWFEaWRIaWRlKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJv
bGxlcikgeworICAgIFtjb250cm9sbGVyIHdpbmRvd09yZGVyZWRPdXRdOworfQorCit2b2lkIHdr
RGlkQmVnaW5TY3JvbGxHZXN0dXJlKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29u
dHJvbGxlcikgeworICAgIFtjb250cm9sbGVyIGJlZ2luU2Nyb2xsR2VzdHVyZV07Cit9CisKK3Zv
aWQgd2tEaWRFbmRTY3JvbGxHZXN0dXJlKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYg
Y29udHJvbGxlcikgeworICAgIFtjb250cm9sbGVyIGVuZFNjcm9sbEdlc3R1cmVdOworfQorCit2
b2lkIHdrU2Nyb2xsYmFyUGFpbnRlckZvcmNlRmxhc2hTY3JvbGxlcnMoV0tTY3JvbGxiYXJQYWlu
dGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKSB7CisgICAgW2NvbnRyb2xsZXIgZmxhc2hTY3Jv
bGxlcnNdOworfQorCitib29sIElzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpIHsKKyAg
ICAvLyBUT0RPKHNhaWwpOiBEaXNhYmxlIG92ZXJsYXkgc2Nyb2xsYmFycyBmb3Igbm93IHVudGls
IHRoZSBmb2xsb3dpbmcgaXNzdWVzIGFyZSBmaXhlZDoKKyAgICAvLyAjMTogSW52YWxpZGF0aW9u
IGlzc3VlcyBjYXVzZXMgdGhlIHNjcm9sbGJhciB0byBsZWF2ZSB0cmFpbGluZyBhcnRpZmFjdHMu
CisgICAgLy8gIzI6IFZhcmlvdXMgbWVzc2FnZXMgc3VjaCBhcyBsaXZlIHJlc2l6ZSBzdGFydGVk
L2VuZGVkIG5lZWQgdG8gYmUgcGlwZWQgZnJvbSB0aGUgVUkuCisgICAgLy8gIzM6IEZpbmQgdGlj
ayBtYXJrcyBuZWVkIHRvIGJlIGRyYXduIG9uIHRoZSBzY3JvbGxiYXIgdHJhY2suCisgICAgLy8g
IzQ6IE5lZWQgdG8gaGF2ZSB0aGUgdGhlbWUgZW5naW5lIGRyYXcgdGhlIHRodW1iLgorICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBib29sIGFwaUF2YWlsYWJsZSA9IFtMb29rVXBOU1Nj
cm9sbGVySW1wQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNjcm9sbGVySW1w
V2l0aFN0eWxlOmNvbnRyb2xTaXplOmhvcml6b250YWw6cmVwbGFjaW5nU2Nyb2xsZXJJbXA6KV0g
JiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTG9va1VwTlNTY3JvbGxlckltcFBh
aXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihzY3JvbGxlclN0
eWxlKV07CisgICAgcmV0dXJuIGFwaUF2YWlsYWJsZTsKK30KKworI2VuZGlmIC8vIFVTRShXS19T
Q1JPTExCQVJfUEFJTlRFUikK
</data>
<flag name="review"
          id="84411"
          type_id="1"
          status="-"
          setter="mihaip"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91585</attachid>
            <date>2011-04-28 16:27:04 -0700</date>
            <delta_ts>2011-04-29 14:00:23 -0700</delta_ts>
            <desc>Addressed review comments</desc>
            <filename>overlay_functions.patch</filename>
            <type>text/plain</type>
            <size>19780</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYzgzZmFhLi40N2FiY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTEtMDQtMjggIFNhaWxlc2ggQWdyYXdhbCAgPHNhaWxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9taXVtIE1h
YzogQWRkIHNjcm9sbGJhciBvdmVybGF5IGRyYXdpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTc0MQorCisgICAgICAgIFRoZXNl
IGZ1bmN0aW9ucyBhcmUgc2ltcGx5IGNvcGllZCBmcm9tIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
IFRoZXNlIHdpbGwgYmUgdXNlZCB0byBpbXBsZW1lbnQgb3ZlcmxheSBzY3JvbGxiYXJzIGZvciBD
aHJvbWl1bSBNYWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3Zl
cmxheVV0aWxpdGllc01hYy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKExvb2tVcE5T
U2Nyb2xsZXJJbXBDbGFzcyk6CisgICAgICAgIChMb29rVXBOU1Njcm9sbGVySW1wUGFpckNsYXNz
KToKKyAgICAgICAgKFNjcm9sbGJhckNvbnRyb2xTaXplVG9OU0NvbnRyb2xTaXplKToKKyAgICAg
ICAgKHdrU2Nyb2xsYmFyUGFpbnRlclVzZXNPdmVybGF5U2Nyb2xsZXJzKToKKyAgICAgICAgKHdr
U2Nyb2xsYmFyUGFpbnRlcklzSG9yaXpvbnRhbCk6CisgICAgICAgICh3a1Njcm9sbGJhclBhaW50
ZXJLbm9iQWxwaGEpOgorICAgICAgICAod2tTY3JvbGxiYXJQYWludGVyU2V0T3ZlcmxheVN0YXRl
KToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlclBhaW50KToKKyAgICAgICAgKHdrU2Nyb2xs
YmFyTWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlclNldERl
bGVnYXRlKToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlclRyYWNrQWxwaGEpOgorICAgICAg
ICAod2tNYWtlU2Nyb2xsYmFyUGFpbnRlcik6CisgICAgICAgICh3a1Njcm9sbGJhclRoaWNrbmVz
cyk6CisgICAgICAgICh3a1Njcm9sbGJhck1pbmltdW1Ub3RhbExlbmd0aE5lZWRlZEZvclRodW1i
KToKKyAgICAgICAgKHdrVmVydGljYWxTY3JvbGxiYXJQYWludGVyRm9yQ29udHJvbGxlcik6Cisg
ICAgICAgICh3a0hvcml6b250YWxTY3JvbGxiYXJQYWludGVyRm9yQ29udHJvbGxlcik6CisgICAg
ICAgICh3a01ha2VTY3JvbGxiYXJSZXBsYWNlbWVudFBhaW50ZXIpOgorICAgICAgICAod2tTZXRQ
YWludGVyRm9yUGFpbnRlckNvbnRyb2xsZXIpOgorICAgICAgICAod2tTZXRTY3JvbGxiYXJQYWlu
dGVyQ29udHJvbGxlclN0eWxlKToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlcktub2JSZWN0
KToKKyAgICAgICAgKHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JBbHBoYSk6CisgICAgICAgICh3
a1NldFNjcm9sbGJhclBhaW50ZXJUcmFja0FscGhhKToKKyAgICAgICAgKHdrU2V0U2Nyb2xsYmFy
UGFpbnRlcktub2JTdHlsZSk6CisgICAgICAgICh3a01ha2VTY3JvbGxiYXJQYWludGVyQ29udHJv
bGxlcik6CisgICAgICAgICh3a0NvbnRlbnRBcmVhU2Nyb2xsZWQpOgorICAgICAgICAod2tDb250
ZW50QXJlYVdpbGxQYWludCk6CisgICAgICAgICh3a01vdXNlRW50ZXJlZENvbnRlbnRBcmVhKToK
KyAgICAgICAgKHdrTW91c2VFeGl0ZWRDb250ZW50QXJlYSk6CisgICAgICAgICh3a01vdXNlTW92
ZWRJbkNvbnRlbnRBcmVhKToKKyAgICAgICAgKHdrV2lsbFN0YXJ0TGl2ZVJlc2l6ZSk6CisgICAg
ICAgICh3a0NvbnRlbnRBcmVhUmVzaXplZCk6CisgICAgICAgICh3a1dpbGxFbmRMaXZlUmVzaXpl
KToKKyAgICAgICAgKHdrQ29udGVudEFyZWFEaWRTaG93KToKKyAgICAgICAgKHdrQ29udGVudEFy
ZWFEaWRIaWRlKToKKyAgICAgICAgKHdrRGlkQmVnaW5TY3JvbGxHZXN0dXJlKToKKyAgICAgICAg
KHdrRGlkRW5kU2Nyb2xsR2VzdHVyZSk6CisgICAgICAgICh3a1Njcm9sbGJhclBhaW50ZXJGb3Jj
ZUZsYXNoU2Nyb2xsZXJzKToKKyAgICAgICAgKElzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJs
ZSk6CisKIDIwMTEtMDQtMjUgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxYWM5
ODY3Li5iMjkxOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zODA1LDYgKzM4MDUsOCBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TU0xLZXlHZW5lcmF0b3JDaHJvbWl1bS5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNN
YWMuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0
aWxpdGllc01hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFj
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlZjc5MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhck92ZXJs
YXlVdGlsaXRpZXNNYWMuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU2Nyb2xsYmFyT3ZlcmxheVV0
aWxpdGllc01hY19oCisjZGVmaW5lIFNjcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWNfaAorCisj
aWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQorCisvLyBQdWJsaWMgQVBJcyBub3QgYXZhaWxh
YmxlIG9uIHZlcnNpb25zIG9mIE1hYyBvbiB3aGljaCB3ZSBidWlsZAorI2lmIChkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSkK
K2VudW0geworICAgIE5TU2Nyb2xsZXJTdHlsZUxlZ2FjeSAgICAgICA9IDAsCisgICAgTlNTY3Jv
bGxlclN0eWxlT3ZlcmxheSAgICAgID0gMQorfTsKK3R5cGVkZWYgTlNJbnRlZ2VyIE5TU2Nyb2xs
ZXJTdHlsZTsKKyNlbmRpZgorCisjaWZkZWYgX19PQkpDX18KK0BjbGFzcyBOU1Njcm9sbGVySW1w
OworQGNsYXNzIE5TU2Nyb2xsZXJJbXBQYWlyOworI2Vsc2UKK2NsYXNzIE5TU2Nyb2xsZXJJbXA7
CitjbGFzcyBOU1Njcm9sbGVySW1wUGFpcjsKKyNlbmRpZgorCit0eXBlZGVmIE5TU2Nyb2xsZXJJ
bXAqIFdLU2Nyb2xsYmFyUGFpbnRlclJlZjsKK3R5cGVkZWYgTlNTY3JvbGxlckltcFBhaXIqIFdL
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWY7CisKK2Jvb2wgaXNTY3JvbGxiYXJPdmVybGF5
QVBJQXZhaWxhYmxlKCk7CisKKy8vIFNjcm9sbGJhciBQYWludGVyCitib29sIHdrU2Nyb2xsYmFy
UGFpbnRlclVzZXNPdmVybGF5U2Nyb2xsZXJzKHZvaWQpOworYm9vbCB3a1Njcm9sbGJhclBhaW50
ZXJJc0hvcml6b250YWwoV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKK0NHRmxvYXQgd2tTY3JvbGxi
YXJQYWludGVyS25vYkFscGhhKFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7Cit2b2lkIHdrU2Nyb2xs
YmFyUGFpbnRlclNldE92ZXJsYXlTdGF0ZShXS1Njcm9sbGJhclBhaW50ZXJSZWYsIGludCBvdmVy
bGF5U2Nyb2xsZXJTdGF0ZSk7Cit2b2lkIHdrU2Nyb2xsYmFyUGFpbnRlclBhaW50KFdLU2Nyb2xs
YmFyUGFpbnRlclJlZiwgYm9vbCBlbmFibGVkLCBkb3VibGUgdmFsdWUsIENHRmxvYXQgcHJvcG9y
dGlvbiwgTlNSZWN0IGZyYW1lUmVjdCk7CitpbnQgd2tTY3JvbGxiYXJNaW5pbXVtVGh1bWJMZW5n
dGgoV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKK3ZvaWQgd2tTY3JvbGxiYXJQYWludGVyU2V0RGVs
ZWdhdGUoV0tTY3JvbGxiYXJQYWludGVyUmVmLCBpZCBzY3JvbGxiYXJQYWludGVyRGVsZWdhdGUp
OworQ0dGbG9hdCB3a1Njcm9sbGJhclBhaW50ZXJUcmFja0FscGhhKFdLU2Nyb2xsYmFyUGFpbnRl
clJlZik7CitXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tNYWtlU2Nyb2xsYmFyUGFpbnRlcihpbnQg
Y29udHJvbFNpemUsIGJvb2wgaXNIb3Jpem9udGFsKTsKK2ludCB3a1Njcm9sbGJhclRoaWNrbmVz
cyhpbnQgY29udHJvbFNpemUpOworaW50IHdrU2Nyb2xsYmFyTWluaW11bVRvdGFsTGVuZ3RoTmVl
ZGVkRm9yVGh1bWIoV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKK0NHUmVjdCB3a1Njcm9sbGJhclBh
aW50ZXJLbm9iUmVjdChXS1Njcm9sbGJhclBhaW50ZXJSZWYpOworV0tTY3JvbGxiYXJQYWludGVy
UmVmIHdrTWFrZVNjcm9sbGJhclJlcGxhY2VtZW50UGFpbnRlcihXS1Njcm9sbGJhclBhaW50ZXJS
ZWYgb2xkUGFpbnRlciwgaW50IG5ld1N0eWxlLCBpbnQgY29udHJvbFNpemUsIGJvb2wgaXNIb3Jp
em9udGFsKTsKK3ZvaWQgd2tTZXRTY3JvbGxiYXJQYWludGVyS25vYkFscGhhKFdLU2Nyb2xsYmFy
UGFpbnRlclJlZiwgQ0dGbG9hdCk7Cit2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlclRyYWNrQWxw
aGEoV0tTY3JvbGxiYXJQYWludGVyUmVmLCBDR0Zsb2F0KTsKKworZW51bSB7CisgICAgd2tTY3Jv
bGxlcktub2JTdHlsZURlZmF1bHQgPSAwLAorICAgIHdrU2Nyb2xsZXJLbm9iU3R5bGVEYXJrID0g
MSwKKyAgICB3a1Njcm9sbGVyS25vYlN0eWxlTGlnaHQgPSAyCit9OwordHlwZWRlZiB1aW50MzIg
d2tTY3JvbGxlcktub2JTdHlsZTsKK2V4dGVybiB2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktu
b2JTdHlsZShXS1Njcm9sbGJhclBhaW50ZXJSZWYsIHdrU2Nyb2xsZXJLbm9iU3R5bGUpOworCisv
LyBTY3JvbGxiYXIgUGFpbnRlciBDb250cm9sbGVyCitXS1Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyUmVmIHdrTWFrZVNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVyKGlkIHBhaW50ZXJDb250cm9s
bGVyRGVsZWdhdGUpOwordm9pZCB3a0NvbnRlbnRBcmVhU2Nyb2xsZWQoV0tTY3JvbGxiYXJQYWlu
dGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrQ29udGVudEFyZWFXaWxsUGFpbnQoV0tTY3JvbGxi
YXJQYWludGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrTW91c2VFbnRlcmVkQ29udGVudEFyZWEo
V0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrTW91c2VFeGl0ZWRDb250
ZW50QXJlYShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tNb3VzZU1v
dmVkSW5Db250ZW50QXJlYShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQg
d2tXaWxsU3RhcnRMaXZlUmVzaXplKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwor
dm9pZCB3a0NvbnRlbnRBcmVhUmVzaXplZChXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVm
KTsKK3ZvaWQgd2tXaWxsRW5kTGl2ZVJlc2l6ZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
UmVmKTsKK3ZvaWQgd2tDb250ZW50QXJlYURpZFNob3coV0tTY3JvbGxiYXJQYWludGVyQ29udHJv
bGxlclJlZik7Cit2b2lkIHdrQ29udGVudEFyZWFEaWRIaWRlKFdLU2Nyb2xsYmFyUGFpbnRlckNv
bnRyb2xsZXJSZWYpOwordm9pZCB3a0RpZEJlZ2luU2Nyb2xsR2VzdHVyZShXS1Njcm9sbGJhclBh
aW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tEaWRFbmRTY3JvbGxHZXN0dXJlKFdLU2Nyb2xs
YmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwordm9pZCB3a1Njcm9sbGJhclBhaW50ZXJGb3JjZUZs
YXNoU2Nyb2xsZXJzKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwordm9pZCB3a1Nl
dFNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVyU3R5bGUoV0tTY3JvbGxiYXJQYWludGVyQ29udHJv
bGxlclJlZiwgaW50IG5ld1N0eWxlKTsKK3ZvaWQgd2tTZXRQYWludGVyRm9yUGFpbnRlckNvbnRy
b2xsZXIoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiwgV0tTY3JvbGxiYXJQYWludGVy
UmVmLCBib29sIGlzSG9yaXpvbnRhbCk7CitXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tWZXJ0aWNh
bFNjcm9sbGJhclBhaW50ZXJGb3JDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xs
ZXJSZWYpOworV0tTY3JvbGxiYXJQYWludGVyUmVmIHdrSG9yaXpvbnRhbFNjcm9sbGJhclBhaW50
ZXJGb3JDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOworCisjZW5k
aWYgLy8gVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQorCisjZW5kaWYgLy8gU2Nyb2xsYmFyT3Zl
cmxheVV0aWxpdGllc01hY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc01hYy5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTc2OTg5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGll
c01hYy5tbQpAQCAtMCwwICsxLDMzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShXS19T
Q1JPTExCQVJfUEFJTlRFUikKKworI2luY2x1ZGUgIlNjcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNN
YWMuaCIKKyNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2luY2x1ZGUgPENvY29hL0NvY29hLmg+
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBUaGlzIGZpbGUgY29udGFpbnMgdXRpbGl0
aWVzIHRvIGRyYXcgb3ZlcmxheSBzY3JvbGxiYXJzLiBUaGVyZSBhcmUgbm8gcHVibGljCisvLyBB
UElzIHlldCBvbiB0aGUgTWFjIHRvIGRyYXcgb3ZlcmxheSBzY3JvbGxiYXJzIHNvIHdlIHVzZSBw
cml2YXRlIEFQSXMgdGhhdAorLy8gd2UgbG9vayB1cCBhdCBydW50aW1lLiBJZiB0aGUgcHJpdmF0
ZSBBUElzIGRvbid0IGV4aXN0IHRoZW4gdGhlIHdrTWFrZSoKKy8vIGZ1bmN0aW9ucyB3aWxsIHJl
dHVybiBuaWwuCisvLworLy8gTm90ZSwgdGhpcyBmaWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyBjb3Bp
ZWQgZnJvbSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmguCisvLyBVc2luZyB0aGUgc2FtZSBuYW1l
cyBtYWtlcyB0aGUgY29kZSBlYXNpZXIgdG8gbWFpbnRhaW4uCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisvLyBQdWJsaWMgQVBJcyBub3QgYXZhaWxhYmxlIG9uIHZlcnNpb25zIG9mIE1hYyBv
biB3aGljaCB3ZSBidWlsZAorI2lmIChkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpIHx8IGRl
ZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSkKK0BpbnRlcmZhY2UgTlNTY3JvbGxlciAo
TlNPYmplY3QpCisrIChOU1Njcm9sbGVyU3R5bGUpcHJlZmVycmVkU2Nyb2xsZXJTdHlsZTsKK0Bl
bmQKKyNlbmRpZgorCisvLyBUaGVzZSBhcmUgcHJpdmF0ZSBBUElzIHRvIGRyYXcgb3ZlcmxheSBz
Y3JvbGxiYXJzLgorQGludGVyZmFjZSBOU1Njcm9sbGVySW1wIDogTlNPYmplY3QKKworKyAoaWQp
c2Nyb2xsZXJJbXBXaXRoU3R5bGU6KE5TU2Nyb2xsZXJTdHlsZSlzdHlsZQorICAgICAgICAgICAg
ICAgY29udHJvbFNpemU6KE5TQ29udHJvbFNpemUpc2l6ZQorICAgICAgICAgICAgICAgIGhvcml6
b250YWw6KEJPT0wpaG9yaXpvbnRhbAorICAgICAgcmVwbGFjaW5nU2Nyb2xsZXJJbXA6KGlkKXNj
cm9sbGVyOworCitAcHJvcGVydHkgQ0dGbG9hdCBrbm9iQWxwaGE7CitAcHJvcGVydHkgQ0dGbG9h
dCB0cmFja0FscGhhOworQHByb3BlcnR5IENHRmxvYXQga25vYlByb3BvcnRpb247CitAcHJvcGVy
dHkoZ2V0dGVyPWlzRW5hYmxlZCkgQk9PTCBlbmFibGVkOworQHByb3BlcnR5KGdldHRlcj1pc0hv
cml6b250YWwpIEJPT0wgaG9yaXpvbnRhbDsKK0Bwcm9wZXJ0eSBkb3VibGUgZG91YmxlVmFsdWU7
CitAcHJvcGVydHkoYXNzaWduKSBpZCBkZWxlZ2F0ZTsKKworLSAoQ0dGbG9hdClrbm9iTWluTGVu
Z3RoOworLSAoQ0dGbG9hdCl0cmFja0JveFdpZHRoOworLSAoQ0dGbG9hdCl0cmFja1dpZHRoOwor
LSAodm9pZClzZXRCb3VuZHNTaXplOihOU1NpemUpc2l6ZTsKKy0gKHZvaWQpZHJhd0tub2JTbG90
SW5SZWN0OihOU1JlY3QpcmVjdAorICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6KEJPT0wpZmxh
ZzsKKy0gKHZvaWQpZHJhd0tub2I7CistICh2b2lkKXNldE92ZXJsYXlTY3JvbGxlclN0YXRlOihO
U1Njcm9sbGVyU3R5bGUpc3RhdGUKKyAgICAgICAgICAgICAgIGZvcmNlSW1tZWRpYXRlbHk6KEJP
T0wpZmxhZzsKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkKWRlbGVnYXRlOworCitAZW5kCisKKy8v
IFRoZXNlIGFyZSBwcml2YXRlIEFQSXMgdG8gbWFuYWdlIG92ZXJsYXkgc2Nyb2xsYmFycy4KK0Bp
bnRlcmZhY2UgTlNTY3JvbGxlckltcFBhaXIgOiBOU09iamVjdAorCitAcHJvcGVydHkgTlNTY3Jv
bGxlclN0eWxlIHNjcm9sbGVyU3R5bGU7CitAcHJvcGVydHkocmV0YWluKSBOU1Njcm9sbGVySW1w
ICpob3Jpem9udGFsU2Nyb2xsZXJJbXA7CitAcHJvcGVydHkocmV0YWluKSBOU1Njcm9sbGVySW1w
ICp2ZXJ0aWNhbFNjcm9sbGVySW1wOworQHByb3BlcnR5KGFzc2lnbikgaWQgZGVsZWdhdGU7CisK
Ky0gKHZvaWQpZmxhc2hTY3JvbGxlcnM7CistICh2b2lkKWNvbnRlbnRBcmVhU2Nyb2xsZWQ7Cist
ICh2b2lkKWNvbnRlbnRBcmVhV2lsbERyYXc7CistICh2b2lkKWNvbnRlbnRBcmVhRGlkSGlkZTsK
Ky0gKHZvaWQpd2luZG93T3JkZXJlZE91dDsKKy0gKHZvaWQpd2luZG93T3JkZXJlZEluOworLSAo
dm9pZCltb3VzZUVudGVyZWRDb250ZW50QXJlYTsKKy0gKHZvaWQpbW91c2VNb3ZlZEluQ29udGVu
dEFyZWE7CistICh2b2lkKW1vdXNlRXhpdGVkQ29udGVudEFyZWE7CistICh2b2lkKXN0YXJ0TGl2
ZVJlc2l6ZTsKKy0gKHZvaWQpY29udGVudEFyZWFEaWRSZXNpemU7CistICh2b2lkKWVuZExpdmVS
ZXNpemU7CistICh2b2lkKWJlZ2luU2Nyb2xsR2VzdHVyZTsKKy0gKHZvaWQpZW5kU2Nyb2xsR2Vz
dHVyZTsKKworQGVuZAorCitzdGF0aWMgQ2xhc3MgbG9va1VwTlNTY3JvbGxlckltcENsYXNzKCkK
K3sKKyAgICBzdGF0aWMgQ2xhc3MgcmVzdWx0ID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJOU1Njcm9s
bGVySW1wIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENsYXNzIGxvb2tVcE5T
U2Nyb2xsZXJJbXBQYWlyQ2xhc3MoKQoreworICAgIHN0YXRpYyBDbGFzcyByZXN1bHQgPSBOU0Ns
YXNzRnJvbVN0cmluZyhAIk5TU2Nyb2xsZXJJbXBQYWlyIik7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworc3RhdGljIE5TQ29udHJvbFNpemUgc2Nyb2xsYmFyQ29udHJvbFNpemVUb05TQ29udHJv
bFNpemUoaW50IGNvbnRyb2xTaXplKQoreworICAgIHJldHVybiBjb250cm9sU2l6ZSA9PSBXZWJD
b3JlOjpSZWd1bGFyU2Nyb2xsYmFyID8gTlNSZWd1bGFyQ29udHJvbFNpemUgOiBOU1NtYWxsQ29u
dHJvbFNpemU7Cit9CisKK2Jvb2wgd2tTY3JvbGxiYXJQYWludGVyVXNlc092ZXJsYXlTY3JvbGxl
cnModm9pZCkKK3sKKyAgICBpZiAoW05TU2Nyb2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihwcmVmZXJyZWRTY3JvbGxlclN0eWxlKV0pCisgICAgICAgIHJldHVybiBbTlNTY3JvbGxl
ciBwcmVmZXJyZWRTY3JvbGxlclN0eWxlXTsKKyAgICByZXR1cm4gTlNTY3JvbGxlclN0eWxlTGVn
YWN5OworfQorCitib29sIHdrU2Nyb2xsYmFyUGFpbnRlcklzSG9yaXpvbnRhbChXS1Njcm9sbGJh
clBhaW50ZXJSZWYgcGFpbnRlcikKK3sKKyAgICByZXR1cm4gW3BhaW50ZXIgaXNIb3Jpem9udGFs
XTsKK30KKworQ0dGbG9hdCB3a1Njcm9sbGJhclBhaW50ZXJLbm9iQWxwaGEoV0tTY3JvbGxiYXJQ
YWludGVyUmVmIHBhaW50ZXIpCit7CisgICAgcmV0dXJuIFtwYWludGVyIGtub2JBbHBoYV07Cit9
CisKK3ZvaWQgd2tTY3JvbGxiYXJQYWludGVyU2V0T3ZlcmxheVN0YXRlKFdLU2Nyb2xsYmFyUGFp
bnRlclJlZiBwYWludGVyLCBpbnQgb3ZlcmxheVNjcm9sbGVyU3RhdGUpCit7CisgICAgW3BhaW50
ZXIgc2V0T3ZlcmxheVNjcm9sbGVyU3RhdGU6b3ZlcmxheVNjcm9sbGVyU3RhdGUKKyAgICAgICAg
ICAgICAgICAgICAgZm9yY2VJbW1lZGlhdGVseTpZRVNdOworfQorCit2b2lkIHdrU2Nyb2xsYmFy
UGFpbnRlclBhaW50KFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyLCBib29sIGVuYWJsZWQs
IGRvdWJsZSB2YWx1ZSwgQ0dGbG9hdCBwcm9wb3J0aW9uLCBOU1JlY3QgZnJhbWVSZWN0KQorewor
ICAgIFtwYWludGVyIHNldEVuYWJsZWQ6ZW5hYmxlZF07CisgICAgW3BhaW50ZXIgc2V0Qm91bmRz
U2l6ZTpmcmFtZVJlY3Quc2l6ZV07CisgICAgW3BhaW50ZXIgc2V0RG91YmxlVmFsdWU6dmFsdWVd
OworICAgIFtwYWludGVyIHNldEtub2JQcm9wb3J0aW9uOnByb3BvcnRpb25dOworCisgICAgaWYg
KFtwYWludGVyIGlzSG9yaXpvbnRhbF0pCisgICAgICAgIGZyYW1lUmVjdC5zaXplLmhlaWdodCA9
IFtwYWludGVyIHRyYWNrV2lkdGhdOworICAgIGVsc2UKKyAgICAgICAgZnJhbWVSZWN0LnNpemUu
d2lkdGggPSBbcGFpbnRlciB0cmFja1dpZHRoXTsKKworICAgIFtwYWludGVyIGRyYXdLbm9iU2xv
dEluUmVjdDpmcmFtZVJlY3QgaGlnaGxpZ2h0Ok5PXTsKKyAgICBbcGFpbnRlciBkcmF3S25vYl07
Cit9CisKK2ludCB3a1Njcm9sbGJhck1pbmltdW1UaHVtYkxlbmd0aChXS1Njcm9sbGJhclBhaW50
ZXJSZWYgcGFpbnRlcikKK3sKKyAgICByZXR1cm4gW3BhaW50ZXIga25vYk1pbkxlbmd0aF07Cit9
CisKK3ZvaWQgd2tTY3JvbGxiYXJQYWludGVyU2V0RGVsZWdhdGUoV0tTY3JvbGxiYXJQYWludGVy
UmVmIHBhaW50ZXIsIGlkIHNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSkKK3sKKyAgICBbcGFpbnRl
ciBzZXREZWxlZ2F0ZTpzY3JvbGxiYXJQYWludGVyRGVsZWdhdGVdOworfQorCitDR0Zsb2F0IHdr
U2Nyb2xsYmFyUGFpbnRlclRyYWNrQWxwaGEoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIp
Cit7CisgICAgcmV0dXJuIFtwYWludGVyIHRyYWNrQWxwaGFdOworfQorCitXS1Njcm9sbGJhclBh
aW50ZXJSZWYgd2tNYWtlU2Nyb2xsYmFyUGFpbnRlcihpbnQgY29udHJvbFNpemUsIGJvb2wgaXNI
b3Jpem9udGFsKQoreworICAgIHJldHVybiB3a01ha2VTY3JvbGxiYXJSZXBsYWNlbWVudFBhaW50
ZXIobmlsLCB3a1Njcm9sbGJhclBhaW50ZXJVc2VzT3ZlcmxheVNjcm9sbGVycygpLCBjb250cm9s
U2l6ZSwgaXNIb3Jpem9udGFsKTsKK30KKworaW50IHdrU2Nyb2xsYmFyVGhpY2tuZXNzKGludCBj
b250cm9sU2l6ZSkKK3sKKyAgICByZXR1cm4gW3drTWFrZVNjcm9sbGJhclBhaW50ZXIoY29udHJv
bFNpemUsIGZhbHNlKSB0cmFja0JveFdpZHRoXTsKK30KKworaW50IHdrU2Nyb2xsYmFyTWluaW11
bVRvdGFsTGVuZ3RoTmVlZGVkRm9yVGh1bWIoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIp
Cit7CisgICAgLy8gVE9ETyhzYWlsKTogVGhpcyBkb2Vzbid0IG1hdGNoIHRoZSBpbXBsZW1lbnRh
dGlvbiBpbiBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuCisgICAgcmV0dXJuIHdrU2Nyb2xsYmFyTWlu
aW11bVRodW1iTGVuZ3RoKHBhaW50ZXIpOworfQorCitXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tW
ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXJGb3JDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNv
bnRyb2xsZXJSZWYgY29udHJvbGxlcikKK3sKKyAgICByZXR1cm4gW2NvbnRyb2xsZXIgdmVydGlj
YWxTY3JvbGxlckltcF07Cit9CisKK1dLU2Nyb2xsYmFyUGFpbnRlclJlZiB3a0hvcml6b250YWxT
Y3JvbGxiYXJQYWludGVyRm9yQ29udHJvbGxlcihXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
UmVmIGNvbnRyb2xsZXIpCit7CisgICAgcmV0dXJuIFtjb250cm9sbGVyIGhvcml6b250YWxTY3Jv
bGxlckltcF07Cit9CisKK1dLU2Nyb2xsYmFyUGFpbnRlclJlZiB3a01ha2VTY3JvbGxiYXJSZXBs
YWNlbWVudFBhaW50ZXIoV0tTY3JvbGxiYXJQYWludGVyUmVmIG9sZFBhaW50ZXIsIGludCBuZXdT
dHlsZSwgaW50IGNvbnRyb2xTaXplLCBib29sIGlzSG9yaXpvbnRhbCkKK3sKKyAgICBpZiAoIWlz
U2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IHJldHVybiBbbG9va1VwTlNTY3JvbGxlckltcENsYXNzKCkgc2Nyb2xsZXJJbXBXaXRoU3R5bGU6
bmV3U3R5bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRyb2xTaXplOnNjcm9sbGJhckNvbnRyb2xTaXplVG9OU0NvbnRyb2xTaXplKGNvbnRyb2xT
aXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhv
cml6b250YWw6aXNIb3Jpem9udGFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXBsYWNpbmdTY3JvbGxlckltcDpvbGRQYWludGVyXTsKK30KKwordm9pZCB3a1NldFBh
aW50ZXJGb3JQYWludGVyQ29udHJvbGxlcihXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVm
IGNvbnRyb2xsZXIsIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyLCBib29sIGlzSG9yaXpv
bnRhbCkKK3sKKyAgICBpZiAoaXNIb3Jpem9udGFsKQorICAgICAgICBbY29udHJvbGxlciBzZXRI
b3Jpem9udGFsU2Nyb2xsZXJJbXA6cGFpbnRlcl07CisgICAgZWxzZQorICAgICAgICBbY29udHJv
bGxlciBzZXRWZXJ0aWNhbFNjcm9sbGVySW1wOnBhaW50ZXJdOworfQorCit2b2lkIHdrU2V0U2Ny
b2xsYmFyUGFpbnRlckNvbnRyb2xsZXJTdHlsZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
UmVmIHBhaW50ZXIsIGludCBuZXdTdHlsZSkKK3sKKyAgICBbcGFpbnRlciBzZXRTY3JvbGxlclN0
eWxlOm5ld1N0eWxlXTsKK30KKworQ0dSZWN0IHdrU2Nyb2xsYmFyUGFpbnRlcktub2JSZWN0KFdL
U2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyKQoreworICAgIHJldHVybiBOU1JlY3RUb0NHUmVj
dChOU1plcm9SZWN0KTsKK30KKwordm9pZCB3a1NldFNjcm9sbGJhclBhaW50ZXJLbm9iQWxwaGEo
V0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIsIENHRmxvYXQgYWxwaGEpCit7CisgICAgW3Bh
aW50ZXIgc2V0S25vYkFscGhhOmFscGhhXTsKK30KKwordm9pZCB3a1NldFNjcm9sbGJhclBhaW50
ZXJUcmFja0FscGhhKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyLCBDR0Zsb2F0IGFscGhh
KQoreworICAgIFtwYWludGVyIHNldFRyYWNrQWxwaGE6YWxwaGFdOworfQorCit2b2lkIHdrU2V0
U2Nyb2xsYmFyUGFpbnRlcktub2JTdHlsZShXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlciwg
d2tTY3JvbGxlcktub2JTdHlsZSBzdHlsZSkKK3sKKyAgICAvLyBUT0RPKHNhaWwpOiBBIGtub2Ig
c3R5bGUgQVBJIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIHNlZWRzIGN1cnJlbnRseSBhdmFpbGFibGUu
IAorfQorCitXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIHdrTWFrZVNjcm9sbGJhclBh
aW50ZXJDb250cm9sbGVyKGlkIHBhaW50ZXJDb250cm9sbGVyRGVsZWdhdGUpCit7CisgICAgaWYg
KCFpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICBOU1Njcm9sbGVySW1wUGFpciogY29udHJvbGxlciA9IFtbW2xvb2tVcE5TU2Nyb2xsZXJJ
bXBQYWlyQ2xhc3MoKSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFtjb250cm9sbGVy
IHNldERlbGVnYXRlOnBhaW50ZXJDb250cm9sbGVyRGVsZWdhdGVdOworICAgIFtjb250cm9sbGVy
IHNldFNjcm9sbGVyU3R5bGU6d2tTY3JvbGxiYXJQYWludGVyVXNlc092ZXJsYXlTY3JvbGxlcnMo
KV07CisgICAgcmV0dXJuIGNvbnRyb2xsZXI7Cit9CisKK3ZvaWQgd2tDb250ZW50QXJlYVNjcm9s
bGVkKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxlcikKK3sKKyAgICBb
Y29udHJvbGxlciBjb250ZW50QXJlYVNjcm9sbGVkXTsKK30KKwordm9pZCB3a0NvbnRlbnRBcmVh
V2lsbFBhaW50KFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxlcikKK3sK
KyAgICBbY29udHJvbGxlciBjb250ZW50QXJlYVdpbGxEcmF3XTsKK30KKwordm9pZCB3a01vdXNl
RW50ZXJlZENvbnRlbnRBcmVhKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJv
bGxlcikKK3sKKyAgICBbY29udHJvbGxlciBtb3VzZUVudGVyZWRDb250ZW50QXJlYV07Cit9CisK
K3ZvaWQgd2tNb3VzZUV4aXRlZENvbnRlbnRBcmVhKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xs
ZXJSZWYgY29udHJvbGxlcikKK3sKKyAgICBbY29udHJvbGxlciBtb3VzZUV4aXRlZENvbnRlbnRB
cmVhXTsKK30KKwordm9pZCB3a01vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKFdLU2Nyb2xsYmFyUGFp
bnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxlcikKK3sKKyAgICBbY29udHJvbGxlciBtb3VzZU1v
dmVkSW5Db250ZW50QXJlYV07Cit9CisKK3ZvaWQgd2tXaWxsU3RhcnRMaXZlUmVzaXplKFdLU2Ny
b2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxlcikKK3sKKyAgICBbY29udHJvbGxl
ciBzdGFydExpdmVSZXNpemVdOworfQorCit2b2lkIHdrQ29udGVudEFyZWFSZXNpemVkKFdLU2Ny
b2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxlcikKK3sKKyAgICBbY29udHJvbGxl
ciBjb250ZW50QXJlYURpZFJlc2l6ZV07Cit9CisKK3ZvaWQgd2tXaWxsRW5kTGl2ZVJlc2l6ZShX
S1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xsZXIpCit7CisgICAgW2NvbnRy
b2xsZXIgZW5kTGl2ZVJlc2l6ZV07Cit9CisKK3ZvaWQgd2tDb250ZW50QXJlYURpZFNob3coV0tT
Y3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKQoreworICAgIFtjb250cm9s
bGVyIHdpbmRvd09yZGVyZWRJbl07Cit9CisKK3ZvaWQgd2tDb250ZW50QXJlYURpZEhpZGUoV0tT
Y3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKQoreworICAgIFtjb250cm9s
bGVyIHdpbmRvd09yZGVyZWRPdXRdOworfQorCit2b2lkIHdrRGlkQmVnaW5TY3JvbGxHZXN0dXJl
KFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxlcikKK3sKKyAgICBbY29u
dHJvbGxlciBiZWdpblNjcm9sbEdlc3R1cmVdOworfQorCit2b2lkIHdrRGlkRW5kU2Nyb2xsR2Vz
dHVyZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xsZXIpCit7CisgICAg
W2NvbnRyb2xsZXIgZW5kU2Nyb2xsR2VzdHVyZV07Cit9CisKK3ZvaWQgd2tTY3JvbGxiYXJQYWlu
dGVyRm9yY2VGbGFzaFNjcm9sbGVycyhXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNv
bnRyb2xsZXIpCit7CisgICAgW2NvbnRyb2xsZXIgZmxhc2hTY3JvbGxlcnNdOworfQorCitib29s
IGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpCit7CisgICAgLy8gVE9ETyhzYWlsKTog
RGlzYWJsZSBvdmVybGF5IHNjcm9sbGJhcnMgZm9yIG5vdyB1bnRpbCB0aGUgZm9sbG93aW5nIGlz
c3VlcyBhcmUgZml4ZWQ6CisgICAgLy8gIzE6IEludmFsaWRhdGlvbiBpc3N1ZXMgY2F1c2VzIHRo
ZSBzY3JvbGxiYXIgdG8gbGVhdmUgdHJhaWxpbmcgYXJ0aWZhY3RzLgorICAgIC8vICMyOiBWYXJp
b3VzIG1lc3NhZ2VzIHN1Y2ggYXMgbGl2ZSByZXNpemUgc3RhcnRlZC9lbmRlZCBuZWVkIHRvIGJl
IHBpcGVkIGZyb20gdGhlIFVJLgorICAgIC8vICMzOiBGaW5kIHRpY2sgbWFya3MgbmVlZCB0byBi
ZSBkcmF3biBvbiB0aGUgc2Nyb2xsYmFyIHRyYWNrLgorICAgIC8vICM0OiBOZWVkIHRvIGhhdmUg
dGhlIHRoZW1lIGVuZ2luZSBkcmF3IHRoZSB0aHVtYi4KKyAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBzdGF0aWMgYm9vbCBhcGlBdmFpbGFibGUgPSBbbG9va1VwTlNTY3JvbGxlckltcENsYXNzKCkg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzY3JvbGxlckltcFdpdGhTdHlsZTpjb250cm9s
U2l6ZTpob3Jpem9udGFsOnJlcGxhY2luZ1Njcm9sbGVySW1wOildICYmCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW2xvb2tVcE5TU2Nyb2xsZXJJbXBQYWlyQ2xhc3MoKSBpbnN0YW5j
ZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2Nyb2xsZXJTdHlsZSldOworICAgIHJldHVy
biBhcGlBdmFpbGFibGU7Cit9CisKKyNlbmRpZiAvLyBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91727</attachid>
            <date>2011-04-29 14:00:15 -0700</date>
            <delta_ts>2011-04-29 14:14:00 -0700</delta_ts>
            <desc>Fixed some bugs</desc>
            <filename>test_branch.patch</filename>
            <type>text/plain</type>
            <size>19869</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYzgzZmFhLi40N2FiY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTEtMDQtMjggIFNhaWxlc2ggQWdyYXdhbCAgPHNhaWxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9taXVtIE1h
YzogQWRkIHNjcm9sbGJhciBvdmVybGF5IGRyYXdpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTc0MQorCisgICAgICAgIFRoZXNl
IGZ1bmN0aW9ucyBhcmUgc2ltcGx5IGNvcGllZCBmcm9tIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
IFRoZXNlIHdpbGwgYmUgdXNlZCB0byBpbXBsZW1lbnQgb3ZlcmxheSBzY3JvbGxiYXJzIGZvciBD
aHJvbWl1bSBNYWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3Zl
cmxheVV0aWxpdGllc01hYy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKExvb2tVcE5T
U2Nyb2xsZXJJbXBDbGFzcyk6CisgICAgICAgIChMb29rVXBOU1Njcm9sbGVySW1wUGFpckNsYXNz
KToKKyAgICAgICAgKFNjcm9sbGJhckNvbnRyb2xTaXplVG9OU0NvbnRyb2xTaXplKToKKyAgICAg
ICAgKHdrU2Nyb2xsYmFyUGFpbnRlclVzZXNPdmVybGF5U2Nyb2xsZXJzKToKKyAgICAgICAgKHdr
U2Nyb2xsYmFyUGFpbnRlcklzSG9yaXpvbnRhbCk6CisgICAgICAgICh3a1Njcm9sbGJhclBhaW50
ZXJLbm9iQWxwaGEpOgorICAgICAgICAod2tTY3JvbGxiYXJQYWludGVyU2V0T3ZlcmxheVN0YXRl
KToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlclBhaW50KToKKyAgICAgICAgKHdrU2Nyb2xs
YmFyTWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlclNldERl
bGVnYXRlKToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlclRyYWNrQWxwaGEpOgorICAgICAg
ICAod2tNYWtlU2Nyb2xsYmFyUGFpbnRlcik6CisgICAgICAgICh3a1Njcm9sbGJhclRoaWNrbmVz
cyk6CisgICAgICAgICh3a1Njcm9sbGJhck1pbmltdW1Ub3RhbExlbmd0aE5lZWRlZEZvclRodW1i
KToKKyAgICAgICAgKHdrVmVydGljYWxTY3JvbGxiYXJQYWludGVyRm9yQ29udHJvbGxlcik6Cisg
ICAgICAgICh3a0hvcml6b250YWxTY3JvbGxiYXJQYWludGVyRm9yQ29udHJvbGxlcik6CisgICAg
ICAgICh3a01ha2VTY3JvbGxiYXJSZXBsYWNlbWVudFBhaW50ZXIpOgorICAgICAgICAod2tTZXRQ
YWludGVyRm9yUGFpbnRlckNvbnRyb2xsZXIpOgorICAgICAgICAod2tTZXRTY3JvbGxiYXJQYWlu
dGVyQ29udHJvbGxlclN0eWxlKToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlcktub2JSZWN0
KToKKyAgICAgICAgKHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JBbHBoYSk6CisgICAgICAgICh3
a1NldFNjcm9sbGJhclBhaW50ZXJUcmFja0FscGhhKToKKyAgICAgICAgKHdrU2V0U2Nyb2xsYmFy
UGFpbnRlcktub2JTdHlsZSk6CisgICAgICAgICh3a01ha2VTY3JvbGxiYXJQYWludGVyQ29udHJv
bGxlcik6CisgICAgICAgICh3a0NvbnRlbnRBcmVhU2Nyb2xsZWQpOgorICAgICAgICAod2tDb250
ZW50QXJlYVdpbGxQYWludCk6CisgICAgICAgICh3a01vdXNlRW50ZXJlZENvbnRlbnRBcmVhKToK
KyAgICAgICAgKHdrTW91c2VFeGl0ZWRDb250ZW50QXJlYSk6CisgICAgICAgICh3a01vdXNlTW92
ZWRJbkNvbnRlbnRBcmVhKToKKyAgICAgICAgKHdrV2lsbFN0YXJ0TGl2ZVJlc2l6ZSk6CisgICAg
ICAgICh3a0NvbnRlbnRBcmVhUmVzaXplZCk6CisgICAgICAgICh3a1dpbGxFbmRMaXZlUmVzaXpl
KToKKyAgICAgICAgKHdrQ29udGVudEFyZWFEaWRTaG93KToKKyAgICAgICAgKHdrQ29udGVudEFy
ZWFEaWRIaWRlKToKKyAgICAgICAgKHdrRGlkQmVnaW5TY3JvbGxHZXN0dXJlKToKKyAgICAgICAg
KHdrRGlkRW5kU2Nyb2xsR2VzdHVyZSk6CisgICAgICAgICh3a1Njcm9sbGJhclBhaW50ZXJGb3Jj
ZUZsYXNoU2Nyb2xsZXJzKToKKyAgICAgICAgKElzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJs
ZSk6CisKIDIwMTEtMDQtMjUgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxYWM5
ODY3Li5iMjkxOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zODA1LDYgKzM4MDUsOCBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TU0xLZXlHZW5lcmF0b3JDaHJvbWl1bS5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNN
YWMuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0
aWxpdGllc01hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFj
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlZjc5MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhck92ZXJs
YXlVdGlsaXRpZXNNYWMuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU2Nyb2xsYmFyT3ZlcmxheVV0
aWxpdGllc01hY19oCisjZGVmaW5lIFNjcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWNfaAorCisj
aWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQorCisvLyBQdWJsaWMgQVBJcyBub3QgYXZhaWxh
YmxlIG9uIHZlcnNpb25zIG9mIE1hYyBvbiB3aGljaCB3ZSBidWlsZAorI2lmIChkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSkK
K2VudW0geworICAgIE5TU2Nyb2xsZXJTdHlsZUxlZ2FjeSAgICAgICA9IDAsCisgICAgTlNTY3Jv
bGxlclN0eWxlT3ZlcmxheSAgICAgID0gMQorfTsKK3R5cGVkZWYgTlNJbnRlZ2VyIE5TU2Nyb2xs
ZXJTdHlsZTsKKyNlbmRpZgorCisjaWZkZWYgX19PQkpDX18KK0BjbGFzcyBOU1Njcm9sbGVySW1w
OworQGNsYXNzIE5TU2Nyb2xsZXJJbXBQYWlyOworI2Vsc2UKK2NsYXNzIE5TU2Nyb2xsZXJJbXA7
CitjbGFzcyBOU1Njcm9sbGVySW1wUGFpcjsKKyNlbmRpZgorCit0eXBlZGVmIE5TU2Nyb2xsZXJJ
bXAqIFdLU2Nyb2xsYmFyUGFpbnRlclJlZjsKK3R5cGVkZWYgTlNTY3JvbGxlckltcFBhaXIqIFdL
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWY7CisKK2Jvb2wgaXNTY3JvbGxiYXJPdmVybGF5
QVBJQXZhaWxhYmxlKCk7CisKKy8vIFNjcm9sbGJhciBQYWludGVyCitib29sIHdrU2Nyb2xsYmFy
UGFpbnRlclVzZXNPdmVybGF5U2Nyb2xsZXJzKHZvaWQpOworYm9vbCB3a1Njcm9sbGJhclBhaW50
ZXJJc0hvcml6b250YWwoV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKK0NHRmxvYXQgd2tTY3JvbGxi
YXJQYWludGVyS25vYkFscGhhKFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7Cit2b2lkIHdrU2Nyb2xs
YmFyUGFpbnRlclNldE92ZXJsYXlTdGF0ZShXS1Njcm9sbGJhclBhaW50ZXJSZWYsIGludCBvdmVy
bGF5U2Nyb2xsZXJTdGF0ZSk7Cit2b2lkIHdrU2Nyb2xsYmFyUGFpbnRlclBhaW50KFdLU2Nyb2xs
YmFyUGFpbnRlclJlZiwgYm9vbCBlbmFibGVkLCBkb3VibGUgdmFsdWUsIENHRmxvYXQgcHJvcG9y
dGlvbiwgTlNSZWN0IGZyYW1lUmVjdCk7CitpbnQgd2tTY3JvbGxiYXJNaW5pbXVtVGh1bWJMZW5n
dGgoV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKK3ZvaWQgd2tTY3JvbGxiYXJQYWludGVyU2V0RGVs
ZWdhdGUoV0tTY3JvbGxiYXJQYWludGVyUmVmLCBpZCBzY3JvbGxiYXJQYWludGVyRGVsZWdhdGUp
OworQ0dGbG9hdCB3a1Njcm9sbGJhclBhaW50ZXJUcmFja0FscGhhKFdLU2Nyb2xsYmFyUGFpbnRl
clJlZik7CitXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tNYWtlU2Nyb2xsYmFyUGFpbnRlcihpbnQg
Y29udHJvbFNpemUsIGJvb2wgaXNIb3Jpem9udGFsKTsKK2ludCB3a1Njcm9sbGJhclRoaWNrbmVz
cyhpbnQgY29udHJvbFNpemUpOworaW50IHdrU2Nyb2xsYmFyTWluaW11bVRvdGFsTGVuZ3RoTmVl
ZGVkRm9yVGh1bWIoV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKK0NHUmVjdCB3a1Njcm9sbGJhclBh
aW50ZXJLbm9iUmVjdChXS1Njcm9sbGJhclBhaW50ZXJSZWYpOworV0tTY3JvbGxiYXJQYWludGVy
UmVmIHdrTWFrZVNjcm9sbGJhclJlcGxhY2VtZW50UGFpbnRlcihXS1Njcm9sbGJhclBhaW50ZXJS
ZWYgb2xkUGFpbnRlciwgaW50IG5ld1N0eWxlLCBpbnQgY29udHJvbFNpemUsIGJvb2wgaXNIb3Jp
em9udGFsKTsKK3ZvaWQgd2tTZXRTY3JvbGxiYXJQYWludGVyS25vYkFscGhhKFdLU2Nyb2xsYmFy
UGFpbnRlclJlZiwgQ0dGbG9hdCk7Cit2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlclRyYWNrQWxw
aGEoV0tTY3JvbGxiYXJQYWludGVyUmVmLCBDR0Zsb2F0KTsKKworZW51bSB7CisgICAgd2tTY3Jv
bGxlcktub2JTdHlsZURlZmF1bHQgPSAwLAorICAgIHdrU2Nyb2xsZXJLbm9iU3R5bGVEYXJrID0g
MSwKKyAgICB3a1Njcm9sbGVyS25vYlN0eWxlTGlnaHQgPSAyCit9OwordHlwZWRlZiB1aW50MzIg
d2tTY3JvbGxlcktub2JTdHlsZTsKK2V4dGVybiB2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktu
b2JTdHlsZShXS1Njcm9sbGJhclBhaW50ZXJSZWYsIHdrU2Nyb2xsZXJLbm9iU3R5bGUpOworCisv
LyBTY3JvbGxiYXIgUGFpbnRlciBDb250cm9sbGVyCitXS1Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyUmVmIHdrTWFrZVNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVyKGlkIHBhaW50ZXJDb250cm9s
bGVyRGVsZWdhdGUpOwordm9pZCB3a0NvbnRlbnRBcmVhU2Nyb2xsZWQoV0tTY3JvbGxiYXJQYWlu
dGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrQ29udGVudEFyZWFXaWxsUGFpbnQoV0tTY3JvbGxi
YXJQYWludGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrTW91c2VFbnRlcmVkQ29udGVudEFyZWEo
V0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrTW91c2VFeGl0ZWRDb250
ZW50QXJlYShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tNb3VzZU1v
dmVkSW5Db250ZW50QXJlYShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQg
d2tXaWxsU3RhcnRMaXZlUmVzaXplKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwor
dm9pZCB3a0NvbnRlbnRBcmVhUmVzaXplZChXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVm
KTsKK3ZvaWQgd2tXaWxsRW5kTGl2ZVJlc2l6ZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
UmVmKTsKK3ZvaWQgd2tDb250ZW50QXJlYURpZFNob3coV0tTY3JvbGxiYXJQYWludGVyQ29udHJv
bGxlclJlZik7Cit2b2lkIHdrQ29udGVudEFyZWFEaWRIaWRlKFdLU2Nyb2xsYmFyUGFpbnRlckNv
bnRyb2xsZXJSZWYpOwordm9pZCB3a0RpZEJlZ2luU2Nyb2xsR2VzdHVyZShXS1Njcm9sbGJhclBh
aW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tEaWRFbmRTY3JvbGxHZXN0dXJlKFdLU2Nyb2xs
YmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwordm9pZCB3a1Njcm9sbGJhclBhaW50ZXJGb3JjZUZs
YXNoU2Nyb2xsZXJzKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwordm9pZCB3a1Nl
dFNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVyU3R5bGUoV0tTY3JvbGxiYXJQYWludGVyQ29udHJv
bGxlclJlZiwgaW50IG5ld1N0eWxlKTsKK3ZvaWQgd2tTZXRQYWludGVyRm9yUGFpbnRlckNvbnRy
b2xsZXIoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiwgV0tTY3JvbGxiYXJQYWludGVy
UmVmLCBib29sIGlzSG9yaXpvbnRhbCk7CitXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tWZXJ0aWNh
bFNjcm9sbGJhclBhaW50ZXJGb3JDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xs
ZXJSZWYpOworV0tTY3JvbGxiYXJQYWludGVyUmVmIHdrSG9yaXpvbnRhbFNjcm9sbGJhclBhaW50
ZXJGb3JDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOworCisjZW5k
aWYgLy8gVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQorCisjZW5kaWYgLy8gU2Nyb2xsYmFyT3Zl
cmxheVV0aWxpdGllc01hY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc01hYy5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjcxZTY3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGll
c01hYy5tbQpAQCAtMCwwICsxLDM0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShXS19T
Q1JPTExCQVJfUEFJTlRFUikKKworI2luY2x1ZGUgIlNjcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNN
YWMuaCIKKyNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2luY2x1ZGUgPENvY29hL0NvY29hLmg+
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBUaGlzIGZpbGUgY29udGFpbnMgdXRpbGl0
aWVzIHRvIGRyYXcgb3ZlcmxheSBzY3JvbGxiYXJzLiBUaGVyZSBhcmUgbm8gcHVibGljCisvLyBB
UElzIHlldCBvbiB0aGUgTWFjIHRvIGRyYXcgb3ZlcmxheSBzY3JvbGxiYXJzIHNvIHdlIHVzZSBw
cml2YXRlIEFQSXMgdGhhdAorLy8gd2UgbG9vayB1cCBhdCBydW50aW1lLiBJZiB0aGUgcHJpdmF0
ZSBBUElzIGRvbid0IGV4aXN0IHRoZW4gdGhlIHdrTWFrZSoKKy8vIGZ1bmN0aW9ucyB3aWxsIHJl
dHVybiBuaWwuCisvLworLy8gTm90ZSwgdGhpcyBmaWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyBjb3Bp
ZWQgZnJvbSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmguCisvLyBVc2luZyB0aGUgc2FtZSBuYW1l
cyBtYWtlcyB0aGUgY29kZSBlYXNpZXIgdG8gbWFpbnRhaW4uCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisvLyBQdWJsaWMgQVBJcyBub3QgYXZhaWxhYmxlIG9uIHZlcnNpb25zIG9mIE1hYyBv
biB3aGljaCB3ZSBidWlsZAorI2lmIChkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpIHx8IGRl
ZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSkKK0BpbnRlcmZhY2UgTlNTY3JvbGxlciAo
TlNPYmplY3QpCisrIChOU1Njcm9sbGVyU3R5bGUpcHJlZmVycmVkU2Nyb2xsZXJTdHlsZTsKK0Bl
bmQKKyNlbmRpZgorCisvLyBUaGVzZSBhcmUgcHJpdmF0ZSBBUElzIHRvIGRyYXcgb3ZlcmxheSBz
Y3JvbGxiYXJzLgorQGludGVyZmFjZSBOU1Njcm9sbGVySW1wIDogTlNPYmplY3QKKworKyAoaWQp
c2Nyb2xsZXJJbXBXaXRoU3R5bGU6KE5TU2Nyb2xsZXJTdHlsZSlzdHlsZQorICAgICAgICAgICAg
ICAgY29udHJvbFNpemU6KE5TQ29udHJvbFNpemUpc2l6ZQorICAgICAgICAgICAgICAgIGhvcml6
b250YWw6KEJPT0wpaG9yaXpvbnRhbAorICAgICAgcmVwbGFjaW5nU2Nyb2xsZXJJbXA6KGlkKXNj
cm9sbGVyOworCitAcHJvcGVydHkgQ0dGbG9hdCBrbm9iQWxwaGE7CitAcHJvcGVydHkgQ0dGbG9h
dCB0cmFja0FscGhhOworQHByb3BlcnR5IENHRmxvYXQga25vYlByb3BvcnRpb247CitAcHJvcGVy
dHkoZ2V0dGVyPWlzRW5hYmxlZCkgQk9PTCBlbmFibGVkOworQHByb3BlcnR5KGdldHRlcj1pc0hv
cml6b250YWwpIEJPT0wgaG9yaXpvbnRhbDsKK0Bwcm9wZXJ0eSBkb3VibGUgZG91YmxlVmFsdWU7
CitAcHJvcGVydHkoYXNzaWduKSBpZCBkZWxlZ2F0ZTsKKworLSAoQ0dGbG9hdClrbm9iTWluTGVu
Z3RoOworLSAoQ0dGbG9hdCl0cmFja0JveFdpZHRoOworLSAoQ0dGbG9hdCl0cmFja1dpZHRoOwor
LSAodm9pZClzZXRCb3VuZHNTaXplOihOU1NpemUpc2l6ZTsKKy0gKHZvaWQpZHJhd0tub2JTbG90
SW5SZWN0OihOU1JlY3QpcmVjdAorICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6KEJPT0wpZmxh
ZzsKKy0gKHZvaWQpZHJhd0tub2I7CistICh2b2lkKXNldE92ZXJsYXlTY3JvbGxlclN0YXRlOihO
U1Njcm9sbGVyU3R5bGUpc3RhdGUKKyAgICAgICAgICAgICAgIGZvcmNlSW1tZWRpYXRlbHk6KEJP
T0wpZmxhZzsKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkKWRlbGVnYXRlOworCitAZW5kCisKKy8v
IFRoZXNlIGFyZSBwcml2YXRlIEFQSXMgdG8gbWFuYWdlIG92ZXJsYXkgc2Nyb2xsYmFycy4KK0Bp
bnRlcmZhY2UgTlNTY3JvbGxlckltcFBhaXIgOiBOU09iamVjdAorCitAcHJvcGVydHkgTlNTY3Jv
bGxlclN0eWxlIHNjcm9sbGVyU3R5bGU7CitAcHJvcGVydHkocmV0YWluKSBOU1Njcm9sbGVySW1w
ICpob3Jpem9udGFsU2Nyb2xsZXJJbXA7CitAcHJvcGVydHkocmV0YWluKSBOU1Njcm9sbGVySW1w
ICp2ZXJ0aWNhbFNjcm9sbGVySW1wOworQHByb3BlcnR5KGFzc2lnbikgaWQgZGVsZWdhdGU7CisK
Ky0gKHZvaWQpZmxhc2hTY3JvbGxlcnM7CistICh2b2lkKWNvbnRlbnRBcmVhU2Nyb2xsZWQ7Cist
ICh2b2lkKWNvbnRlbnRBcmVhV2lsbERyYXc7CistICh2b2lkKWNvbnRlbnRBcmVhRGlkSGlkZTsK
Ky0gKHZvaWQpd2luZG93T3JkZXJlZE91dDsKKy0gKHZvaWQpd2luZG93T3JkZXJlZEluOworLSAo
dm9pZCltb3VzZUVudGVyZWRDb250ZW50QXJlYTsKKy0gKHZvaWQpbW91c2VNb3ZlZEluQ29udGVu
dEFyZWE7CistICh2b2lkKW1vdXNlRXhpdGVkQ29udGVudEFyZWE7CistICh2b2lkKXN0YXJ0TGl2
ZVJlc2l6ZTsKKy0gKHZvaWQpY29udGVudEFyZWFEaWRSZXNpemU7CistICh2b2lkKWVuZExpdmVS
ZXNpemU7CistICh2b2lkKWJlZ2luU2Nyb2xsR2VzdHVyZTsKKy0gKHZvaWQpZW5kU2Nyb2xsR2Vz
dHVyZTsKKworQGVuZAorCitzdGF0aWMgQ2xhc3MgbG9va1VwTlNTY3JvbGxlckltcENsYXNzKCkK
K3sKKyAgICBzdGF0aWMgQ2xhc3MgcmVzdWx0ID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJOU1Njcm9s
bGVySW1wIik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENsYXNzIGxvb2tVcE5T
U2Nyb2xsZXJJbXBQYWlyQ2xhc3MoKQoreworICAgIHN0YXRpYyBDbGFzcyByZXN1bHQgPSBOU0Ns
YXNzRnJvbVN0cmluZyhAIk5TU2Nyb2xsZXJJbXBQYWlyIik7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworc3RhdGljIE5TQ29udHJvbFNpemUgc2Nyb2xsYmFyQ29udHJvbFNpemVUb05TQ29udHJv
bFNpemUoaW50IGNvbnRyb2xTaXplKQoreworICAgIHJldHVybiBjb250cm9sU2l6ZSA9PSBXZWJD
b3JlOjpSZWd1bGFyU2Nyb2xsYmFyID8gTlNSZWd1bGFyQ29udHJvbFNpemUgOiBOU1NtYWxsQ29u
dHJvbFNpemU7Cit9CisKK3N0YXRpYyBOU1Njcm9sbGVyU3R5bGUgcHJlZmVycmVkU2Nyb2xsZXJT
dHlsZSgpCit7CisgICAgaWYgKFtOU1Njcm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IocHJlZmVycmVkU2Nyb2xsZXJTdHlsZSldKQorICAgICAgICByZXR1cm4gW05TU2Nyb2xsZXIg
cHJlZmVycmVkU2Nyb2xsZXJTdHlsZV07CisgICAgcmV0dXJuIE5TU2Nyb2xsZXJTdHlsZUxlZ2Fj
eTsKK30KKworYm9vbCB3a1Njcm9sbGJhclBhaW50ZXJVc2VzT3ZlcmxheVNjcm9sbGVycyh2b2lk
KQoreworICAgIHJldHVybiBwcmVmZXJyZWRTY3JvbGxlclN0eWxlKCkgPT0gTlNTY3JvbGxlclN0
eWxlT3ZlcmxheTsKK30KKworYm9vbCB3a1Njcm9sbGJhclBhaW50ZXJJc0hvcml6b250YWwoV0tT
Y3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIpCit7CisgICAgcmV0dXJuIFtwYWludGVyIGlzSG9y
aXpvbnRhbF07Cit9CisKK0NHRmxvYXQgd2tTY3JvbGxiYXJQYWludGVyS25vYkFscGhhKFdLU2Ny
b2xsYmFyUGFpbnRlclJlZiBwYWludGVyKQoreworICAgIHJldHVybiBbcGFpbnRlciBrbm9iQWxw
aGFdOworfQorCit2b2lkIHdrU2Nyb2xsYmFyUGFpbnRlclNldE92ZXJsYXlTdGF0ZShXS1Njcm9s
bGJhclBhaW50ZXJSZWYgcGFpbnRlciwgaW50IG92ZXJsYXlTY3JvbGxlclN0YXRlKQoreworICAg
IFtwYWludGVyIHNldE92ZXJsYXlTY3JvbGxlclN0YXRlOm92ZXJsYXlTY3JvbGxlclN0YXRlCisg
ICAgICAgICAgICAgICAgICAgIGZvcmNlSW1tZWRpYXRlbHk6WUVTXTsKK30KKwordm9pZCB3a1Nj
cm9sbGJhclBhaW50ZXJQYWludChXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlciwgYm9vbCBl
bmFibGVkLCBkb3VibGUgdmFsdWUsIENHRmxvYXQgcHJvcG9ydGlvbiwgTlNSZWN0IGZyYW1lUmVj
dCkKK3sKKyAgICBbcGFpbnRlciBzZXRFbmFibGVkOmVuYWJsZWRdOworICAgIFtwYWludGVyIHNl
dEJvdW5kc1NpemU6ZnJhbWVSZWN0LnNpemVdOworICAgIFtwYWludGVyIHNldERvdWJsZVZhbHVl
OnZhbHVlXTsKKyAgICBbcGFpbnRlciBzZXRLbm9iUHJvcG9ydGlvbjpwcm9wb3J0aW9uXTsKKwor
ICAgIGlmIChbcGFpbnRlciBpc0hvcml6b250YWxdKQorICAgICAgICBmcmFtZVJlY3Quc2l6ZS5o
ZWlnaHQgPSBbcGFpbnRlciB0cmFja1dpZHRoXTsKKyAgICBlbHNlCisgICAgICAgIGZyYW1lUmVj
dC5zaXplLndpZHRoID0gW3BhaW50ZXIgdHJhY2tXaWR0aF07CisKKyAgICBbcGFpbnRlciBkcmF3
S25vYlNsb3RJblJlY3Q6ZnJhbWVSZWN0IGhpZ2hsaWdodDpOT107CisgICAgW3BhaW50ZXIgZHJh
d0tub2JdOworfQorCitpbnQgd2tTY3JvbGxiYXJNaW5pbXVtVGh1bWJMZW5ndGgoV0tTY3JvbGxi
YXJQYWludGVyUmVmIHBhaW50ZXIpCit7CisgICAgcmV0dXJuIFtwYWludGVyIGtub2JNaW5MZW5n
dGhdOworfQorCit2b2lkIHdrU2Nyb2xsYmFyUGFpbnRlclNldERlbGVnYXRlKFdLU2Nyb2xsYmFy
UGFpbnRlclJlZiBwYWludGVyLCBpZCBzY3JvbGxiYXJQYWludGVyRGVsZWdhdGUpCit7CisgICAg
W3BhaW50ZXIgc2V0RGVsZWdhdGU6c2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlXTsKK30KKworQ0dG
bG9hdCB3a1Njcm9sbGJhclBhaW50ZXJUcmFja0FscGhhKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBw
YWludGVyKQoreworICAgIHJldHVybiBbcGFpbnRlciB0cmFja0FscGhhXTsKK30KKworV0tTY3Jv
bGxiYXJQYWludGVyUmVmIHdrTWFrZVNjcm9sbGJhclBhaW50ZXIoaW50IGNvbnRyb2xTaXplLCBi
b29sIGlzSG9yaXpvbnRhbCkKK3sKKyAgICByZXR1cm4gd2tNYWtlU2Nyb2xsYmFyUmVwbGFjZW1l
bnRQYWludGVyKG5pbCwgcHJlZmVycmVkU2Nyb2xsZXJTdHlsZSgpLCBjb250cm9sU2l6ZSwgaXNI
b3Jpem9udGFsKTsKK30KKworaW50IHdrU2Nyb2xsYmFyVGhpY2tuZXNzKGludCBjb250cm9sU2l6
ZSkKK3sKKyAgICByZXR1cm4gW3drTWFrZVNjcm9sbGJhclBhaW50ZXIoY29udHJvbFNpemUsIGZh
bHNlKSB0cmFja0JveFdpZHRoXTsKK30KKworaW50IHdrU2Nyb2xsYmFyTWluaW11bVRvdGFsTGVu
Z3RoTmVlZGVkRm9yVGh1bWIoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIpCit7CisgICAg
Ly8gVE9ETyhzYWlsKTogVGhpcyBkb2Vzbid0IG1hdGNoIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuCisgICAgcmV0dXJuIHdrU2Nyb2xsYmFyTWluaW11bVRodW1i
TGVuZ3RoKHBhaW50ZXIpOworfQorCitXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tWZXJ0aWNhbFNj
cm9sbGJhclBhaW50ZXJGb3JDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJS
ZWYgY29udHJvbGxlcikKK3sKKyAgICByZXR1cm4gW2NvbnRyb2xsZXIgdmVydGljYWxTY3JvbGxl
ckltcF07Cit9CisKK1dLU2Nyb2xsYmFyUGFpbnRlclJlZiB3a0hvcml6b250YWxTY3JvbGxiYXJQ
YWludGVyRm9yQ29udHJvbGxlcihXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRy
b2xsZXIpCit7CisgICAgcmV0dXJuIFtjb250cm9sbGVyIGhvcml6b250YWxTY3JvbGxlckltcF07
Cit9CisKK1dLU2Nyb2xsYmFyUGFpbnRlclJlZiB3a01ha2VTY3JvbGxiYXJSZXBsYWNlbWVudFBh
aW50ZXIoV0tTY3JvbGxiYXJQYWludGVyUmVmIG9sZFBhaW50ZXIsIGludCBuZXdTdHlsZSwgaW50
IGNvbnRyb2xTaXplLCBib29sIGlzSG9yaXpvbnRhbCkKK3sKKyAgICBpZiAoIWlzU2Nyb2xsYmFy
T3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBb
bG9va1VwTlNTY3JvbGxlckltcENsYXNzKCkgc2Nyb2xsZXJJbXBXaXRoU3R5bGU6bmV3U3R5bGUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xT
aXplOnNjcm9sbGJhckNvbnRyb2xTaXplVG9OU0NvbnRyb2xTaXplKGNvbnRyb2xTaXplKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWw6
aXNIb3Jpem9udGFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBs
YWNpbmdTY3JvbGxlckltcDpvbGRQYWludGVyXTsKK30KKwordm9pZCB3a1NldFBhaW50ZXJGb3JQ
YWludGVyQ29udHJvbGxlcihXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xs
ZXIsIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyLCBib29sIGlzSG9yaXpvbnRhbCkKK3sK
KyAgICBpZiAoaXNIb3Jpem9udGFsKQorICAgICAgICBbY29udHJvbGxlciBzZXRIb3Jpem9udGFs
U2Nyb2xsZXJJbXA6cGFpbnRlcl07CisgICAgZWxzZQorICAgICAgICBbY29udHJvbGxlciBzZXRW
ZXJ0aWNhbFNjcm9sbGVySW1wOnBhaW50ZXJdOworfQorCit2b2lkIHdrU2V0U2Nyb2xsYmFyUGFp
bnRlckNvbnRyb2xsZXJTdHlsZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIHBhaW50
ZXIsIGludCBuZXdTdHlsZSkKK3sKKyAgICBbcGFpbnRlciBzZXRTY3JvbGxlclN0eWxlOm5ld1N0
eWxlXTsKK30KKworQ0dSZWN0IHdrU2Nyb2xsYmFyUGFpbnRlcktub2JSZWN0KFdLU2Nyb2xsYmFy
UGFpbnRlclJlZiBwYWludGVyKQoreworICAgIHJldHVybiBOU1JlY3RUb0NHUmVjdChOU1plcm9S
ZWN0KTsKK30KKwordm9pZCB3a1NldFNjcm9sbGJhclBhaW50ZXJLbm9iQWxwaGEoV0tTY3JvbGxi
YXJQYWludGVyUmVmIHBhaW50ZXIsIENHRmxvYXQgYWxwaGEpCit7CisgICAgW3BhaW50ZXIgc2V0
S25vYkFscGhhOmFscGhhXTsKK30KKwordm9pZCB3a1NldFNjcm9sbGJhclBhaW50ZXJUcmFja0Fs
cGhhKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyLCBDR0Zsb2F0IGFscGhhKQoreworICAg
IFtwYWludGVyIHNldFRyYWNrQWxwaGE6YWxwaGFdOworfQorCit2b2lkIHdrU2V0U2Nyb2xsYmFy
UGFpbnRlcktub2JTdHlsZShXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlciwgd2tTY3JvbGxl
cktub2JTdHlsZSBzdHlsZSkKK3sKKyAgICAvLyBUT0RPKHNhaWwpOiBBIGtub2Igc3R5bGUgQVBJ
IGRvZXNuJ3QgZXhpc3QgaW4gdGhlIHNlZWRzIGN1cnJlbnRseSBhdmFpbGFibGUuIAorfQorCitX
S1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIHdrTWFrZVNjcm9sbGJhclBhaW50ZXJDb250
cm9sbGVyKGlkIHBhaW50ZXJDb250cm9sbGVyRGVsZWdhdGUpCit7CisgICAgaWYgKCFpc1Njcm9s
bGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBOU1Nj
cm9sbGVySW1wUGFpciogY29udHJvbGxlciA9IFtbW2xvb2tVcE5TU2Nyb2xsZXJJbXBQYWlyQ2xh
c3MoKSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFtjb250cm9sbGVyIHNldERlbGVn
YXRlOnBhaW50ZXJDb250cm9sbGVyRGVsZWdhdGVdOworICAgIFtjb250cm9sbGVyIHNldFNjcm9s
bGVyU3R5bGU6cHJlZmVycmVkU2Nyb2xsZXJTdHlsZSgpXTsKKyAgICByZXR1cm4gY29udHJvbGxl
cjsKK30KKwordm9pZCB3a0NvbnRlbnRBcmVhU2Nyb2xsZWQoV0tTY3JvbGxiYXJQYWludGVyQ29u
dHJvbGxlclJlZiBjb250cm9sbGVyKQoreworICAgIFtjb250cm9sbGVyIGNvbnRlbnRBcmVhU2Ny
b2xsZWRdOworfQorCit2b2lkIHdrQ29udGVudEFyZWFXaWxsUGFpbnQoV0tTY3JvbGxiYXJQYWlu
dGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKQoreworICAgIFtjb250cm9sbGVyIGNvbnRlbnRB
cmVhV2lsbERyYXddOworfQorCit2b2lkIHdrTW91c2VFbnRlcmVkQ29udGVudEFyZWEoV0tTY3Jv
bGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKQoreworICAgIFtjb250cm9sbGVy
IG1vdXNlRW50ZXJlZENvbnRlbnRBcmVhXTsKK30KKwordm9pZCB3a01vdXNlRXhpdGVkQ29udGVu
dEFyZWEoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKQoreworICAg
IFtjb250cm9sbGVyIG1vdXNlRXhpdGVkQ29udGVudEFyZWFdOworfQorCit2b2lkIHdrTW91c2VN
b3ZlZEluQ29udGVudEFyZWEoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBjb250cm9s
bGVyKQoreworICAgIFtjb250cm9sbGVyIG1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhXTsKK30KKwor
dm9pZCB3a1dpbGxTdGFydExpdmVSZXNpemUoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJl
ZiBjb250cm9sbGVyKQoreworICAgIFtjb250cm9sbGVyIHN0YXJ0TGl2ZVJlc2l6ZV07Cit9CisK
K3ZvaWQgd2tDb250ZW50QXJlYVJlc2l6ZWQoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJl
ZiBjb250cm9sbGVyKQoreworICAgIFtjb250cm9sbGVyIGNvbnRlbnRBcmVhRGlkUmVzaXplXTsK
K30KKwordm9pZCB3a1dpbGxFbmRMaXZlUmVzaXplKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xs
ZXJSZWYgY29udHJvbGxlcikKK3sKKyAgICBbY29udHJvbGxlciBlbmRMaXZlUmVzaXplXTsKK30K
Kwordm9pZCB3a0NvbnRlbnRBcmVhRGlkU2hvdyhXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
UmVmIGNvbnRyb2xsZXIpCit7CisgICAgW2NvbnRyb2xsZXIgd2luZG93T3JkZXJlZEluXTsKK30K
Kwordm9pZCB3a0NvbnRlbnRBcmVhRGlkSGlkZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
UmVmIGNvbnRyb2xsZXIpCit7CisgICAgW2NvbnRyb2xsZXIgd2luZG93T3JkZXJlZE91dF07Cit9
CisKK3ZvaWQgd2tEaWRCZWdpblNjcm9sbEdlc3R1cmUoV0tTY3JvbGxiYXJQYWludGVyQ29udHJv
bGxlclJlZiBjb250cm9sbGVyKQoreworICAgIFtjb250cm9sbGVyIGJlZ2luU2Nyb2xsR2VzdHVy
ZV07Cit9CisKK3ZvaWQgd2tEaWRFbmRTY3JvbGxHZXN0dXJlKFdLU2Nyb2xsYmFyUGFpbnRlckNv
bnRyb2xsZXJSZWYgY29udHJvbGxlcikKK3sKKyAgICBbY29udHJvbGxlciBlbmRTY3JvbGxHZXN0
dXJlXTsKK30KKwordm9pZCB3a1Njcm9sbGJhclBhaW50ZXJGb3JjZUZsYXNoU2Nyb2xsZXJzKFdL
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxlcikKK3sKKyAgICBbY29udHJv
bGxlciBmbGFzaFNjcm9sbGVyc107Cit9CisKK2Jvb2wgaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZh
aWxhYmxlKCkKK3sKKyAgICAvLyBUT0RPKHNhaWwpOiBEaXNhYmxlIG92ZXJsYXkgc2Nyb2xsYmFy
cyBmb3Igbm93IHVudGlsIHRoZSBmb2xsb3dpbmcgaXNzdWVzIGFyZSBmaXhlZDoKKyAgICAvLyAj
MTogSW52YWxpZGF0aW9uIGlzc3VlcyBjYXVzZXMgdGhlIHNjcm9sbGJhciB0byBsZWF2ZSB0cmFp
bGluZyBhcnRpZmFjdHMuCisgICAgLy8gIzI6IFZhcmlvdXMgbWVzc2FnZXMgc3VjaCBhcyBsaXZl
IHJlc2l6ZSBzdGFydGVkL2VuZGVkIG5lZWQgdG8gYmUgcGlwZWQgZnJvbSB0aGUgVUkuCisgICAg
Ly8gIzM6IEZpbmQgdGljayBtYXJrcyBuZWVkIHRvIGJlIGRyYXduIG9uIHRoZSBzY3JvbGxiYXIg
dHJhY2suCisgICAgLy8gIzQ6IE5lZWQgdG8gaGF2ZSB0aGUgdGhlbWUgZW5naW5lIGRyYXcgdGhl
IHRodW1iLgorICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBib29sIGFwaUF2YWlsYWJs
ZSA9IFtsb29rVXBOU1Njcm9sbGVySW1wQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHNjcm9sbGVySW1wV2l0aFN0eWxlOmNvbnRyb2xTaXplOmhvcml6b250YWw6cmVwbGFjaW5n
U2Nyb2xsZXJJbXA6KV0gJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9va1Vw
TlNTY3JvbGxlckltcFBhaXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzY3JvbGxlclN0eWxlKV07CisgICAgcmV0dXJuIGFwaUF2YWlsYWJsZTsKK30KKworI2Vu
ZGlmIC8vIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91735</attachid>
            <date>2011-04-29 14:14:00 -0700</date>
            <delta_ts>2011-05-02 10:56:01 -0700</delta_ts>
            <desc>Updated change log.</desc>
            <filename>test_branch.patch</filename>
            <type>text/plain</type>
            <size>19925</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYzgzZmFhLi4yODM3MDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTEtMDQtMjggIFNhaWxlc2ggQWdyYXdhbCAgPHNhaWxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9taXVtIE1h
YzogQWRkIHNjcm9sbGJhciBvdmVybGF5IGRyYXdpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTc0MQorCisgICAgICAgIFRoZXNl
IGZ1bmN0aW9ucyBhcmUgc2ltcGx5IGNvcGllZCBmcm9tIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
IFRoZXNlIHdpbGwgYmUgdXNlZCB0byBpbXBsZW1lbnQgb3ZlcmxheSBzY3JvbGxiYXJzIGZvciBD
aHJvbWl1bSBNYWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGlzIGNvZGUgaXMg
b25seSBlbmFibGVkIG9uIGZ1dHVyZSB2ZXJzaW9ucyBvZiBNYWMgT1MgWC4KKworICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVy
bGF5VXRpbGl0aWVzTWFjLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWMubW06IEFkZGVkLgorICAgICAgICAoTG9va1VwTlNT
Y3JvbGxlckltcENsYXNzKToKKyAgICAgICAgKExvb2tVcE5TU2Nyb2xsZXJJbXBQYWlyQ2xhc3Mp
OgorICAgICAgICAoU2Nyb2xsYmFyQ29udHJvbFNpemVUb05TQ29udHJvbFNpemUpOgorICAgICAg
ICAod2tTY3JvbGxiYXJQYWludGVyVXNlc092ZXJsYXlTY3JvbGxlcnMpOgorICAgICAgICAod2tT
Y3JvbGxiYXJQYWludGVySXNIb3Jpem9udGFsKToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRl
cktub2JBbHBoYSk6CisgICAgICAgICh3a1Njcm9sbGJhclBhaW50ZXJTZXRPdmVybGF5U3RhdGUp
OgorICAgICAgICAod2tTY3JvbGxiYXJQYWludGVyUGFpbnQpOgorICAgICAgICAod2tTY3JvbGxi
YXJNaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAod2tTY3JvbGxiYXJQYWludGVyU2V0RGVs
ZWdhdGUpOgorICAgICAgICAod2tTY3JvbGxiYXJQYWludGVyVHJhY2tBbHBoYSk6CisgICAgICAg
ICh3a01ha2VTY3JvbGxiYXJQYWludGVyKToKKyAgICAgICAgKHdrU2Nyb2xsYmFyVGhpY2tuZXNz
KToKKyAgICAgICAgKHdrU2Nyb2xsYmFyTWluaW11bVRvdGFsTGVuZ3RoTmVlZGVkRm9yVGh1bWIp
OgorICAgICAgICAod2tWZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXJGb3JDb250cm9sbGVyKToKKyAg
ICAgICAgKHdrSG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXJGb3JDb250cm9sbGVyKToKKyAgICAg
ICAgKHdrTWFrZVNjcm9sbGJhclJlcGxhY2VtZW50UGFpbnRlcik6CisgICAgICAgICh3a1NldFBh
aW50ZXJGb3JQYWludGVyQ29udHJvbGxlcik6CisgICAgICAgICh3a1NldFNjcm9sbGJhclBhaW50
ZXJDb250cm9sbGVyU3R5bGUpOgorICAgICAgICAod2tTY3JvbGxiYXJQYWludGVyS25vYlJlY3Qp
OgorICAgICAgICAod2tTZXRTY3JvbGxiYXJQYWludGVyS25vYkFscGhhKToKKyAgICAgICAgKHdr
U2V0U2Nyb2xsYmFyUGFpbnRlclRyYWNrQWxwaGEpOgorICAgICAgICAod2tTZXRTY3JvbGxiYXJQ
YWludGVyS25vYlN0eWxlKToKKyAgICAgICAgKHdrTWFrZVNjcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyKToKKyAgICAgICAgKHdrQ29udGVudEFyZWFTY3JvbGxlZCk6CisgICAgICAgICh3a0NvbnRl
bnRBcmVhV2lsbFBhaW50KToKKyAgICAgICAgKHdrTW91c2VFbnRlcmVkQ29udGVudEFyZWEpOgor
ICAgICAgICAod2tNb3VzZUV4aXRlZENvbnRlbnRBcmVhKToKKyAgICAgICAgKHdrTW91c2VNb3Zl
ZEluQ29udGVudEFyZWEpOgorICAgICAgICAod2tXaWxsU3RhcnRMaXZlUmVzaXplKToKKyAgICAg
ICAgKHdrQ29udGVudEFyZWFSZXNpemVkKToKKyAgICAgICAgKHdrV2lsbEVuZExpdmVSZXNpemUp
OgorICAgICAgICAod2tDb250ZW50QXJlYURpZFNob3cpOgorICAgICAgICAod2tDb250ZW50QXJl
YURpZEhpZGUpOgorICAgICAgICAod2tEaWRCZWdpblNjcm9sbEdlc3R1cmUpOgorICAgICAgICAo
d2tEaWRFbmRTY3JvbGxHZXN0dXJlKToKKyAgICAgICAgKHdrU2Nyb2xsYmFyUGFpbnRlckZvcmNl
Rmxhc2hTY3JvbGxlcnMpOgorICAgICAgICAoSXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxl
KToKKwogMjAxMS0wNC0yNSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDFhYzk4
NjcuLmIyOTE5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM4MDUsNiArMzgwNSw4IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1NTTEtleUdlbmVyYXRvckNocm9taXVtLmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc01h
Yy5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRp
bGl0aWVzTWFjLm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VmNzkwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3Zlcmxh
eVV0aWxpdGllc01hYy5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTY3JvbGxiYXJPdmVybGF5VXRp
bGl0aWVzTWFjX2gKKyNkZWZpbmUgU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc01hY19oCisKKyNp
ZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCisKKy8vIFB1YmxpYyBBUElzIG5vdCBhdmFpbGFi
bGUgb24gdmVyc2lvbnMgb2YgTWFjIG9uIHdoaWNoIHdlIGJ1aWxkCisjaWYgKGRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkgfHwgZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpKQor
ZW51bSB7CisgICAgTlNTY3JvbGxlclN0eWxlTGVnYWN5ICAgICAgID0gMCwKKyAgICBOU1Njcm9s
bGVyU3R5bGVPdmVybGF5ICAgICAgPSAxCit9OwordHlwZWRlZiBOU0ludGVnZXIgTlNTY3JvbGxl
clN0eWxlOworI2VuZGlmCisKKyNpZmRlZiBfX09CSkNfXworQGNsYXNzIE5TU2Nyb2xsZXJJbXA7
CitAY2xhc3MgTlNTY3JvbGxlckltcFBhaXI7CisjZWxzZQorY2xhc3MgTlNTY3JvbGxlckltcDsK
K2NsYXNzIE5TU2Nyb2xsZXJJbXBQYWlyOworI2VuZGlmCisKK3R5cGVkZWYgTlNTY3JvbGxlcklt
cCogV0tTY3JvbGxiYXJQYWludGVyUmVmOwordHlwZWRlZiBOU1Njcm9sbGVySW1wUGFpciogV0tT
Y3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZjsKKworYm9vbCBpc1Njcm9sbGJhck92ZXJsYXlB
UElBdmFpbGFibGUoKTsKKworLy8gU2Nyb2xsYmFyIFBhaW50ZXIKK2Jvb2wgd2tTY3JvbGxiYXJQ
YWludGVyVXNlc092ZXJsYXlTY3JvbGxlcnModm9pZCk7Citib29sIHdrU2Nyb2xsYmFyUGFpbnRl
cklzSG9yaXpvbnRhbChXS1Njcm9sbGJhclBhaW50ZXJSZWYpOworQ0dGbG9hdCB3a1Njcm9sbGJh
clBhaW50ZXJLbm9iQWxwaGEoV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKK3ZvaWQgd2tTY3JvbGxi
YXJQYWludGVyU2V0T3ZlcmxheVN0YXRlKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiwgaW50IG92ZXJs
YXlTY3JvbGxlclN0YXRlKTsKK3ZvaWQgd2tTY3JvbGxiYXJQYWludGVyUGFpbnQoV0tTY3JvbGxi
YXJQYWludGVyUmVmLCBib29sIGVuYWJsZWQsIGRvdWJsZSB2YWx1ZSwgQ0dGbG9hdCBwcm9wb3J0
aW9uLCBOU1JlY3QgZnJhbWVSZWN0KTsKK2ludCB3a1Njcm9sbGJhck1pbmltdW1UaHVtYkxlbmd0
aChXS1Njcm9sbGJhclBhaW50ZXJSZWYpOwordm9pZCB3a1Njcm9sbGJhclBhaW50ZXJTZXREZWxl
Z2F0ZShXS1Njcm9sbGJhclBhaW50ZXJSZWYsIGlkIHNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSk7
CitDR0Zsb2F0IHdrU2Nyb2xsYmFyUGFpbnRlclRyYWNrQWxwaGEoV0tTY3JvbGxiYXJQYWludGVy
UmVmKTsKK1dLU2Nyb2xsYmFyUGFpbnRlclJlZiB3a01ha2VTY3JvbGxiYXJQYWludGVyKGludCBj
b250cm9sU2l6ZSwgYm9vbCBpc0hvcml6b250YWwpOworaW50IHdrU2Nyb2xsYmFyVGhpY2tuZXNz
KGludCBjb250cm9sU2l6ZSk7CitpbnQgd2tTY3JvbGxiYXJNaW5pbXVtVG90YWxMZW5ndGhOZWVk
ZWRGb3JUaHVtYihXS1Njcm9sbGJhclBhaW50ZXJSZWYpOworQ0dSZWN0IHdrU2Nyb2xsYmFyUGFp
bnRlcktub2JSZWN0KFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7CitXS1Njcm9sbGJhclBhaW50ZXJS
ZWYgd2tNYWtlU2Nyb2xsYmFyUmVwbGFjZW1lbnRQYWludGVyKFdLU2Nyb2xsYmFyUGFpbnRlclJl
ZiBvbGRQYWludGVyLCBpbnQgbmV3U3R5bGUsIGludCBjb250cm9sU2l6ZSwgYm9vbCBpc0hvcml6
b250YWwpOwordm9pZCB3a1NldFNjcm9sbGJhclBhaW50ZXJLbm9iQWxwaGEoV0tTY3JvbGxiYXJQ
YWludGVyUmVmLCBDR0Zsb2F0KTsKK3ZvaWQgd2tTZXRTY3JvbGxiYXJQYWludGVyVHJhY2tBbHBo
YShXS1Njcm9sbGJhclBhaW50ZXJSZWYsIENHRmxvYXQpOworCitlbnVtIHsKKyAgICB3a1Njcm9s
bGVyS25vYlN0eWxlRGVmYXVsdCA9IDAsCisgICAgd2tTY3JvbGxlcktub2JTdHlsZURhcmsgPSAx
LAorICAgIHdrU2Nyb2xsZXJLbm9iU3R5bGVMaWdodCA9IDIKK307Cit0eXBlZGVmIHVpbnQzMiB3
a1Njcm9sbGVyS25vYlN0eWxlOworZXh0ZXJuIHZvaWQgd2tTZXRTY3JvbGxiYXJQYWludGVyS25v
YlN0eWxlKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiwgd2tTY3JvbGxlcktub2JTdHlsZSk7CisKKy8v
IFNjcm9sbGJhciBQYWludGVyIENvbnRyb2xsZXIKK1dLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xs
ZXJSZWYgd2tNYWtlU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIoaWQgcGFpbnRlckNvbnRyb2xs
ZXJEZWxlZ2F0ZSk7Cit2b2lkIHdrQ29udGVudEFyZWFTY3JvbGxlZChXS1Njcm9sbGJhclBhaW50
ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tDb250ZW50QXJlYVdpbGxQYWludChXS1Njcm9sbGJh
clBhaW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tNb3VzZUVudGVyZWRDb250ZW50QXJlYShX
S1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKTsKK3ZvaWQgd2tNb3VzZUV4aXRlZENvbnRl
bnRBcmVhKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwordm9pZCB3a01vdXNlTW92
ZWRJbkNvbnRlbnRBcmVhKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwordm9pZCB3
a1dpbGxTdGFydExpdmVSZXNpemUoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZik7Cit2
b2lkIHdrQ29udGVudEFyZWFSZXNpemVkKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYp
Owordm9pZCB3a1dpbGxFbmRMaXZlUmVzaXplKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJS
ZWYpOwordm9pZCB3a0NvbnRlbnRBcmVhRGlkU2hvdyhXS1Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyUmVmKTsKK3ZvaWQgd2tDb250ZW50QXJlYURpZEhpZGUoV0tTY3JvbGxiYXJQYWludGVyQ29u
dHJvbGxlclJlZik7Cit2b2lkIHdrRGlkQmVnaW5TY3JvbGxHZXN0dXJlKFdLU2Nyb2xsYmFyUGFp
bnRlckNvbnRyb2xsZXJSZWYpOwordm9pZCB3a0RpZEVuZFNjcm9sbEdlc3R1cmUoV0tTY3JvbGxi
YXJQYWludGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrU2Nyb2xsYmFyUGFpbnRlckZvcmNlRmxh
c2hTY3JvbGxlcnMoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZik7Cit2b2lkIHdrU2V0
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJTdHlsZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyUmVmLCBpbnQgbmV3U3R5bGUpOwordm9pZCB3a1NldFBhaW50ZXJGb3JQYWludGVyQ29udHJv
bGxlcihXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmLCBXS1Njcm9sbGJhclBhaW50ZXJS
ZWYsIGJvb2wgaXNIb3Jpem9udGFsKTsKK1dLU2Nyb2xsYmFyUGFpbnRlclJlZiB3a1ZlcnRpY2Fs
U2Nyb2xsYmFyUGFpbnRlckZvckNvbnRyb2xsZXIoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
clJlZik7CitXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tIb3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRl
ckZvckNvbnRyb2xsZXIoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZik7CisKKyNlbmRp
ZiAvLyBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCisKKyNlbmRpZiAvLyBTY3JvbGxiYXJPdmVy
bGF5VXRpbGl0aWVzTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzTWFjLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NzFlNjcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVz
TWFjLm1tCkBAIC0wLDAgKzEsMzQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEx
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKFdLX1ND
Uk9MTEJBUl9QQUlOVEVSKQorCisjaW5jbHVkZSAiU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc01h
Yy5oIgorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVkZSA8Q29jb2EvQ29jb2EuaD4K
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFRoaXMgZmlsZSBjb250YWlucyB1dGlsaXRp
ZXMgdG8gZHJhdyBvdmVybGF5IHNjcm9sbGJhcnMuIFRoZXJlIGFyZSBubyBwdWJsaWMKKy8vIEFQ
SXMgeWV0IG9uIHRoZSBNYWMgdG8gZHJhdyBvdmVybGF5IHNjcm9sbGJhcnMgc28gd2UgdXNlIHBy
aXZhdGUgQVBJcyB0aGF0CisvLyB3ZSBsb29rIHVwIGF0IHJ1bnRpbWUuIElmIHRoZSBwcml2YXRl
IEFQSXMgZG9uJ3QgZXhpc3QgdGhlbiB0aGUgd2tNYWtlKgorLy8gZnVuY3Rpb25zIHdpbGwgcmV0
dXJuIG5pbC4KKy8vCisvLyBOb3RlLCB0aGlzIGZpbGUgY29udGFpbnMgZnVuY3Rpb25zIGNvcGll
ZCBmcm9tIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaC4KKy8vIFVzaW5nIHRoZSBzYW1lIG5hbWVz
IG1ha2VzIHRoZSBjb2RlIGVhc2llciB0byBtYWludGFpbi4KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKy8vIFB1YmxpYyBBUElzIG5vdCBhdmFpbGFibGUgb24gdmVyc2lvbnMgb2YgTWFjIG9u
IHdoaWNoIHdlIGJ1aWxkCisjaWYgKGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgfHwgZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpKQorQGludGVyZmFjZSBOU1Njcm9sbGVyIChO
U09iamVjdCkKKysgKE5TU2Nyb2xsZXJTdHlsZSlwcmVmZXJyZWRTY3JvbGxlclN0eWxlOworQGVu
ZAorI2VuZGlmCisKKy8vIFRoZXNlIGFyZSBwcml2YXRlIEFQSXMgdG8gZHJhdyBvdmVybGF5IHNj
cm9sbGJhcnMuCitAaW50ZXJmYWNlIE5TU2Nyb2xsZXJJbXAgOiBOU09iamVjdAorCisrIChpZClz
Y3JvbGxlckltcFdpdGhTdHlsZTooTlNTY3JvbGxlclN0eWxlKXN0eWxlCisgICAgICAgICAgICAg
ICBjb250cm9sU2l6ZTooTlNDb250cm9sU2l6ZSlzaXplCisgICAgICAgICAgICAgICAgaG9yaXpv
bnRhbDooQk9PTClob3Jpem9udGFsCisgICAgICByZXBsYWNpbmdTY3JvbGxlckltcDooaWQpc2Ny
b2xsZXI7CisKK0Bwcm9wZXJ0eSBDR0Zsb2F0IGtub2JBbHBoYTsKK0Bwcm9wZXJ0eSBDR0Zsb2F0
IHRyYWNrQWxwaGE7CitAcHJvcGVydHkgQ0dGbG9hdCBrbm9iUHJvcG9ydGlvbjsKK0Bwcm9wZXJ0
eShnZXR0ZXI9aXNFbmFibGVkKSBCT09MIGVuYWJsZWQ7CitAcHJvcGVydHkoZ2V0dGVyPWlzSG9y
aXpvbnRhbCkgQk9PTCBob3Jpem9udGFsOworQHByb3BlcnR5IGRvdWJsZSBkb3VibGVWYWx1ZTsK
K0Bwcm9wZXJ0eShhc3NpZ24pIGlkIGRlbGVnYXRlOworCistIChDR0Zsb2F0KWtub2JNaW5MZW5n
dGg7CistIChDR0Zsb2F0KXRyYWNrQm94V2lkdGg7CistIChDR0Zsb2F0KXRyYWNrV2lkdGg7Cist
ICh2b2lkKXNldEJvdW5kc1NpemU6KE5TU2l6ZSlzaXplOworLSAodm9pZClkcmF3S25vYlNsb3RJ
blJlY3Q6KE5TUmVjdClyZWN0CisgICAgICAgICAgICAgICAgIGhpZ2hsaWdodDooQk9PTClmbGFn
OworLSAodm9pZClkcmF3S25vYjsKKy0gKHZvaWQpc2V0T3ZlcmxheVNjcm9sbGVyU3RhdGU6KE5T
U2Nyb2xsZXJTdHlsZSlzdGF0ZQorICAgICAgICAgICAgICAgZm9yY2VJbW1lZGlhdGVseTooQk9P
TClmbGFnOworLSAodm9pZClzZXREZWxlZ2F0ZTooaWQpZGVsZWdhdGU7CisKK0BlbmQKKworLy8g
VGhlc2UgYXJlIHByaXZhdGUgQVBJcyB0byBtYW5hZ2Ugb3ZlcmxheSBzY3JvbGxiYXJzLgorQGlu
dGVyZmFjZSBOU1Njcm9sbGVySW1wUGFpciA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eSBOU1Njcm9s
bGVyU3R5bGUgc2Nyb2xsZXJTdHlsZTsKK0Bwcm9wZXJ0eShyZXRhaW4pIE5TU2Nyb2xsZXJJbXAg
Kmhvcml6b250YWxTY3JvbGxlckltcDsKK0Bwcm9wZXJ0eShyZXRhaW4pIE5TU2Nyb2xsZXJJbXAg
KnZlcnRpY2FsU2Nyb2xsZXJJbXA7CitAcHJvcGVydHkoYXNzaWduKSBpZCBkZWxlZ2F0ZTsKKwor
LSAodm9pZClmbGFzaFNjcm9sbGVyczsKKy0gKHZvaWQpY29udGVudEFyZWFTY3JvbGxlZDsKKy0g
KHZvaWQpY29udGVudEFyZWFXaWxsRHJhdzsKKy0gKHZvaWQpY29udGVudEFyZWFEaWRIaWRlOwor
LSAodm9pZCl3aW5kb3dPcmRlcmVkT3V0OworLSAodm9pZCl3aW5kb3dPcmRlcmVkSW47CistICh2
b2lkKW1vdXNlRW50ZXJlZENvbnRlbnRBcmVhOworLSAodm9pZCltb3VzZU1vdmVkSW5Db250ZW50
QXJlYTsKKy0gKHZvaWQpbW91c2VFeGl0ZWRDb250ZW50QXJlYTsKKy0gKHZvaWQpc3RhcnRMaXZl
UmVzaXplOworLSAodm9pZCljb250ZW50QXJlYURpZFJlc2l6ZTsKKy0gKHZvaWQpZW5kTGl2ZVJl
c2l6ZTsKKy0gKHZvaWQpYmVnaW5TY3JvbGxHZXN0dXJlOworLSAodm9pZCllbmRTY3JvbGxHZXN0
dXJlOworCitAZW5kCisKK3N0YXRpYyBDbGFzcyBsb29rVXBOU1Njcm9sbGVySW1wQ2xhc3MoKQor
eworICAgIHN0YXRpYyBDbGFzcyByZXN1bHQgPSBOU0NsYXNzRnJvbVN0cmluZyhAIk5TU2Nyb2xs
ZXJJbXAiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQ2xhc3MgbG9va1VwTlNT
Y3JvbGxlckltcFBhaXJDbGFzcygpCit7CisgICAgc3RhdGljIENsYXNzIHJlc3VsdCA9IE5TQ2xh
c3NGcm9tU3RyaW5nKEAiTlNTY3JvbGxlckltcFBhaXIiKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitzdGF0aWMgTlNDb250cm9sU2l6ZSBzY3JvbGxiYXJDb250cm9sU2l6ZVRvTlNDb250cm9s
U2l6ZShpbnQgY29udHJvbFNpemUpCit7CisgICAgcmV0dXJuIGNvbnRyb2xTaXplID09IFdlYkNv
cmU6OlJlZ3VsYXJTY3JvbGxiYXIgPyBOU1JlZ3VsYXJDb250cm9sU2l6ZSA6IE5TU21hbGxDb250
cm9sU2l6ZTsKK30KKworc3RhdGljIE5TU2Nyb2xsZXJTdHlsZSBwcmVmZXJyZWRTY3JvbGxlclN0
eWxlKCkKK3sKKyAgICBpZiAoW05TU2Nyb2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihwcmVmZXJyZWRTY3JvbGxlclN0eWxlKV0pCisgICAgICAgIHJldHVybiBbTlNTY3JvbGxlciBw
cmVmZXJyZWRTY3JvbGxlclN0eWxlXTsKKyAgICByZXR1cm4gTlNTY3JvbGxlclN0eWxlTGVnYWN5
OworfQorCitib29sIHdrU2Nyb2xsYmFyUGFpbnRlclVzZXNPdmVybGF5U2Nyb2xsZXJzKHZvaWQp
Cit7CisgICAgcmV0dXJuIHByZWZlcnJlZFNjcm9sbGVyU3R5bGUoKSA9PSBOU1Njcm9sbGVyU3R5
bGVPdmVybGF5OworfQorCitib29sIHdrU2Nyb2xsYmFyUGFpbnRlcklzSG9yaXpvbnRhbChXS1Nj
cm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlcikKK3sKKyAgICByZXR1cm4gW3BhaW50ZXIgaXNIb3Jp
em9udGFsXTsKK30KKworQ0dGbG9hdCB3a1Njcm9sbGJhclBhaW50ZXJLbm9iQWxwaGEoV0tTY3Jv
bGxiYXJQYWludGVyUmVmIHBhaW50ZXIpCit7CisgICAgcmV0dXJuIFtwYWludGVyIGtub2JBbHBo
YV07Cit9CisKK3ZvaWQgd2tTY3JvbGxiYXJQYWludGVyU2V0T3ZlcmxheVN0YXRlKFdLU2Nyb2xs
YmFyUGFpbnRlclJlZiBwYWludGVyLCBpbnQgb3ZlcmxheVNjcm9sbGVyU3RhdGUpCit7CisgICAg
W3BhaW50ZXIgc2V0T3ZlcmxheVNjcm9sbGVyU3RhdGU6b3ZlcmxheVNjcm9sbGVyU3RhdGUKKyAg
ICAgICAgICAgICAgICAgICAgZm9yY2VJbW1lZGlhdGVseTpZRVNdOworfQorCit2b2lkIHdrU2Ny
b2xsYmFyUGFpbnRlclBhaW50KFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyLCBib29sIGVu
YWJsZWQsIGRvdWJsZSB2YWx1ZSwgQ0dGbG9hdCBwcm9wb3J0aW9uLCBOU1JlY3QgZnJhbWVSZWN0
KQoreworICAgIFtwYWludGVyIHNldEVuYWJsZWQ6ZW5hYmxlZF07CisgICAgW3BhaW50ZXIgc2V0
Qm91bmRzU2l6ZTpmcmFtZVJlY3Quc2l6ZV07CisgICAgW3BhaW50ZXIgc2V0RG91YmxlVmFsdWU6
dmFsdWVdOworICAgIFtwYWludGVyIHNldEtub2JQcm9wb3J0aW9uOnByb3BvcnRpb25dOworCisg
ICAgaWYgKFtwYWludGVyIGlzSG9yaXpvbnRhbF0pCisgICAgICAgIGZyYW1lUmVjdC5zaXplLmhl
aWdodCA9IFtwYWludGVyIHRyYWNrV2lkdGhdOworICAgIGVsc2UKKyAgICAgICAgZnJhbWVSZWN0
LnNpemUud2lkdGggPSBbcGFpbnRlciB0cmFja1dpZHRoXTsKKworICAgIFtwYWludGVyIGRyYXdL
bm9iU2xvdEluUmVjdDpmcmFtZVJlY3QgaGlnaGxpZ2h0Ok5PXTsKKyAgICBbcGFpbnRlciBkcmF3
S25vYl07Cit9CisKK2ludCB3a1Njcm9sbGJhck1pbmltdW1UaHVtYkxlbmd0aChXS1Njcm9sbGJh
clBhaW50ZXJSZWYgcGFpbnRlcikKK3sKKyAgICByZXR1cm4gW3BhaW50ZXIga25vYk1pbkxlbmd0
aF07Cit9CisKK3ZvaWQgd2tTY3JvbGxiYXJQYWludGVyU2V0RGVsZWdhdGUoV0tTY3JvbGxiYXJQ
YWludGVyUmVmIHBhaW50ZXIsIGlkIHNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSkKK3sKKyAgICBb
cGFpbnRlciBzZXREZWxlZ2F0ZTpzY3JvbGxiYXJQYWludGVyRGVsZWdhdGVdOworfQorCitDR0Zs
b2F0IHdrU2Nyb2xsYmFyUGFpbnRlclRyYWNrQWxwaGEoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBh
aW50ZXIpCit7CisgICAgcmV0dXJuIFtwYWludGVyIHRyYWNrQWxwaGFdOworfQorCitXS1Njcm9s
bGJhclBhaW50ZXJSZWYgd2tNYWtlU2Nyb2xsYmFyUGFpbnRlcihpbnQgY29udHJvbFNpemUsIGJv
b2wgaXNIb3Jpem9udGFsKQoreworICAgIHJldHVybiB3a01ha2VTY3JvbGxiYXJSZXBsYWNlbWVu
dFBhaW50ZXIobmlsLCBwcmVmZXJyZWRTY3JvbGxlclN0eWxlKCksIGNvbnRyb2xTaXplLCBpc0hv
cml6b250YWwpOworfQorCitpbnQgd2tTY3JvbGxiYXJUaGlja25lc3MoaW50IGNvbnRyb2xTaXpl
KQoreworICAgIHJldHVybiBbd2tNYWtlU2Nyb2xsYmFyUGFpbnRlcihjb250cm9sU2l6ZSwgZmFs
c2UpIHRyYWNrQm94V2lkdGhdOworfQorCitpbnQgd2tTY3JvbGxiYXJNaW5pbXVtVG90YWxMZW5n
dGhOZWVkZWRGb3JUaHVtYihXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlcikKK3sKKyAgICAv
LyBUT0RPKHNhaWwpOiBUaGlzIGRvZXNuJ3QgbWF0Y2ggdGhlIGltcGxlbWVudGF0aW9uIGluIFdl
YktpdFN5c3RlbUludGVyZmFjZS4KKyAgICByZXR1cm4gd2tTY3JvbGxiYXJNaW5pbXVtVGh1bWJM
ZW5ndGgocGFpbnRlcik7Cit9CisKK1dLU2Nyb2xsYmFyUGFpbnRlclJlZiB3a1ZlcnRpY2FsU2Ny
b2xsYmFyUGFpbnRlckZvckNvbnRyb2xsZXIoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJl
ZiBjb250cm9sbGVyKQoreworICAgIHJldHVybiBbY29udHJvbGxlciB2ZXJ0aWNhbFNjcm9sbGVy
SW1wXTsKK30KKworV0tTY3JvbGxiYXJQYWludGVyUmVmIHdrSG9yaXpvbnRhbFNjcm9sbGJhclBh
aW50ZXJGb3JDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJv
bGxlcikKK3sKKyAgICByZXR1cm4gW2NvbnRyb2xsZXIgaG9yaXpvbnRhbFNjcm9sbGVySW1wXTsK
K30KKworV0tTY3JvbGxiYXJQYWludGVyUmVmIHdrTWFrZVNjcm9sbGJhclJlcGxhY2VtZW50UGFp
bnRlcihXS1Njcm9sbGJhclBhaW50ZXJSZWYgb2xkUGFpbnRlciwgaW50IG5ld1N0eWxlLCBpbnQg
Y29udHJvbFNpemUsIGJvb2wgaXNIb3Jpem9udGFsKQoreworICAgIGlmICghaXNTY3JvbGxiYXJP
dmVybGF5QVBJQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFts
b29rVXBOU1Njcm9sbGVySW1wQ2xhc3MoKSBzY3JvbGxlckltcFdpdGhTdHlsZTpuZXdTdHlsZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFNp
emU6c2Nyb2xsYmFyQ29udHJvbFNpemVUb05TQ29udHJvbFNpemUoY29udHJvbFNpemUpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbDpp
c0hvcml6b250YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxh
Y2luZ1Njcm9sbGVySW1wOm9sZFBhaW50ZXJdOworfQorCit2b2lkIHdrU2V0UGFpbnRlckZvclBh
aW50ZXJDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJvbGxl
ciwgV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIsIGJvb2wgaXNIb3Jpem9udGFsKQorewor
ICAgIGlmIChpc0hvcml6b250YWwpCisgICAgICAgIFtjb250cm9sbGVyIHNldEhvcml6b250YWxT
Y3JvbGxlckltcDpwYWludGVyXTsKKyAgICBlbHNlCisgICAgICAgIFtjb250cm9sbGVyIHNldFZl
cnRpY2FsU2Nyb2xsZXJJbXA6cGFpbnRlcl07Cit9CisKK3ZvaWQgd2tTZXRTY3JvbGxiYXJQYWlu
dGVyQ29udHJvbGxlclN0eWxlKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgcGFpbnRl
ciwgaW50IG5ld1N0eWxlKQoreworICAgIFtwYWludGVyIHNldFNjcm9sbGVyU3R5bGU6bmV3U3R5
bGVdOworfQorCitDR1JlY3Qgd2tTY3JvbGxiYXJQYWludGVyS25vYlJlY3QoV0tTY3JvbGxiYXJQ
YWludGVyUmVmIHBhaW50ZXIpCit7CisgICAgcmV0dXJuIE5TUmVjdFRvQ0dSZWN0KE5TWmVyb1Jl
Y3QpOworfQorCit2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JBbHBoYShXS1Njcm9sbGJh
clBhaW50ZXJSZWYgcGFpbnRlciwgQ0dGbG9hdCBhbHBoYSkKK3sKKyAgICBbcGFpbnRlciBzZXRL
bm9iQWxwaGE6YWxwaGFdOworfQorCit2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlclRyYWNrQWxw
aGEoV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIsIENHRmxvYXQgYWxwaGEpCit7CisgICAg
W3BhaW50ZXIgc2V0VHJhY2tBbHBoYTphbHBoYV07Cit9CisKK3ZvaWQgd2tTZXRTY3JvbGxiYXJQ
YWludGVyS25vYlN0eWxlKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyLCB3a1Njcm9sbGVy
S25vYlN0eWxlIHN0eWxlKQoreworICAgIC8vIFRPRE8oc2FpbCk6IEEga25vYiBzdHlsZSBBUEkg
ZG9lc24ndCBleGlzdCBpbiB0aGUgc2VlZHMgY3VycmVudGx5IGF2YWlsYWJsZS4gCit9CisKK1dL
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgd2tNYWtlU2Nyb2xsYmFyUGFpbnRlckNvbnRy
b2xsZXIoaWQgcGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZSkKK3sKKyAgICBpZiAoIWlzU2Nyb2xs
YmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TU2Ny
b2xsZXJJbXBQYWlyKiBjb250cm9sbGVyID0gW1tbbG9va1VwTlNTY3JvbGxlckltcFBhaXJDbGFz
cygpIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgW2NvbnRyb2xsZXIgc2V0RGVsZWdh
dGU6cGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZV07CisgICAgW2NvbnRyb2xsZXIgc2V0U2Nyb2xs
ZXJTdHlsZTpwcmVmZXJyZWRTY3JvbGxlclN0eWxlKCldOworICAgIHJldHVybiBjb250cm9sbGVy
OworfQorCit2b2lkIHdrQ29udGVudEFyZWFTY3JvbGxlZChXS1Njcm9sbGJhclBhaW50ZXJDb250
cm9sbGVyUmVmIGNvbnRyb2xsZXIpCit7CisgICAgW2NvbnRyb2xsZXIgY29udGVudEFyZWFTY3Jv
bGxlZF07Cit9CisKK3ZvaWQgd2tDb250ZW50QXJlYVdpbGxQYWludChXS1Njcm9sbGJhclBhaW50
ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xsZXIpCit7CisgICAgW2NvbnRyb2xsZXIgY29udGVudEFy
ZWFXaWxsRHJhd107Cit9CisKK3ZvaWQgd2tNb3VzZUVudGVyZWRDb250ZW50QXJlYShXS1Njcm9s
bGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xsZXIpCit7CisgICAgW2NvbnRyb2xsZXIg
bW91c2VFbnRlcmVkQ29udGVudEFyZWFdOworfQorCit2b2lkIHdrTW91c2VFeGl0ZWRDb250ZW50
QXJlYShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xsZXIpCit7CisgICAg
W2NvbnRyb2xsZXIgbW91c2VFeGl0ZWRDb250ZW50QXJlYV07Cit9CisKK3ZvaWQgd2tNb3VzZU1v
dmVkSW5Db250ZW50QXJlYShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xs
ZXIpCit7CisgICAgW2NvbnRyb2xsZXIgbW91c2VNb3ZlZEluQ29udGVudEFyZWFdOworfQorCit2
b2lkIHdrV2lsbFN0YXJ0TGl2ZVJlc2l6ZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVm
IGNvbnRyb2xsZXIpCit7CisgICAgW2NvbnRyb2xsZXIgc3RhcnRMaXZlUmVzaXplXTsKK30KKwor
dm9pZCB3a0NvbnRlbnRBcmVhUmVzaXplZChXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVm
IGNvbnRyb2xsZXIpCit7CisgICAgW2NvbnRyb2xsZXIgY29udGVudEFyZWFEaWRSZXNpemVdOwor
fQorCit2b2lkIHdrV2lsbEVuZExpdmVSZXNpemUoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
clJlZiBjb250cm9sbGVyKQoreworICAgIFtjb250cm9sbGVyIGVuZExpdmVSZXNpemVdOworfQor
Cit2b2lkIHdrQ29udGVudEFyZWFEaWRTaG93KFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJS
ZWYgY29udHJvbGxlcikKK3sKKyAgICBbY29udHJvbGxlciB3aW5kb3dPcmRlcmVkSW5dOworfQor
Cit2b2lkIHdrQ29udGVudEFyZWFEaWRIaWRlKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJS
ZWYgY29udHJvbGxlcikKK3sKKyAgICBbY29udHJvbGxlciB3aW5kb3dPcmRlcmVkT3V0XTsKK30K
Kwordm9pZCB3a0RpZEJlZ2luU2Nyb2xsR2VzdHVyZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyUmVmIGNvbnRyb2xsZXIpCit7CisgICAgW2NvbnRyb2xsZXIgYmVnaW5TY3JvbGxHZXN0dXJl
XTsKK30KKwordm9pZCB3a0RpZEVuZFNjcm9sbEdlc3R1cmUoV0tTY3JvbGxiYXJQYWludGVyQ29u
dHJvbGxlclJlZiBjb250cm9sbGVyKQoreworICAgIFtjb250cm9sbGVyIGVuZFNjcm9sbEdlc3R1
cmVdOworfQorCit2b2lkIHdrU2Nyb2xsYmFyUGFpbnRlckZvcmNlRmxhc2hTY3JvbGxlcnMoV0tT
Y3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBjb250cm9sbGVyKQoreworICAgIFtjb250cm9s
bGVyIGZsYXNoU2Nyb2xsZXJzXTsKK30KKworYm9vbCBpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFp
bGFibGUoKQoreworICAgIC8vIFRPRE8oc2FpbCk6IERpc2FibGUgb3ZlcmxheSBzY3JvbGxiYXJz
IGZvciBub3cgdW50aWwgdGhlIGZvbGxvd2luZyBpc3N1ZXMgYXJlIGZpeGVkOgorICAgIC8vICMx
OiBJbnZhbGlkYXRpb24gaXNzdWVzIGNhdXNlcyB0aGUgc2Nyb2xsYmFyIHRvIGxlYXZlIHRyYWls
aW5nIGFydGlmYWN0cy4KKyAgICAvLyAjMjogVmFyaW91cyBtZXNzYWdlcyBzdWNoIGFzIGxpdmUg
cmVzaXplIHN0YXJ0ZWQvZW5kZWQgbmVlZCB0byBiZSBwaXBlZCBmcm9tIHRoZSBVSS4KKyAgICAv
LyAjMzogRmluZCB0aWNrIG1hcmtzIG5lZWQgdG8gYmUgZHJhd24gb24gdGhlIHNjcm9sbGJhciB0
cmFjay4KKyAgICAvLyAjNDogTmVlZCB0byBoYXZlIHRoZSB0aGVtZSBlbmdpbmUgZHJhdyB0aGUg
dGh1bWIuCisgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RhdGljIGJvb2wgYXBpQXZhaWxhYmxl
ID0gW2xvb2tVcE5TU2Nyb2xsZXJJbXBDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Ioc2Nyb2xsZXJJbXBXaXRoU3R5bGU6Y29udHJvbFNpemU6aG9yaXpvbnRhbDpyZXBsYWNpbmdT
Y3JvbGxlckltcDopXSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb29rVXBO
U1Njcm9sbGVySW1wUGFpckNsYXNzKCkgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVj
dG9yKHNjcm9sbGVyU3R5bGUpXTsKKyAgICByZXR1cm4gYXBpQXZhaWxhYmxlOworfQorCisjZW5k
aWYgLy8gVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>