<?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>126737</bug_id>
          
          <creation_ts>2014-01-09 23:04:34 -0800</creation_ts>
          <short_desc>Clear unparented tiled layers on memory pressure.</short_desc>
          <delta_ts>2014-01-10 14:06:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yongjun Zhang">yongjun_zhang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>psolanki</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>966239</commentid>
    <comment_count>0</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2014-01-09 23:04:34 -0800</bug_when>
    <thetext>TileController hold unparented for a short period of time (1 -3 sec); we should clear these unparented tiles immediately if we are under memory pressure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966240</commentid>
    <comment_count>1</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2014-01-09 23:05:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/15715238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966250</commentid>
    <comment_count>2</comment_count>
      <attachid>220809</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2014-01-09 23:27:19 -0800</bug_when>
    <thetext>Created attachment 220809
Patch, immediately clear unparented tiles under memory pressure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966251</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-09 23:28:16 -0800</bug_when>
    <thetext>Attachment 220809 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/TileController.h&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/TileController.mm&apos;, u&apos;Source/WebCore/platform/ios/TileControllerMemoryHandlerIOS.cpp&apos;, u&apos;Source/WebCore/platform/ios/TileControllerMemoryHandlerIOS.h&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/ios/TileControllerMemoryHandlerIOS.h:26:  #ifndef header guard has wrong style, please use: TileControllerMemoryHandlerIOS_h  [build/header_guard] [5]
ERROR: Source/WebCore/platform/ios/TileControllerMemoryHandlerIOS.h:39:  The parameter name &quot;controller&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/TileControllerMemoryHandlerIOS.h:40:  The parameter name &quot;controller&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/ios/TileControllerMemoryHandlerIOS.h:44:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 4 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966254</commentid>
    <comment_count>4</comment_count>
      <attachid>220810</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2014-01-09 23:31:03 -0800</bug_when>
    <thetext>Created attachment 220810
Fix style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966261</commentid>
    <comment_count>5</comment_count>
      <attachid>220810</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-01-09 23:48:36 -0800</bug_when>
    <thetext>Comment on attachment 220810
Fix style issues.

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:17833
&gt; +		};

Odd move by Xcode. Maybe skip this part before commit?

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:3032
&gt; +    float maxPixelDimension = systemMemoryLevel() &lt; cMemoryLevelToUseSmallerPixelDimension ? cMaxPixelDimensionLowMemory : cMaxPixelDimension;

This should be int since cMaxPixelDimension is int.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966377</commentid>
    <comment_count>6</comment_count>
      <attachid>220810</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-10 08:46:51 -0800</bug_when>
    <thetext>Comment on attachment 220810
Fix style issues.

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

&gt; Source/WebCore/platform/ios/TileControllerMemoryHandlerIOS.cpp:68
&gt; +void TileControllerMemoryHandler::trimUnparentedTilesToTarget(unsigned target)

Use an int for the argument. Surprising things can happen using unsigned math.

&gt; Source/WebCore/platform/ios/TileControllerMemoryHandlerIOS.h:40
&gt; +    void updateForTileController(TileController*);

I think this would be better named tileControllerGainedUnparentedTiles() or similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966473</commentid>
    <comment_count>7</comment_count>
      <attachid>220865</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2014-01-10 11:12:06 -0800</bug_when>
    <thetext>Created attachment 220865
Address review comments before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966579</commentid>
    <comment_count>8</comment_count>
      <attachid>220865</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-10 14:06:42 -0800</bug_when>
    <thetext>Comment on attachment 220865
Address review comments before landing.

Clearing flags on attachment: 220865

Committed r161675: &lt;http://trac.webkit.org/changeset/161675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966580</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-10 14:06:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>220809</attachid>
            <date>2014-01-09 23:27:19 -0800</date>
            <delta_ts>2014-01-09 23:31:39 -0800</delta_ts>
            <desc>Patch, immediately clear unparented tiles under memory pressure.</desc>
            <filename>clear_tiles.patch</filename>
            <type>text/plain</type>
            <size>20006</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE0LTAxLTA5ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYXIgdW5wYXJl
bnRlZCB0aWxlZCBsYXllcnMgb24gbWVtb3J5IHByZXNzdXJlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NzM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGlsZUNvbnRyb2xsZXIgaG9sZCB1bnBhcmVu
dGVkIHRpbGVzIGZvciBhIHNob3J0IHBlcmlvZCBvZiB0aW1lICgxIC0zIHNlYyk7IHdlIHNob3Vs
ZCBjbGVhciB0aGVzZSB1bnBhcmVudGVkCisgICAgICAgIHRpbGVzIGltbWVkaWF0ZWx5IGlmIHdl
IGFyZSB1bmRlciBtZW1vcnkgcHJlc3N1cmUuCisgICAgICAgIAorICAgICAgICBUaGUgcGF0Y2gg
ZG9lcyAzIHRoaW5ncyB0byBpbXByb3ZlIHRoZSBiZWhhdmlvcjoKKyAgICAgICAgMSkgV2hlbiB0
aGUgc3lzdGVtIGZyZWUgbWVtb3J5IGlzIGxvdyAoPDM1JSksIHJlZHVjZSB0aGUgdGlsaW5nIHRo
cmVzaG9sZC4gIFRoaXMgY291bGQgcmVkdWNlCisgICAgICAgIHRoZSBwZWFrIG1lbW9yeSB1c2Fn
ZSB3aGVuIHN5c3RlbSBpcyB1bmRlciBsb3cgbWVtb3J5IHNpbmNlIHdlIHdpbGwgY29udmVydCBt
b3JlIHdlYiBsYXllcnMgaW50bworICAgICAgICB0aWxlZCBiYWNraW5nLgorICAgICAgICAyKSBV
bmRlciBtZW1vcnkgcHJlc3N1cmUsIGltbWVkaWF0ZWx5IGNsZWFyIGFsbCB1bnBhcmVudGVkIHRp
bGVzLgorICAgICAgICAzKSBBZGQgYSBjYXAgKDE2IHRpbGVzKSB0byBsaW1pdCB0aGUgdG90YWwg
bnVtYmVyIG9mIHVucGFyZW50ZWQgdGlsZXMgaW4gVGlsZUNvbnRyb2xsZXIncy4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkIGEgbmV3IGNsYXNzIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlci4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpyZXF1aXJlc1RpbGVkTGF5ZXIpOiAgVXNlIGEg
c21hbGxlciB0aWxpbmcgdGhyZXNob2xkIGlmIHRoZSBzeXN0ZW0gZnJlZSBtZW1vcnkgaXMgbG93
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6Om51bWJlck9mVW5wYXJlbnRlZFRpbGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6c3RhcnRlZE5ld0NvaG9ydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6cmVtb3ZlVW5wYXJlbnRlZFRpbGVzTm93
KTogUmVtb3ZlIGFsbCB1bnBhcmVudGQgdGlsZXMuCisgICAgICAgICogcGxhdGZvcm0vaW9zL01l
bW9yeVByZXNzdXJlSGFuZGxlcklPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpU
aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXI6OnJlbW92ZVRpbGVDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcjo6dG90YWxVbnBhcmVudGVk
VGlsZWRMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5k
bGVyOjp1cGRhdGVGb3JUaWxlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXI6OnRyaW1VbnBhcmVudGVkVGlsZXNUb1RhcmdldCk6IFRyaW1z
IHRoZSBudW1iZXIgb2YgdW5wYXJlbnRlZCB0aWxlcyB1bnRpbAorICAgICAgICAgICAgaXQgcmVh
Y2hlcyB0aGUgdGFyZ2V0LgorICAgICAgICAoV2ViQ29yZTo6dGlsZUNvbnRyb2xsZXJNZW1vcnlI
YW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5k
bGVySU9TLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXJNZW1vcnlI
YW5kbGVyOjpUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIpOgorCiAyMDE0LTAxLTA5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgRml4IGEgYnVp
bGQgYnJlYWsgb24gRUZMIGRlYnVnIGJ1aWxkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gMTYxNjA0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTI0NDcsNiArMjQ0Nyw4IEBAIF93a0dldFNjcmVlblNjYWxlRmFjdG9yCiBfd2tH
ZXRWaWV3cG9ydFNjcmVlblNpemUKIF93a0lzR0IxODAzMENvbXBsaWFuY2VSZXF1aXJlZAogX3dr
U2V0TGF5ZXJDb250ZW50c1NjYWxlCitfX1pON1dlYkNvcmUyN3RpbGVDb250cm9sbGVyTWVtb3J5
SGFuZGxlckV2CitfX1pON1dlYkNvcmUyN1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcjI3dHJp
bVVucGFyZW50ZWRUaWxlc1RvVGFyZ2V0RWoKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoTkRFQlVH
KQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTYxNjA0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04OTQsNiArODk0LDggQEAK
IAkJMUYzQzNCRUIxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGM0MzQkU5MTM1Q0FGM0MwMEI4
QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggKi87IH07CiAJCTFGM0YxOTUzMTQ5OUNBNzYwMEE1QUVB
NyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxRjNGMTk1MjE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RBcmVu
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFG
NjhENEFFMTRCQjlEQ0EwMDdCNUM2MiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjY4RDRBRDE0QkI5
RENBMDA3QjVDNjIgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVySU9TLm1tICovOyB9OworCQkxRjcy
QkYwQTE4N0ZENDQ5MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNzJCRjA4
MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwICov
OyB9OworCQkxRjcyQkYwQjE4N0ZENDVDMDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlI
YW5kbGVySU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxRjcyQkYwOTE4N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVy
SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MUZBRkJGMTgxNUE1RkE2RTAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQUZCRjE3MTVBNUZBNTIwMDA4M0Ey
MCAvKiBVVElVdGlsaXRpZXMubW0gKi87IH07CiAJCTFGQUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAv
KiBVVElVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFGQUZCRjE2MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLzsgfTsK
IAkJMUZDNDBGQjkxNjU1Q0NCNjAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUZDNDBGQjgx
NjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwICovOyB9OwpAQCAt
NzY1Nyw2ICs3NjU5LDggQEAKIAkJMUYzQzNCRTkxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29u
dHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9scy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjNGMTk1MjE0OTlDQTc2MDBBNUFFQTcg
LyogUE9ERnJlZUxpc3RBcmVuYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
T0RGcmVlTGlzdEFyZW5hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGNjhENEFE
MTRCQjlEQ0EwMDdCNUM2MiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1Mu
bW07IHBhdGggPSBpb3MvTWVtb3J5UHJlc3N1cmVIYW5kbGVySU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxRjcyQkYwODE4N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xs
ZXJNZW1vcnlIYW5kbGVySU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHA7IHBhdGggPSBpb3MvVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUY3MkJGMDkxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxl
cklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUaWxlQ29udHJvbGxlck1l
bW9yeUhhbmRsZXJJT1MuaDsgcGF0aCA9IGlvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBRkJGMTYxNUE1RkE1MjAwMDgz
QTIwIC8qIFVUSVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
VElVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBRkJGMTcxNUE1
RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFVUSVV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc3NzksMTUgKzE3NzgzLDYgQEAK
IAkJCW5hbWUgPSBwYXJzZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlB
NTE2RThCMjEzNkUwNEMwMDA3NkMzQzAgLyogaW9zICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7
Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlBNTE2RThCNDEzNkUwNERCMDA3NkMzQzAgLyogTG9jYWxp
emVkRGF0ZUNhY2hlLmggKi8sCi0JCQkJQTUxNkU4QjUxMzZFMDREQjAwNzZDM0MwIC8qIExvY2Fs
aXplZERhdGVDYWNoZS5tbSAqLywKLQkJCSk7Ci0JCQlwYXRoID0gaW9zOwotCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJQTE0ODMyOEIxODdGNTA2ODAwREE2M0E2IC8qIHdhayAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzgyNyw2ICsx
NzgyMiwxNSBAQAogCQkJbmFtZSA9IHdhazsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCUE1MTZFOEIyMTM2RTA0QzAwMDc2QzNDMCAvKiBpb3MgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1MTZFOEI0MTM2RTA0REIwMDc2QzNDMCAv
KiBMb2NhbGl6ZWREYXRlQ2FjaGUuaCAqLywKKwkJCQlBNTE2RThCNTEzNkUwNERCMDA3NkMzQzAg
LyogTG9jYWxpemVkRGF0ZUNhY2hlLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBpb3M7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlBNTlFM0MxQjExNTgwRjM0MDA3MjkyOEUg
LyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE3
ODY3LDYgKzE3ODcxLDggQEAKIAkJCQk0NEM5OTE5RTBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJ
T1MubW0gKi8sCiAJCQkJRTRDM0IxRjkwRjBFNDE2MTAwOTY5M0Y2IC8qIFRpbGVDYWNoZS5oICov
LAogCQkJCUU0QzNCMUZCMEYwRTQxNzAwMDk2OTNGNiAvKiBUaWxlQ2FjaGUubW0gKi8sCisJCQkJ
MUY3MkJGMDgxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklP
Uy5jcHAgKi8sCisJCQkJMUY3MkJGMDkxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVy
TWVtb3J5SGFuZGxlcklPUy5oICovLAogCQkJCUU0QjY1QTU3MTMyRkE4RTcwMDcwRTdCRSAvKiBU
aWxlR3JpZC5oICovLAogCQkJCUU0QjY1QTU5MTMyRkFBRjkwMDcwRTdCRSAvKiBUaWxlR3JpZC5t
bSAqLywKIAkJCQlFNDI0QTM5RDEzMzBERjAxMDBDRjZEQzkgLyogVGlsZUdyaWRUaWxlLmggKi8s
CkBAIC0yNDcxOSw2ICsyNDcyNSw3IEBACiAJCQkJNTFFMUVDQzMwQzkxQzkwNDAwREMyNTVCIC8q
IFBhZ2VVUkxSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGRDVCOTdCMTM1Q0M5NzgwMEQ1
RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzc3QUJB
MDE1REVGRUVGMDAzMUZEMDQgLyogUGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3
MkJGMEIxODdGRDQ1QzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4NTA2N0YxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4NTA2ODAxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RUQzNUEzMTZENkRDRTIwMDIyNDhGMyAvKiBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGSU9TLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NjkwLDYg
KzI3Njk3LDcgQEAKIAkJCQkxOUJGRjY0RTExQzBGMkFDMDBCOEMwNEQgLyogSlNTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0Q3MjBBQjc1QTZG
MDAwRTVBQzQgLyogSlNTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjJGQTNENzQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFGNzJCRjBBMTg3RkQ0NDkwMDA5QkNC
MyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJGQTNENzYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNThFODdDMTM2MEEyRUUwMEU0NzQ4QyAvKiBKU1NW
R0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENzgwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVGbG9vZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDE2MTYwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDYgKzY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gdGV4dHVyZSBzaXplIGxpbWl0
IG9uIGFsbCBzdXBwb3J0ZWQgaGFyZHdhcmUuCiAjaWYgUExBVEZPUk0oSU9TKQogc3RhdGljIGNv
bnN0IGludCBjTWF4UGl4ZWxEaW1lbnNpb24gPSAxMjgwOworc3RhdGljIGNvbnN0IGludCBjTWF4
UGl4ZWxEaW1lbnNpb25Mb3dNZW1vcnkgPSAxMDI0Oworc3RhdGljIGNvbnN0IGludCBjTWVtb3J5
TGV2ZWxUb1VzZVNtYWxsZXJQaXhlbERpbWVuc2lvbiA9IDM1OwogI2Vsc2UKIHN0YXRpYyBjb25z
dCBpbnQgY01heFBpeGVsRGltZW5zaW9uID0gMjAwMDsKICNlbmRpZgpAQCAtMzAyNiw3ICszMDI4
LDEyIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpyZXF1aXJlc1RpbGVkTGF5ZXIKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklYTUU6IGNhdGNoIHplcm8tc2l6ZSBoZWlnaHQgb3Ig
d2lkdGggaGVyZSAob3IgZWFybGllcik/CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGZsb2F0IG1h
eFBpeGVsRGltZW5zaW9uID0gc3lzdGVtTWVtb3J5TGV2ZWwoKSA8IGNNZW1vcnlMZXZlbFRvVXNl
U21hbGxlclBpeGVsRGltZW5zaW9uID8gY01heFBpeGVsRGltZW5zaW9uTG93TWVtb3J5IDogY01h
eFBpeGVsRGltZW5zaW9uOworICAgIHJldHVybiBtX3NpemUud2lkdGgoKSAqIHBhZ2VTY2FsZUZh
Y3RvciA+IG1heFBpeGVsRGltZW5zaW9uIHx8IG1fc2l6ZS5oZWlnaHQoKSAqIHBhZ2VTY2FsZUZh
Y3RvciA+IG1heFBpeGVsRGltZW5zaW9uOworI2Vsc2UKICAgICByZXR1cm4gbV9zaXplLndpZHRo
KCkgKiBwYWdlU2NhbGVGYWN0b3IgPiBjTWF4UGl4ZWxEaW1lbnNpb24gfHwgbV9zaXplLmhlaWdo
dCgpICogcGFnZVNjYWxlRmFjdG9yID4gY01heFBpeGVsRGltZW5zaW9uOworI2VuZGlmCiB9CiAK
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzd2FwRnJvbU9yVG9UaWxlZExheWVyKGJvb2wgdXNlVGls
ZWRMYXllcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9U
aWxlQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5oCShyZXZpc2lvbiAxNjE2MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNzgsNiArNzgsMTEgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGJsYW5r
UGl4ZWxDb3VudCgpIGNvbnN0OwogICAgIHN0YXRpYyB1bnNpZ25lZCBibGFua1BpeGVsQ291bnRG
b3JUaWxlcyhjb25zdCBQbGF0Zm9ybUxheWVyTGlzdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEludFBvaW50Jik7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdW5zaWduZWQgbnVtYmVyT2ZV
bnBhcmVudGVkVGlsZXMoKSBjb25zdCB7IHJldHVybiBtX2NvaG9ydExpc3Quc2l6ZSgpOyB9Cisg
ICAgdm9pZCByZW1vdmVVbnBhcmVudGVkVGlsZXNOb3coKTsKKyNlbmRpZgorCiBwdWJsaWM6CiAg
ICAgLy8gT25seSBwdWJsaWMgZm9yIGlubGluZSBtZXRob2RzIGluIHRoZSBpbXBsZW1lbnRhdGlv
biBmaWxlLgogICAgIHR5cGVkZWYgSW50UG9pbnQgVGlsZUluZGV4OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJv
bGxlci5tbQkocmV2aXNpb24gMTYxNjA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICsz
NiwxMiBAQAogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHV0aWxpdHk+CiAK
KyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0ICJUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIGVudW0gVGlsZVZh
bGlkYXRpb25Qb2xpY3lGbGFnIHsKICAgICBQcnVuZVNlY29uZGFyeVRpbGVzID0gMSA8PCAwLAog
ICAgIFVucGFyZW50QWxsVGlsZXMgPSAxIDw8IDEKQEAgLTg0LDYgKzg4LDEwIEBAIFRpbGVDb250
cm9sbGVyOjp+VGlsZUNvbnRyb2xsZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKCku
cmVtb3ZlVGlsZUNvbnRyb2xsZXIodGhpcyk7CisjZW5kaWYKKwogICAgIGZvciAoVGlsZU1hcDo6
aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkKICAgICAgICAgaXQtPnZhbHVlLmxheWVyLT5zZXRPd25lcihudWxscHRyKTsK
IApAQCAtODI0LDYgKzgzMiwxMCBAQCBUaWxlQ29udHJvbGxlcjo6VGlsZUNvaG9ydCBUaWxlQ29u
dHJvbGxlCiB2b2lkIFRpbGVDb250cm9sbGVyOjpzdGFydGVkTmV3Q29ob3J0KFRpbGVDb2hvcnQg
Y29ob3J0KQogewogICAgIG1fY29ob3J0TGlzdC5hcHBlbmQoVGlsZUNvaG9ydEluZm8oY29ob3J0
LCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSkpOworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICBpZiAoIW1faXNJbldpbmRvdykKKyAgICAgICAgdGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVy
KCkudXBkYXRlRm9yVGlsZUNvbnRyb2xsZXIodGhpcyk7CisjZW5kaWYKIH0KIAogVGlsZUNvbnRy
b2xsZXI6OlRpbGVDb2hvcnQgVGlsZUNvbnRyb2xsZXI6Om5ld2VzdFRpbGVDb2hvcnQoKSBjb25z
dApAQCAtMTE2OCw1ICsxMTgwLDE3IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6OmRyYXdUaWxlTWFw
Q29udGVudHMKICAgICB9CiB9CiAgICAgCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBUaWxlQ29u
dHJvbGxlcjo6cmVtb3ZlVW5wYXJlbnRlZFRpbGVzTm93KCkKK3sKKyAgICB3aGlsZSAoIW1fY29o
b3J0TGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgVGlsZUNvaG9ydEluZm8gZmlyc3RDb2hvcnQg
PSBtX2NvaG9ydExpc3QudGFrZUZpcnN0KCk7CisgICAgICAgIHJlbW92ZVRpbGVzSW5Db2hvcnQo
Zmlyc3RDb2hvcnQuY29ob3J0KTsKKyAgICB9CisKKyAgICBpZiAobV90aWxlZFNjcm9sbGluZ0lu
ZGljYXRvckxheWVyKQorICAgICAgICB1cGRhdGVUaWxlQ292ZXJhZ2VNYXAoKTsKK30KKyNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9T
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGlsZUNvbnRy
b2xsZXJNZW1vcnlIYW5kbGVySU9TLmgiCisKKyNpbmNsdWRlICJNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuaCIKKyNpbmNsdWRlICJUaWxlQ29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBrTWF4Q291bnRPZlVucGFyZW50ZWRUaWxlZExheWVy
cyA9IDE2OworCit2b2lkIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcjo6cmVtb3ZlVGlsZUNv
bnRyb2xsZXIoVGlsZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAgaWYgKG1fdGlsZUNv
bnRyb2xsZXJzLmNvbnRhaW5zKGNvbnRyb2xsZXIpKQorICAgICAgICBtX3RpbGVDb250cm9sbGVy
cy5yZW1vdmUoY29udHJvbGxlcik7Cit9CisKK3Vuc2lnbmVkIFRpbGVDb250cm9sbGVyTWVtb3J5
SGFuZGxlcjo6dG90YWxVbnBhcmVudGVkVGlsZWRMYXllcnMoKSBjb25zdAoreworICAgIHVuc2ln
bmVkIHRvdGFsVW5wYXJlbnRlZExheWVycyA9IDA7CisgICAgZm9yIChMaXN0SGFzaFNldDxUaWxl
Q29udHJvbGxlcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZUNvbnRyb2xsZXJzLmJlZ2lu
KCk7IGl0ICE9IG1fdGlsZUNvbnRyb2xsZXJzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIFRpbGVD
b250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9ICppdDsKKyAgICAgICAgdG90YWxVbnBhcmVudGVk
TGF5ZXJzICs9IHRpbGVDb250cm9sbGVyLT5udW1iZXJPZlVucGFyZW50ZWRUaWxlcygpOworICAg
IH0KKyAgICByZXR1cm4gdG90YWxVbnBhcmVudGVkTGF5ZXJzOworfQorCit2b2lkIFRpbGVDb250
cm9sbGVyTWVtb3J5SGFuZGxlcjo6dXBkYXRlRm9yVGlsZUNvbnRyb2xsZXIoVGlsZUNvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIpCit7CisgICAgbV90aWxlQ29udHJvbGxlcnMuYXBwZW5kT3JNb3ZlVG9M
YXN0KGNvbnRyb2xsZXIpOworCisgICAgLy8gSWYgd2UgYXJlIHVuZGVyIG1lbW9yeSBwcmVzc3Vy
ZSwgcmVtb3ZlIGFsbCB1bnBhcmVudGVkIHRpbGVzIG5vdy4KKyAgICBpZiAobWVtb3J5UHJlc3N1
cmVIYW5kbGVyKCkuaGFzUmVjZWl2ZWRNZW1vcnlQcmVzc3VyZSgpKSB7CisgICAgICAgIHRyaW1V
bnBhcmVudGVkVGlsZXNUb1RhcmdldCgwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmICh0b3RhbFVucGFyZW50ZWRUaWxlZExheWVycygpIDwga01heENvdW50T2ZVbnBhcmVudGVk
VGlsZWRMYXllcnMpCisgICAgICAgIHJldHVybjsKKworICAgIHRyaW1VbnBhcmVudGVkVGlsZXNU
b1RhcmdldChrTWF4Q291bnRPZlVucGFyZW50ZWRUaWxlZExheWVycyk7Cit9CisKK3ZvaWQgVGls
ZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyOjp0cmltVW5wYXJlbnRlZFRpbGVzVG9UYXJnZXQodW5z
aWduZWQgdGFyZ2V0KQoreworICAgIHdoaWxlICghbV90aWxlQ29udHJvbGxlcnMuaXNFbXB0eSgp
KSB7CisgICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IG1fdGlsZUNvbnRy
b2xsZXJzLmZpcnN0KCk7CisgICAgICAgIHRpbGVDb250cm9sbGVyLT5yZW1vdmVVbnBhcmVudGVk
VGlsZXNOb3coKTsKKyAgICAgICAgbV90aWxlQ29udHJvbGxlcnMucmVtb3ZlRmlyc3QoKTsKKwor
ICAgICAgICBpZiAodGFyZ2V0ICYmIHRvdGFsVW5wYXJlbnRlZFRpbGVkTGF5ZXJzKCkgPCB0YXJn
ZXQpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCitUaWxlQ29udHJvbGxlck1lbW9y
eUhhbmRsZXImIHRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcigpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIsIHN0YXRpY1RpbGVDb250cm9s
bGVyTWVtb3J5SGFuZGxlciwgKCkpOworICAgIHJldHVybiBzdGF0aWNUaWxlQ29udHJvbGxlck1l
bW9yeUhhbmRsZXI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9U
aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1v
cnlIYW5kbGVySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgX1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPU19oCisjZGVmaW5lIF9U
aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1NfaAorCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGlsZUNvbnRyb2xsZXI7CisK
K2NsYXNzIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlciB7CitwdWJsaWM6CisgICAgZnJpZW5k
IFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlciYgdGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVy
KCk7CisKKyAgICB2b2lkIHJlbW92ZVRpbGVDb250cm9sbGVyKFRpbGVDb250cm9sbGVyKiBjb250
cm9sbGVyKTsKKyAgICB2b2lkIHVwZGF0ZUZvclRpbGVDb250cm9sbGVyKFRpbGVDb250cm9sbGVy
KiBjb250cm9sbGVyKTsKKyAgICB2b2lkIHRyaW1VbnBhcmVudGVkVGlsZXNUb1RhcmdldCh1bnNp
Z25lZCB0YXJnZXQpOworCitwcml2YXRlOgorICAgIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxl
cigpIHt9CisgICAgdW5zaWduZWQgdG90YWxVbnBhcmVudGVkVGlsZWRMYXllcnMoKSBjb25zdDsK
KworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8VGlsZUNvbnRyb2xsZXIqPiBUaWxlQ29udHJvbGxl
ckxpc3Q7CisgICAgVGlsZUNvbnRyb2xsZXJMaXN0IG1fdGlsZUNvbnRyb2xsZXJzOworfTsKKwor
VGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyJiB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIo
KTsKK30KKworI2VuZGlmIC8vIF9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1NfaApJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNjIxKQorKysgU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDEtMDkgIFlv
bmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhciB1
bnBhcmVudGVkIHRpbGVkIGxheWVycyBvbiBtZW1vcnkgcHJlc3N1cmUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY3MzcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToK
KyAgICAgICAgKCtbV2ViVmlldyBfaGFuZGxlTWVtb3J5V2FybmluZ10pOiBDbGVhciBhbGwgdW5w
YXJlbnRlZCB0aWxlcyB3aGVuIHVuZGVyIG1lbW9yeSBwcmVzc3VyZS4KKwogMjAxNC0wMS0wOCAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBXVEY6
OlN0cmluZ1ZpZXcgYW5kIHVzZSBpdCBmb3IgZ3JhbW1hciBjaGVja2luZwpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTYxNjA0KQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNiArMjMx
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NtYXJ0UmVwbGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0UnVuLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XQUtXaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkTWVzc2FnZS5oPgpAQCAtMTI3Niw2ICsx
Mjc3LDggQEAgKyAodm9pZClfaGFuZGxlTWVtb3J5V2FybmluZwogICAgIGlmICghZGlkT25lVGlt
ZUluaXRpYWxpemF0aW9uKQogICAgICAgICByZXR1cm47CiAKKyAgICB0aWxlQ29udHJvbGxlck1l
bW9yeUhhbmRsZXIoKS50cmltVW5wYXJlbnRlZFRpbGVzVG9UYXJnZXQoMCk7CisKICNpZiBFTkFC
TEUoRElTS19JTUFHRV9DQUNIRSkKICAgICB7CiAgICAgICAgIFdlYktpdDo6TWVtb3J5TWVhc3Vy
ZSBtZWFzdXJlcigiTWVtb3J5IHdhcm5pbmc6IGZsdXNoaW5nIGltYWdlcyB0byBkaXNrLiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220810</attachid>
            <date>2014-01-09 23:31:03 -0800</date>
            <delta_ts>2014-01-10 11:12:06 -0800</delta_ts>
            <desc>Fix style issues.</desc>
            <filename>clear_tiles.patch</filename>
            <type>text/plain</type>
            <size>19982</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE0LTAxLTA5ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYXIgdW5wYXJl
bnRlZCB0aWxlZCBsYXllcnMgb24gbWVtb3J5IHByZXNzdXJlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NzM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGlsZUNvbnRyb2xsZXIgaG9sZCB1bnBhcmVu
dGVkIHRpbGVzIGZvciBhIHNob3J0IHBlcmlvZCBvZiB0aW1lICgxIC0zIHNlYyk7IHdlIHNob3Vs
ZCBjbGVhciB0aGVzZSB1bnBhcmVudGVkCisgICAgICAgIHRpbGVzIGltbWVkaWF0ZWx5IGlmIHdl
IGFyZSB1bmRlciBtZW1vcnkgcHJlc3N1cmUuCisgICAgICAgIAorICAgICAgICBUaGUgcGF0Y2gg
ZG9lcyAzIHRoaW5ncyB0byBpbXByb3ZlIHRoZSBiZWhhdmlvcjoKKyAgICAgICAgMSkgV2hlbiB0
aGUgc3lzdGVtIGZyZWUgbWVtb3J5IGlzIGxvdyAoPDM1JSksIHJlZHVjZSB0aGUgdGlsaW5nIHRo
cmVzaG9sZC4gIFRoaXMgY291bGQgcmVkdWNlCisgICAgICAgIHRoZSBwZWFrIG1lbW9yeSB1c2Fn
ZSB3aGVuIHN5c3RlbSBpcyB1bmRlciBsb3cgbWVtb3J5IHNpbmNlIHdlIHdpbGwgY29udmVydCBt
b3JlIHdlYiBsYXllcnMgaW50bworICAgICAgICB0aWxlZCBiYWNraW5nLgorICAgICAgICAyKSBV
bmRlciBtZW1vcnkgcHJlc3N1cmUsIGltbWVkaWF0ZWx5IGNsZWFyIGFsbCB1bnBhcmVudGVkIHRp
bGVzLgorICAgICAgICAzKSBBZGQgYSBjYXAgKDE2IHRpbGVzKSB0byBsaW1pdCB0aGUgdG90YWwg
bnVtYmVyIG9mIHVucGFyZW50ZWQgdGlsZXMgaW4gVGlsZUNvbnRyb2xsZXIncy4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkIGEgbmV3IGNsYXNzIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlci4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpyZXF1aXJlc1RpbGVkTGF5ZXIpOiAgVXNlIGEg
c21hbGxlciB0aWxpbmcgdGhyZXNob2xkIGlmIHRoZSBzeXN0ZW0gZnJlZSBtZW1vcnkgaXMgbG93
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6Om51bWJlck9mVW5wYXJlbnRlZFRpbGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6c3RhcnRlZE5ld0NvaG9ydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6cmVtb3ZlVW5wYXJlbnRlZFRpbGVzTm93
KTogUmVtb3ZlIGFsbCB1bnBhcmVudGQgdGlsZXMuCisgICAgICAgICogcGxhdGZvcm0vaW9zL01l
bW9yeVByZXNzdXJlSGFuZGxlcklPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpU
aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXI6OnJlbW92ZVRpbGVDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcjo6dG90YWxVbnBhcmVudGVk
VGlsZWRMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5k
bGVyOjp1cGRhdGVGb3JUaWxlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXI6OnRyaW1VbnBhcmVudGVkVGlsZXNUb1RhcmdldCk6IFRyaW1z
IHRoZSBudW1iZXIgb2YgdW5wYXJlbnRlZCB0aWxlcyB1bnRpbAorICAgICAgICAgICAgaXQgcmVh
Y2hlcyB0aGUgdGFyZ2V0LgorICAgICAgICAoV2ViQ29yZTo6dGlsZUNvbnRyb2xsZXJNZW1vcnlI
YW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5k
bGVySU9TLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXJNZW1vcnlI
YW5kbGVyOjpUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIpOgorCiAyMDE0LTAxLTA5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgRml4IGEgYnVp
bGQgYnJlYWsgb24gRUZMIGRlYnVnIGJ1aWxkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gMTYxNjA0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTI0NDcsNiArMjQ0Nyw4IEBAIF93a0dldFNjcmVlblNjYWxlRmFjdG9yCiBfd2tH
ZXRWaWV3cG9ydFNjcmVlblNpemUKIF93a0lzR0IxODAzMENvbXBsaWFuY2VSZXF1aXJlZAogX3dr
U2V0TGF5ZXJDb250ZW50c1NjYWxlCitfX1pON1dlYkNvcmUyN3RpbGVDb250cm9sbGVyTWVtb3J5
SGFuZGxlckV2CitfX1pON1dlYkNvcmUyN1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcjI3dHJp
bVVucGFyZW50ZWRUaWxlc1RvVGFyZ2V0RWoKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoTkRFQlVH
KQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTYxNjA0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04OTQsNiArODk0LDggQEAK
IAkJMUYzQzNCRUIxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGM0MzQkU5MTM1Q0FGM0MwMEI4
QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggKi87IH07CiAJCTFGM0YxOTUzMTQ5OUNBNzYwMEE1QUVB
NyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxRjNGMTk1MjE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RBcmVu
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFG
NjhENEFFMTRCQjlEQ0EwMDdCNUM2MiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjY4RDRBRDE0QkI5
RENBMDA3QjVDNjIgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVySU9TLm1tICovOyB9OworCQkxRjcy
QkYwQTE4N0ZENDQ5MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNzJCRjA4
MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwICov
OyB9OworCQkxRjcyQkYwQjE4N0ZENDVDMDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlI
YW5kbGVySU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxRjcyQkYwOTE4N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVy
SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MUZBRkJGMTgxNUE1RkE2RTAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQUZCRjE3MTVBNUZBNTIwMDA4M0Ey
MCAvKiBVVElVdGlsaXRpZXMubW0gKi87IH07CiAJCTFGQUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAv
KiBVVElVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFGQUZCRjE2MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLzsgfTsK
IAkJMUZDNDBGQjkxNjU1Q0NCNjAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUZDNDBGQjgx
NjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwICovOyB9OwpAQCAt
NzY1Nyw2ICs3NjU5LDggQEAKIAkJMUYzQzNCRTkxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29u
dHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9scy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjNGMTk1MjE0OTlDQTc2MDBBNUFFQTcg
LyogUE9ERnJlZUxpc3RBcmVuYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
T0RGcmVlTGlzdEFyZW5hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGNjhENEFE
MTRCQjlEQ0EwMDdCNUM2MiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1Mu
bW07IHBhdGggPSBpb3MvTWVtb3J5UHJlc3N1cmVIYW5kbGVySU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxRjcyQkYwODE4N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xs
ZXJNZW1vcnlIYW5kbGVySU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHA7IHBhdGggPSBpb3MvVGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUY3MkJGMDkxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxl
cklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUaWxlQ29udHJvbGxlck1l
bW9yeUhhbmRsZXJJT1MuaDsgcGF0aCA9IGlvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBRkJGMTYxNUE1RkE1MjAwMDgz
QTIwIC8qIFVUSVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
VElVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBRkJGMTcxNUE1
RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFVUSVV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc3NzksMTUgKzE3NzgzLDYgQEAK
IAkJCW5hbWUgPSBwYXJzZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlB
NTE2RThCMjEzNkUwNEMwMDA3NkMzQzAgLyogaW9zICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7
Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlBNTE2RThCNDEzNkUwNERCMDA3NkMzQzAgLyogTG9jYWxp
emVkRGF0ZUNhY2hlLmggKi8sCi0JCQkJQTUxNkU4QjUxMzZFMDREQjAwNzZDM0MwIC8qIExvY2Fs
aXplZERhdGVDYWNoZS5tbSAqLywKLQkJCSk7Ci0JCQlwYXRoID0gaW9zOwotCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJQTE0ODMyOEIxODdGNTA2ODAwREE2M0E2IC8qIHdhayAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzgyNyw2ICsx
NzgyMiwxNSBAQAogCQkJbmFtZSA9IHdhazsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCUE1MTZFOEIyMTM2RTA0QzAwMDc2QzNDMCAvKiBpb3MgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1MTZFOEI0MTM2RTA0REIwMDc2QzNDMCAv
KiBMb2NhbGl6ZWREYXRlQ2FjaGUuaCAqLywKKwkJCQlBNTE2RThCNTEzNkUwNERCMDA3NkMzQzAg
LyogTG9jYWxpemVkRGF0ZUNhY2hlLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBpb3M7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlBNTlFM0MxQjExNTgwRjM0MDA3MjkyOEUg
LyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE3
ODY3LDYgKzE3ODcxLDggQEAKIAkJCQk0NEM5OTE5RTBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJ
T1MubW0gKi8sCiAJCQkJRTRDM0IxRjkwRjBFNDE2MTAwOTY5M0Y2IC8qIFRpbGVDYWNoZS5oICov
LAogCQkJCUU0QzNCMUZCMEYwRTQxNzAwMDk2OTNGNiAvKiBUaWxlQ2FjaGUubW0gKi8sCisJCQkJ
MUY3MkJGMDgxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklP
Uy5jcHAgKi8sCisJCQkJMUY3MkJGMDkxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVy
TWVtb3J5SGFuZGxlcklPUy5oICovLAogCQkJCUU0QjY1QTU3MTMyRkE4RTcwMDcwRTdCRSAvKiBU
aWxlR3JpZC5oICovLAogCQkJCUU0QjY1QTU5MTMyRkFBRjkwMDcwRTdCRSAvKiBUaWxlR3JpZC5t
bSAqLywKIAkJCQlFNDI0QTM5RDEzMzBERjAxMDBDRjZEQzkgLyogVGlsZUdyaWRUaWxlLmggKi8s
CkBAIC0yNDcxOSw2ICsyNDcyNSw3IEBACiAJCQkJNTFFMUVDQzMwQzkxQzkwNDAwREMyNTVCIC8q
IFBhZ2VVUkxSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGRDVCOTdCMTM1Q0M5NzgwMEQ1
RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzc3QUJB
MDE1REVGRUVGMDAzMUZEMDQgLyogUGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3
MkJGMEIxODdGRDQ1QzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4NTA2N0YxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4NTA2ODAxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RUQzNUEzMTZENkRDRTIwMDIyNDhGMyAvKiBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGSU9TLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NjkwLDYg
KzI3Njk3LDcgQEAKIAkJCQkxOUJGRjY0RTExQzBGMkFDMDBCOEMwNEQgLyogSlNTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0Q3MjBBQjc1QTZG
MDAwRTVBQzQgLyogSlNTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjJGQTNENzQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFGNzJCRjBBMTg3RkQ0NDkwMDA5QkNC
MyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJGQTNENzYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNThFODdDMTM2MEEyRUUwMEU0NzQ4QyAvKiBKU1NW
R0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENzgwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVGbG9vZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDE2MTYwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDYgKzY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gdGV4dHVyZSBzaXplIGxpbWl0
IG9uIGFsbCBzdXBwb3J0ZWQgaGFyZHdhcmUuCiAjaWYgUExBVEZPUk0oSU9TKQogc3RhdGljIGNv
bnN0IGludCBjTWF4UGl4ZWxEaW1lbnNpb24gPSAxMjgwOworc3RhdGljIGNvbnN0IGludCBjTWF4
UGl4ZWxEaW1lbnNpb25Mb3dNZW1vcnkgPSAxMDI0Oworc3RhdGljIGNvbnN0IGludCBjTWVtb3J5
TGV2ZWxUb1VzZVNtYWxsZXJQaXhlbERpbWVuc2lvbiA9IDM1OwogI2Vsc2UKIHN0YXRpYyBjb25z
dCBpbnQgY01heFBpeGVsRGltZW5zaW9uID0gMjAwMDsKICNlbmRpZgpAQCAtMzAyNiw3ICszMDI4
LDEyIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpyZXF1aXJlc1RpbGVkTGF5ZXIKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklYTUU6IGNhdGNoIHplcm8tc2l6ZSBoZWlnaHQgb3Ig
d2lkdGggaGVyZSAob3IgZWFybGllcik/CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGZsb2F0IG1h
eFBpeGVsRGltZW5zaW9uID0gc3lzdGVtTWVtb3J5TGV2ZWwoKSA8IGNNZW1vcnlMZXZlbFRvVXNl
U21hbGxlclBpeGVsRGltZW5zaW9uID8gY01heFBpeGVsRGltZW5zaW9uTG93TWVtb3J5IDogY01h
eFBpeGVsRGltZW5zaW9uOworICAgIHJldHVybiBtX3NpemUud2lkdGgoKSAqIHBhZ2VTY2FsZUZh
Y3RvciA+IG1heFBpeGVsRGltZW5zaW9uIHx8IG1fc2l6ZS5oZWlnaHQoKSAqIHBhZ2VTY2FsZUZh
Y3RvciA+IG1heFBpeGVsRGltZW5zaW9uOworI2Vsc2UKICAgICByZXR1cm4gbV9zaXplLndpZHRo
KCkgKiBwYWdlU2NhbGVGYWN0b3IgPiBjTWF4UGl4ZWxEaW1lbnNpb24gfHwgbV9zaXplLmhlaWdo
dCgpICogcGFnZVNjYWxlRmFjdG9yID4gY01heFBpeGVsRGltZW5zaW9uOworI2VuZGlmCiB9CiAK
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzd2FwRnJvbU9yVG9UaWxlZExheWVyKGJvb2wgdXNlVGls
ZWRMYXllcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9U
aWxlQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5oCShyZXZpc2lvbiAxNjE2MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNzgsNiArNzgsMTEgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGJsYW5r
UGl4ZWxDb3VudCgpIGNvbnN0OwogICAgIHN0YXRpYyB1bnNpZ25lZCBibGFua1BpeGVsQ291bnRG
b3JUaWxlcyhjb25zdCBQbGF0Zm9ybUxheWVyTGlzdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEludFBvaW50Jik7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdW5zaWduZWQgbnVtYmVyT2ZV
bnBhcmVudGVkVGlsZXMoKSBjb25zdCB7IHJldHVybiBtX2NvaG9ydExpc3Quc2l6ZSgpOyB9Cisg
ICAgdm9pZCByZW1vdmVVbnBhcmVudGVkVGlsZXNOb3coKTsKKyNlbmRpZgorCiBwdWJsaWM6CiAg
ICAgLy8gT25seSBwdWJsaWMgZm9yIGlubGluZSBtZXRob2RzIGluIHRoZSBpbXBsZW1lbnRhdGlv
biBmaWxlLgogICAgIHR5cGVkZWYgSW50UG9pbnQgVGlsZUluZGV4OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJv
bGxlci5tbQkocmV2aXNpb24gMTYxNjA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICsz
NiwxMiBAQAogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHV0aWxpdHk+CiAK
KyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0ICJUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIGVudW0gVGlsZVZh
bGlkYXRpb25Qb2xpY3lGbGFnIHsKICAgICBQcnVuZVNlY29uZGFyeVRpbGVzID0gMSA8PCAwLAog
ICAgIFVucGFyZW50QWxsVGlsZXMgPSAxIDw8IDEKQEAgLTg0LDYgKzg4LDEwIEBAIFRpbGVDb250
cm9sbGVyOjp+VGlsZUNvbnRyb2xsZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKCku
cmVtb3ZlVGlsZUNvbnRyb2xsZXIodGhpcyk7CisjZW5kaWYKKwogICAgIGZvciAoVGlsZU1hcDo6
aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkKICAgICAgICAgaXQtPnZhbHVlLmxheWVyLT5zZXRPd25lcihudWxscHRyKTsK
IApAQCAtODI0LDYgKzgzMiwxMCBAQCBUaWxlQ29udHJvbGxlcjo6VGlsZUNvaG9ydCBUaWxlQ29u
dHJvbGxlCiB2b2lkIFRpbGVDb250cm9sbGVyOjpzdGFydGVkTmV3Q29ob3J0KFRpbGVDb2hvcnQg
Y29ob3J0KQogewogICAgIG1fY29ob3J0TGlzdC5hcHBlbmQoVGlsZUNvaG9ydEluZm8oY29ob3J0
LCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSkpOworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICBpZiAoIW1faXNJbldpbmRvdykKKyAgICAgICAgdGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVy
KCkudXBkYXRlRm9yVGlsZUNvbnRyb2xsZXIodGhpcyk7CisjZW5kaWYKIH0KIAogVGlsZUNvbnRy
b2xsZXI6OlRpbGVDb2hvcnQgVGlsZUNvbnRyb2xsZXI6Om5ld2VzdFRpbGVDb2hvcnQoKSBjb25z
dApAQCAtMTE2OCw1ICsxMTgwLDE3IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6OmRyYXdUaWxlTWFw
Q29udGVudHMKICAgICB9CiB9CiAgICAgCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBUaWxlQ29u
dHJvbGxlcjo6cmVtb3ZlVW5wYXJlbnRlZFRpbGVzTm93KCkKK3sKKyAgICB3aGlsZSAoIW1fY29o
b3J0TGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgVGlsZUNvaG9ydEluZm8gZmlyc3RDb2hvcnQg
PSBtX2NvaG9ydExpc3QudGFrZUZpcnN0KCk7CisgICAgICAgIHJlbW92ZVRpbGVzSW5Db2hvcnQo
Zmlyc3RDb2hvcnQuY29ob3J0KTsKKyAgICB9CisKKyAgICBpZiAobV90aWxlZFNjcm9sbGluZ0lu
ZGljYXRvckxheWVyKQorICAgICAgICB1cGRhdGVUaWxlQ292ZXJhZ2VNYXAoKTsKK30KKyNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9T
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGlsZUNvbnRy
b2xsZXJNZW1vcnlIYW5kbGVySU9TLmgiCisKKyNpbmNsdWRlICJNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuaCIKKyNpbmNsdWRlICJUaWxlQ29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBrTWF4Q291bnRPZlVucGFyZW50ZWRUaWxlZExheWVy
cyA9IDE2OworCit2b2lkIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcjo6cmVtb3ZlVGlsZUNv
bnRyb2xsZXIoVGlsZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAgaWYgKG1fdGlsZUNv
bnRyb2xsZXJzLmNvbnRhaW5zKGNvbnRyb2xsZXIpKQorICAgICAgICBtX3RpbGVDb250cm9sbGVy
cy5yZW1vdmUoY29udHJvbGxlcik7Cit9CisKK3Vuc2lnbmVkIFRpbGVDb250cm9sbGVyTWVtb3J5
SGFuZGxlcjo6dG90YWxVbnBhcmVudGVkVGlsZWRMYXllcnMoKSBjb25zdAoreworICAgIHVuc2ln
bmVkIHRvdGFsVW5wYXJlbnRlZExheWVycyA9IDA7CisgICAgZm9yIChMaXN0SGFzaFNldDxUaWxl
Q29udHJvbGxlcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZUNvbnRyb2xsZXJzLmJlZ2lu
KCk7IGl0ICE9IG1fdGlsZUNvbnRyb2xsZXJzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIFRpbGVD
b250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9ICppdDsKKyAgICAgICAgdG90YWxVbnBhcmVudGVk
TGF5ZXJzICs9IHRpbGVDb250cm9sbGVyLT5udW1iZXJPZlVucGFyZW50ZWRUaWxlcygpOworICAg
IH0KKyAgICByZXR1cm4gdG90YWxVbnBhcmVudGVkTGF5ZXJzOworfQorCit2b2lkIFRpbGVDb250
cm9sbGVyTWVtb3J5SGFuZGxlcjo6dXBkYXRlRm9yVGlsZUNvbnRyb2xsZXIoVGlsZUNvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIpCit7CisgICAgbV90aWxlQ29udHJvbGxlcnMuYXBwZW5kT3JNb3ZlVG9M
YXN0KGNvbnRyb2xsZXIpOworCisgICAgLy8gSWYgd2UgYXJlIHVuZGVyIG1lbW9yeSBwcmVzc3Vy
ZSwgcmVtb3ZlIGFsbCB1bnBhcmVudGVkIHRpbGVzIG5vdy4KKyAgICBpZiAobWVtb3J5UHJlc3N1
cmVIYW5kbGVyKCkuaGFzUmVjZWl2ZWRNZW1vcnlQcmVzc3VyZSgpKSB7CisgICAgICAgIHRyaW1V
bnBhcmVudGVkVGlsZXNUb1RhcmdldCgwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmICh0b3RhbFVucGFyZW50ZWRUaWxlZExheWVycygpIDwga01heENvdW50T2ZVbnBhcmVudGVk
VGlsZWRMYXllcnMpCisgICAgICAgIHJldHVybjsKKworICAgIHRyaW1VbnBhcmVudGVkVGlsZXNU
b1RhcmdldChrTWF4Q291bnRPZlVucGFyZW50ZWRUaWxlZExheWVycyk7Cit9CisKK3ZvaWQgVGls
ZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyOjp0cmltVW5wYXJlbnRlZFRpbGVzVG9UYXJnZXQodW5z
aWduZWQgdGFyZ2V0KQoreworICAgIHdoaWxlICghbV90aWxlQ29udHJvbGxlcnMuaXNFbXB0eSgp
KSB7CisgICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IG1fdGlsZUNvbnRy
b2xsZXJzLmZpcnN0KCk7CisgICAgICAgIHRpbGVDb250cm9sbGVyLT5yZW1vdmVVbnBhcmVudGVk
VGlsZXNOb3coKTsKKyAgICAgICAgbV90aWxlQ29udHJvbGxlcnMucmVtb3ZlRmlyc3QoKTsKKwor
ICAgICAgICBpZiAodGFyZ2V0ICYmIHRvdGFsVW5wYXJlbnRlZFRpbGVkTGF5ZXJzKCkgPCB0YXJn
ZXQpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCitUaWxlQ29udHJvbGxlck1lbW9y
eUhhbmRsZXImIHRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcigpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIsIHN0YXRpY1RpbGVDb250cm9s
bGVyTWVtb3J5SGFuZGxlciwgKCkpOworICAgIHJldHVybiBzdGF0aWNUaWxlQ29udHJvbGxlck1l
bW9yeUhhbmRsZXI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9U
aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1v
cnlIYW5kbGVySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TX2gKKyNkZWZpbmUgVGls
ZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TX2gKKworI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRpbGVDb250cm9sbGVyOworCitj
bGFzcyBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIgeworcHVibGljOgorICAgIGZyaWVuZCBU
aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXImIHRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcigp
OworCisgICAgdm9pZCByZW1vdmVUaWxlQ29udHJvbGxlcihUaWxlQ29udHJvbGxlciopOworICAg
IHZvaWQgdXBkYXRlRm9yVGlsZUNvbnRyb2xsZXIoVGlsZUNvbnRyb2xsZXIqKTsKKyAgICB2b2lk
IHRyaW1VbnBhcmVudGVkVGlsZXNUb1RhcmdldCh1bnNpZ25lZCB0YXJnZXQpOworCitwcml2YXRl
OgorICAgIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcigpIHsgfQorICAgIHVuc2lnbmVkIHRv
dGFsVW5wYXJlbnRlZFRpbGVkTGF5ZXJzKCkgY29uc3Q7CisKKyAgICB0eXBlZGVmIExpc3RIYXNo
U2V0PFRpbGVDb250cm9sbGVyKj4gVGlsZUNvbnRyb2xsZXJMaXN0OworICAgIFRpbGVDb250cm9s
bGVyTGlzdCBtX3RpbGVDb250cm9sbGVyczsKK307CisKK1RpbGVDb250cm9sbGVyTWVtb3J5SGFu
ZGxlciYgdGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyKCk7Cit9CisKKyNlbmRpZiAvLyBUaWxl
Q29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1NfaApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMTYxNjIxKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDEtMDkgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3po
YW5nQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhciB1bnBhcmVudGVkIHRpbGVkIGxheWVycyBv
biBtZW1vcnkgcHJlc3N1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjY3MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBfaGFu
ZGxlTWVtb3J5V2FybmluZ10pOiBDbGVhciBhbGwgdW5wYXJlbnRlZCB0aWxlcyB3aGVuIHVuZGVy
IG1lbW9yeSBwcmVzc3VyZS4KKwogMjAxNC0wMS0wOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBXVEY6OlN0cmluZ1ZpZXcgYW5kIHVzZSBpdCBm
b3IgZ3JhbW1hciBjaGVja2luZwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkocmV2aXNpb24gMTYxNjA0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNiArMjMxLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
U1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NtYXJ0UmVwbGFjZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0UnVuLmg+CisjaW1wb3J0IDxXZWJDb3JlL1RpbGVDb250
cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XQUtXaW5kb3cuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlVGhyZWFkTWVzc2FnZS5oPgpAQCAtMTI3Niw2ICsxMjc3LDggQEAgKyAodm9pZClfaGFuZGxl
TWVtb3J5V2FybmluZwogICAgIGlmICghZGlkT25lVGltZUluaXRpYWxpemF0aW9uKQogICAgICAg
ICByZXR1cm47CiAKKyAgICB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIoKS50cmltVW5wYXJl
bnRlZFRpbGVzVG9UYXJnZXQoMCk7CisKICNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKICAg
ICB7CiAgICAgICAgIFdlYktpdDo6TWVtb3J5TWVhc3VyZSBtZWFzdXJlcigiTWVtb3J5IHdhcm5p
bmc6IGZsdXNoaW5nIGltYWdlcyB0byBkaXNrLiIpOwo=
</data>
<flag name="review"
          id="244586"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220865</attachid>
            <date>2014-01-10 11:12:06 -0800</date>
            <delta_ts>2014-01-10 14:06:41 -0800</delta_ts>
            <desc>Address review comments before landing.</desc>
            <filename>remove_unusedtiles.patch</filename>
            <type>text/plain</type>
            <size>19254</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTY0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE0LTAxLTEwICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYXIgdW5wYXJl
bnRlZCB0aWxlZCBsYXllcnMgb24gbWVtb3J5IHByZXNzdXJlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NzM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFRpbGVDb250cm9sbGVyIGhvbGQgdW5wYXJlbnRl
ZCB0aWxlcyBmb3IgYSBzaG9ydCBwZXJpb2Qgb2YgdGltZSAoMSAtMyBzZWMpOyB3ZSBzaG91bGQg
Y2xlYXIgdGhlc2UgdW5wYXJlbnRlZAorICAgICAgICB0aWxlcyBpbW1lZGlhdGVseSBpZiB3ZSBh
cmUgdW5kZXIgbWVtb3J5IHByZXNzdXJlLgorICAgICAgICAKKyAgICAgICAgVGhlIHBhdGNoIGRv
ZXMgMyB0aGluZ3MgdG8gaW1wcm92ZSB0aGUgYmVoYXZpb3I6CisgICAgICAgIDEpIFdoZW4gdGhl
IHN5c3RlbSBmcmVlIG1lbW9yeSBpcyBsb3cgKDwzNSUpLCByZWR1Y2UgdGhlIHRpbGluZyB0aHJl
c2hvbGQuICBUaGlzIGNvdWxkIHJlZHVjZQorICAgICAgICB0aGUgcGVhayBtZW1vcnkgdXNhZ2Ug
d2hlbiBzeXN0ZW0gaXMgdW5kZXIgbG93IG1lbW9yeSBzaW5jZSB3ZSB3aWxsIGNvbnZlcnQgbW9y
ZSB3ZWIgbGF5ZXJzIGludG8KKyAgICAgICAgdGlsZWQgYmFja2luZy4KKyAgICAgICAgMikgVW5k
ZXIgbWVtb3J5IHByZXNzdXJlLCBpbW1lZGlhdGVseSBjbGVhciBhbGwgdW5wYXJlbnRlZCB0aWxl
cy4KKyAgICAgICAgMykgQWRkIGEgY2FwICgxNiB0aWxlcykgdG8gbGltaXQgdGhlIHRvdGFsIG51
bWJlciBvZiB1bnBhcmVudGVkIHRpbGVzIGluIFRpbGVDb250cm9sbGVyJ3MuCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZCBhIG5ldyBjbGFzcyBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVxdWlyZXNUaWxlZExheWVyKTogIFVzZSBhIHNt
YWxsZXIgdGlsaW5nIHRocmVzaG9sZCBpZiB0aGUgc3lzdGVtIGZyZWUgbWVtb3J5IGlzIGxvdy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpudW1iZXJPZlVucGFyZW50ZWRUaWxlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnN0YXJ0ZWROZXdDb2hvcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnJlbW92ZVVucGFyZW50ZWRUaWxlc05vdyk6
IFJlbW92ZSBhbGwgdW5wYXJlbnRkIHRpbGVzLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9NZW1v
cnlQcmVzc3VyZUhhbmRsZXJJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1RpbGVDb250
cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGls
ZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyOjpyZW1vdmVUaWxlQ29udHJvbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXI6OnRvdGFsVW5wYXJlbnRlZFRp
bGVkTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxl
cjo6dGlsZUNvbnRyb2xsZXJHYWluVW5wYXJlbnRlZFRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcjo6dHJpbVVucGFyZW50ZWRUaWxlc1RvVGFyZ2V0
KTogVHJpbXMgdGhlIG51bWJlciBvZiB1bnBhcmVudGVkIHRpbGVzIHVudGlsCisgICAgICAgICAg
ICBpdCByZWFjaGVzIHRoZSB0YXJnZXQuCisgICAgICAgIChXZWJDb3JlOjp0aWxlQ29udHJvbGxl
ck1lbW9yeUhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1l
bW9yeUhhbmRsZXJJT1MuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxl
ck1lbW9yeUhhbmRsZXI6OlRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcik6CisKIDIwMTQtMDEt
MTAgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEF0dGVtcHQg
dG8gZml4IHRoZSBpT1MgYnVpbGQgYWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzE2MTU4OT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNjE2NDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjQ0OCw2
ICsyNDQ4LDggQEAgX3drR2V0U2NyZWVuU2NhbGVGYWN0b3IKIF93a0dldFZpZXdwb3J0U2NyZWVu
U2l6ZQogX3drSXNHQjE4MDMwQ29tcGxpYW5jZVJlcXVpcmVkCiBfd2tTZXRMYXllckNvbnRlbnRz
U2NhbGUKK19fWk43V2ViQ29yZTI3dGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyRXYKK19fWk43
V2ViQ29yZTI3VGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyMjd0cmltVW5wYXJlbnRlZFRpbGVz
VG9UYXJnZXRFaQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChOREVCVUcpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxNjE2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTkwMSw2ICs5MDEsOCBAQAogCQkxRjNDM0JFQjEzNUNB
RjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUYzQzNCRTkxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29u
dHJvbHMuaCAqLzsgfTsKIAkJMUYzRjE5NTMxNDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0
QXJlbmEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFG
M0YxOTUyMTQ5OUNBNzYwMEE1QUVBNyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUY2OEQ0QUUxNEJCOURDQTAw
N0I1QzYyIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNjhENEFEMTRCQjlEQ0EwMDdCNUM2MiAvKiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MubW0gKi87IH07CisJCTFGNzJCRjBBMTg3RkQ0NDkwMDA5
QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUY3MkJGMDgxODdGRDQyNzAwMDlCQ0Iz
IC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi87IH07CisJCTFGNzJCRjBC
MTg3RkQ0NUMwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNzJCRjA5MTg3RkQ0
MjcwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRkFGQkYxODE1QTVGQTZF
MDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUZBRkJGMTcxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGll
cy5tbSAqLzsgfTsKIAkJMUZBRkJGMTkxNUE1RkE3NDAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUZBRkJGMTYx
NUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5oICovOyB9OwogCQkxRkM0MEZCOTE2NTVD
Q0I2MDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRkM0MEZCODE2NTVDNTkxMDA0MEYyOUUg
LyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi87IH07CkBAIC03NjgzLDYgKzc2ODUsOCBA
QAogCQkxRjNDM0JFOTEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFGM0YxOTUyMTQ5OUNBNzYwMEE1QUVBNyAvKiBQT0RGcmVlTGlzdEFy
ZW5hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPREZyZWVMaXN0QXJlbmEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY2OEQ0QUQxNEJCOURDQTAwN0I1QzYy
IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcklPUy5tbTsgcGF0aCA9IGlvcy9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFGNzJCRjA4MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGlsZUNvbnRyb2xs
ZXJNZW1vcnlIYW5kbGVySU9TLmNwcDsgcGF0aCA9IGlvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhh
bmRsZXJJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjcyQkYwOTE4N0ZE
NDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5o
OyBwYXRoID0gaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0
aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUSVV0aWxpdGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyog
VVRJVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VVRJVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRkM0MEZCNzE2
NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNzkzOCw2ICsxNzk0Miw4IEBACiAJCQkJNDRDOTkxOUUwRjNE
MjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLm1tICovLAogCQkJCUU0QzNCMUY5MEYwRTQxNjEwMDk2
OTNGNiAvKiBUaWxlQ2FjaGUuaCAqLywKIAkJCQlFNEMzQjFGQjBGMEU0MTcwMDA5NjkzRjYgLyog
VGlsZUNhY2hlLm1tICovLAorCQkJCTFGNzJCRjA4MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwICovLAorCQkJCTFGNzJCRjA5MTg3RkQ0MjcwMDA5
QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAqLywKIAkJCQlFNEI2NUE1
NzEzMkZBOEU3MDA3MEU3QkUgLyogVGlsZUdyaWQuaCAqLywKIAkJCQlFNEI2NUE1OTEzMkZBQUY5
MDA3MEU3QkUgLyogVGlsZUdyaWQubW0gKi8sCiAJCQkJRTQyNEEzOUQxMzMwREYwMTAwQ0Y2REM5
IC8qIFRpbGVHcmlkVGlsZS5oICovLApAQCAtMjQ4MjQsNiArMjQ4MzAsNyBAQAogCQkJCTUxRTFF
Q0MzMEM5MUM5MDQwMERDMjU1QiAvKiBQYWdlVVJMUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRkQ1Qjk3QjEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM3N0FCQTAxNURFRkVFRjAwMzFGRDA0IC8qIFBhZ2luYXRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTFGNzJCRjBCMTg3RkQ0NUMwMDA5QkNCMyAvKiBUaWxlQ29udHJv
bGxlck1lbW9yeUhhbmRsZXJJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4ODUwNjdGMTFEQTA0
NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTA4ODUwNjgwMTFE
QTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0VEMzVB
MzE2RDZEQ0UyMDAyMjQ4RjMgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRklPUy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNzgwNyw2ICsyNzgxNCw3IEBACiAJCQkJMTlCRkY2NEUxMUMwRjJBQzAw
QjhDMDREIC8qIEpTU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjJGQTNENzIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDc0MEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkx
RjcyQkYwQTE4N0ZENDQ5MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9T
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDc2MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzU4RTg3QzEz
NjBBMkVFMDBFNDc0OEMgLyogSlNTVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyRkEzRDc4MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFRmxvb2RFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiAxNjE2NDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIHRleHR1cmUgc2l6ZSBsaW1pdCBvbiBhbGwgc3VwcG9ydGVkIGhhcmR3YXJlLgogI2lmIFBM
QVRGT1JNKElPUykKIHN0YXRpYyBjb25zdCBpbnQgY01heFBpeGVsRGltZW5zaW9uID0gMTI4MDsK
K3N0YXRpYyBjb25zdCBpbnQgY01heFBpeGVsRGltZW5zaW9uTG93TWVtb3J5ID0gMTAyNDsKK3N0
YXRpYyBjb25zdCBpbnQgY01lbW9yeUxldmVsVG9Vc2VTbWFsbGVyUGl4ZWxEaW1lbnNpb24gPSAz
NTsKICNlbHNlCiBzdGF0aWMgY29uc3QgaW50IGNNYXhQaXhlbERpbWVuc2lvbiA9IDIwMDA7CiAj
ZW5kaWYKQEAgLTMwNTgsNyArMzA2MCwxMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6cmVxdWly
ZXNUaWxlZExheWVyCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FOiBjYXRj
aCB6ZXJvLXNpemUgaGVpZ2h0IG9yIHdpZHRoIGhlcmUgKG9yIGVhcmxpZXIpPworI2lmIFBMQVRG
T1JNKElPUykKKyAgICBpbnQgbWF4UGl4ZWxEaW1lbnNpb24gPSBzeXN0ZW1NZW1vcnlMZXZlbCgp
IDwgY01lbW9yeUxldmVsVG9Vc2VTbWFsbGVyUGl4ZWxEaW1lbnNpb24gPyBjTWF4UGl4ZWxEaW1l
bnNpb25Mb3dNZW1vcnkgOiBjTWF4UGl4ZWxEaW1lbnNpb247CisgICAgcmV0dXJuIG1fc2l6ZS53
aWR0aCgpICogcGFnZVNjYWxlRmFjdG9yID4gbWF4UGl4ZWxEaW1lbnNpb24gfHwgbV9zaXplLmhl
aWdodCgpICogcGFnZVNjYWxlRmFjdG9yID4gbWF4UGl4ZWxEaW1lbnNpb247CisjZWxzZQogICAg
IHJldHVybiBtX3NpemUud2lkdGgoKSAqIHBhZ2VTY2FsZUZhY3RvciA+IGNNYXhQaXhlbERpbWVu
c2lvbiB8fCBtX3NpemUuaGVpZ2h0KCkgKiBwYWdlU2NhbGVGYWN0b3IgPiBjTWF4UGl4ZWxEaW1l
bnNpb247CisjZW5kaWYKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnN3YXBGcm9tT3JUb1Rp
bGVkTGF5ZXIoYm9vbCB1c2VUaWxlZExheWVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLmgJKHJldmlz
aW9uIDE2MTY0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9U
aWxlQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCwxMSBAQCBwdWJsaWM6
CiAgICAgdW5zaWduZWQgYmxhbmtQaXhlbENvdW50KCkgY29uc3Q7CiAgICAgc3RhdGljIHVuc2ln
bmVkIGJsYW5rUGl4ZWxDb3VudEZvclRpbGVzKGNvbnN0IFBsYXRmb3JtTGF5ZXJMaXN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW50UG9pbnQmKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAg
ICB1bnNpZ25lZCBudW1iZXJPZlVucGFyZW50ZWRUaWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29o
b3J0TGlzdC5zaXplKCk7IH0KKyAgICB2b2lkIHJlbW92ZVVucGFyZW50ZWRUaWxlc05vdygpOwor
I2VuZGlmCisKIHB1YmxpYzoKICAgICAvLyBPbmx5IHB1YmxpYyBmb3IgaW5saW5lIG1ldGhvZHMg
aW4gdGhlIGltcGxlbWVudGF0aW9uIGZpbGUuCiAgICAgdHlwZWRlZiBJbnRQb2ludCBUaWxlSW5k
ZXg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNv
bnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLm1tCShyZXZpc2lvbiAxNjE2NDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM2LDggKzM2LDEyIEBACiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgog
I2ltcG9ydCA8dXRpbGl0eT4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgIlRpbGVDb250
cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICAKKwogZW51bSBUaWxlVmFsaWRhdGlvblBvbGljeUZsYWcgewogICAgIFBydW5lU2Vjb25k
YXJ5VGlsZXMgPSAxIDw8IDAsCiAgICAgVW5wYXJlbnRBbGxUaWxlcyA9IDEgPDwgMQpAQCAtODQs
NiArODgsMTAgQEAgVGlsZUNvbnRyb2xsZXI6On5UaWxlQ29udHJvbGxlcigpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB0aWxlQ29udHJv
bGxlck1lbW9yeUhhbmRsZXIoKS5yZW1vdmVUaWxlQ29udHJvbGxlcih0aGlzKTsKKyNlbmRpZgor
CiAgICAgZm9yIChUaWxlTWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0g
bV90aWxlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBpdC0+dmFsdWUubGF5ZXIt
PnNldE93bmVyKG51bGxwdHIpOwogCkBAIC04MjQsNiArODMyLDEwIEBAIFRpbGVDb250cm9sbGVy
OjpUaWxlQ29ob3J0IFRpbGVDb250cm9sbGUKIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnN0YXJ0ZWRO
ZXdDb2hvcnQoVGlsZUNvaG9ydCBjb2hvcnQpCiB7CiAgICAgbV9jb2hvcnRMaXN0LmFwcGVuZChU
aWxlQ29ob3J0SW5mbyhjb2hvcnQsIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKSk7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIGlmICghbV9pc0luV2luZG93KQorICAgICAgICB0aWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXIoKS50aWxlQ29udHJvbGxlckdhaW5lZFVucGFyZW50ZWRUaWxl
cyh0aGlzKTsKKyNlbmRpZgogfQogCiBUaWxlQ29udHJvbGxlcjo6VGlsZUNvaG9ydCBUaWxlQ29u
dHJvbGxlcjo6bmV3ZXN0VGlsZUNvaG9ydCgpIGNvbnN0CkBAIC0xMTY4LDUgKzExODAsMTcgQEAg
dm9pZCBUaWxlQ29udHJvbGxlcjo6ZHJhd1RpbGVNYXBDb250ZW50cwogICAgIH0KIH0KICAgICAK
KyNpZiBQTEFURk9STShJT1MpCit2b2lkIFRpbGVDb250cm9sbGVyOjpyZW1vdmVVbnBhcmVudGVk
VGlsZXNOb3coKQoreworICAgIHdoaWxlICghbV9jb2hvcnRMaXN0LmlzRW1wdHkoKSkgeworICAg
ICAgICBUaWxlQ29ob3J0SW5mbyBmaXJzdENvaG9ydCA9IG1fY29ob3J0TGlzdC50YWtlRmlyc3Qo
KTsKKyAgICAgICAgcmVtb3ZlVGlsZXNJbkNvaG9ydChmaXJzdENvaG9ydC5jb2hvcnQpOworICAg
IH0KKworICAgIGlmIChtX3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIpCisgICAgICAgIHVw
ZGF0ZVRpbGVDb3ZlcmFnZU1hcCgpOworfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9y
eUhhbmRsZXJJT1MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCIK
KworI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgorI2luY2x1ZGUgIlRpbGVDb250
cm9sbGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGtNYXhDb3VudE9mVW5wYXJlbnRlZFRpbGVkTGF5ZXJzID0gMTY7CisKK3ZvaWQgVGlsZUNvbnRy
b2xsZXJNZW1vcnlIYW5kbGVyOjpyZW1vdmVUaWxlQ29udHJvbGxlcihUaWxlQ29udHJvbGxlciog
Y29udHJvbGxlcikKK3sKKyAgICBpZiAobV90aWxlQ29udHJvbGxlcnMuY29udGFpbnMoY29udHJv
bGxlcikpCisgICAgICAgIG1fdGlsZUNvbnRyb2xsZXJzLnJlbW92ZShjb250cm9sbGVyKTsKK30K
KwordW5zaWduZWQgVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyOjp0b3RhbFVucGFyZW50ZWRU
aWxlZExheWVycygpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgdG90YWxVbnBhcmVudGVkTGF5ZXJz
ID0gMDsKKyAgICBmb3IgKExpc3RIYXNoU2V0PFRpbGVDb250cm9sbGVyKj46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV90aWxlQ29udHJvbGxlcnMuYmVnaW4oKTsgaXQgIT0gbV90aWxlQ29udHJvbGxl
cnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgVGlsZUNvbnRyb2xsZXIqIHRpbGVDb250cm9sbGVy
ID0gKml0OworICAgICAgICB0b3RhbFVucGFyZW50ZWRMYXllcnMgKz0gdGlsZUNvbnRyb2xsZXIt
Pm51bWJlck9mVW5wYXJlbnRlZFRpbGVzKCk7CisgICAgfQorICAgIHJldHVybiB0b3RhbFVucGFy
ZW50ZWRMYXllcnM7Cit9CisKK3ZvaWQgVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVyOjp0aWxl
Q29udHJvbGxlckdhaW5lZFVucGFyZW50ZWRUaWxlcyhUaWxlQ29udHJvbGxlciogY29udHJvbGxl
cikKK3sKKyAgICBtX3RpbGVDb250cm9sbGVycy5hcHBlbmRPck1vdmVUb0xhc3QoY29udHJvbGxl
cik7CisKKyAgICAvLyBJZiB3ZSBhcmUgdW5kZXIgbWVtb3J5IHByZXNzdXJlLCByZW1vdmUgYWxs
IHVucGFyZW50ZWQgdGlsZXMgbm93LgorICAgIGlmIChtZW1vcnlQcmVzc3VyZUhhbmRsZXIoKS5o
YXNSZWNlaXZlZE1lbW9yeVByZXNzdXJlKCkpIHsKKyAgICAgICAgdHJpbVVucGFyZW50ZWRUaWxl
c1RvVGFyZ2V0KDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHRvdGFsVW5w
YXJlbnRlZFRpbGVkTGF5ZXJzKCkgPCBrTWF4Q291bnRPZlVucGFyZW50ZWRUaWxlZExheWVycykK
KyAgICAgICAgcmV0dXJuOworCisgICAgdHJpbVVucGFyZW50ZWRUaWxlc1RvVGFyZ2V0KGtNYXhD
b3VudE9mVW5wYXJlbnRlZFRpbGVkTGF5ZXJzKTsKK30KKwordm9pZCBUaWxlQ29udHJvbGxlck1l
bW9yeUhhbmRsZXI6OnRyaW1VbnBhcmVudGVkVGlsZXNUb1RhcmdldChpbnQgdGFyZ2V0KQorewor
ICAgIHdoaWxlICghbV90aWxlQ29udHJvbGxlcnMuaXNFbXB0eSgpKSB7CisgICAgICAgIFRpbGVD
b250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IG1fdGlsZUNvbnRyb2xsZXJzLmZpcnN0KCk7Cisg
ICAgICAgIHRpbGVDb250cm9sbGVyLT5yZW1vdmVVbnBhcmVudGVkVGlsZXNOb3coKTsKKyAgICAg
ICAgbV90aWxlQ29udHJvbGxlcnMucmVtb3ZlRmlyc3QoKTsKKworICAgICAgICBpZiAodGFyZ2V0
ID4gMCAmJiB0b3RhbFVucGFyZW50ZWRUaWxlZExheWVycygpIDwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHRhcmdldCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCitUaWxlQ29udHJv
bGxlck1lbW9yeUhhbmRsZXImIHRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcigpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIsIHN0YXRpY1Rp
bGVDb250cm9sbGVyTWVtb3J5SGFuZGxlciwgKCkpOworICAgIHJldHVybiBzdGF0aWNUaWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9T
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGlsZUNvbnRy
b2xsZXJNZW1vcnlIYW5kbGVySU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TX2gKKyNk
ZWZpbmUgVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TX2gKKworI2luY2x1ZGUgPHd0Zi9M
aXN0SGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRpbGVDb250cm9s
bGVyOworCitjbGFzcyBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIgeworcHVibGljOgorICAg
IGZyaWVuZCBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXImIHRpbGVDb250cm9sbGVyTWVtb3J5
SGFuZGxlcigpOworCisgICAgdm9pZCByZW1vdmVUaWxlQ29udHJvbGxlcihUaWxlQ29udHJvbGxl
ciopOworICAgIHZvaWQgdGlsZUNvbnRyb2xsZXJHYWluZWRVbnBhcmVudGVkVGlsZXMoVGlsZUNv
bnRyb2xsZXIqKTsKKyAgICB2b2lkIHRyaW1VbnBhcmVudGVkVGlsZXNUb1RhcmdldChpbnQgdGFy
Z2V0KTsKKworcHJpdmF0ZToKKyAgICBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIoKSB7IH0K
KyAgICB1bnNpZ25lZCB0b3RhbFVucGFyZW50ZWRUaWxlZExheWVycygpIGNvbnN0OworCisgICAg
dHlwZWRlZiBMaXN0SGFzaFNldDxUaWxlQ29udHJvbGxlcio+IFRpbGVDb250cm9sbGVyTGlzdDsK
KyAgICBUaWxlQ29udHJvbGxlckxpc3QgbV90aWxlQ29udHJvbGxlcnM7Cit9OworCitUaWxlQ29u
dHJvbGxlck1lbW9yeUhhbmRsZXImIHRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcigpOworfQor
CisjZW5kaWYgLy8gVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TX2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE2MTY0MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE0LTAxLTEwICBZb25nanVuIFpo
YW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYXIgdW5wYXJlbnRl
ZCB0aWxlZCBsYXllcnMgb24gbWVtb3J5IHByZXNzdXJlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NzM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
K1tXZWJWaWV3IF9oYW5kbGVNZW1vcnlXYXJuaW5nXSk6IENsZWFyIGFsbCB1bnBhcmVudGVkIHRp
bGVzIHdoZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlLgorCiAyMDE0LTAxLTEwICBEYW5pZWwgQmF0
ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBVcHN0cmVhbSBXZWJDb3Jl
IGFuZCBUb29scyBtaXNjZWxsYW5lb3VzIGNoYW5nZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDE2MTY0MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMxLDYgKzIzMSw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
bWFydFJlcGxhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dFJ1bi5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V0FLV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZVRocmVhZE1lc3NhZ2UuaD4KQEAgLTEyNzYsNiArMTI3Nyw4IEBAICsg
KHZvaWQpX2hhbmRsZU1lbW9yeVdhcm5pbmcKICAgICBpZiAoIWRpZE9uZVRpbWVJbml0aWFsaXph
dGlvbikKICAgICAgICAgcmV0dXJuOwogCisgICAgdGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVy
KCkudHJpbVVucGFyZW50ZWRUaWxlc1RvVGFyZ2V0KDApOworCiAjaWYgRU5BQkxFKERJU0tfSU1B
R0VfQ0FDSEUpCiAgICAgewogICAgICAgICBXZWJLaXQ6Ok1lbW9yeU1lYXN1cmUgbWVhc3VyZXIo
Ik1lbW9yeSB3YXJuaW5nOiBmbHVzaGluZyBpbWFnZXMgdG8gZGlzay4iKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>