[lustre-devel] RFC: Spill device for Lustre OSD
Jinshan Xiong via lustre-devel <[email protected]> Sun, 2 Nov 2025 15:22:25 -0800
| Newsgroups | org.lustre.lists.lustre-devel |
|---|---|
| Message-ID | <CABoqRjtUuma_HLj7GK=2qUEWXV4XB11eEN6yj6svPtn-q+d4fw@mail.gmail.com> |
SGkgZm9sa3MsCgpJIGNhbWUgdXAgd2l0aCBhbiBpZGVhIHRvIGltcGxlbWVudCB0aWVyZWQgc3Rv cmFnZSBmb3IgTHVzdHJlIGluIGEgbmV3CndheS4gSSdtIHNoYXJpbmcgaXQgaGVyZSBpbiBvcmRl ciB0byBnZXQgc29tZSBmZWVkYmFjayBhbmQgZGVjaWRlIGlmCml0IGlzIHdvcnRoIHB1cnN1aW5n LiBUaGlzIGlzIHN0aWxsIGluIHRoZSBlYXJseSBzdGFnZSBzbyBpdCdzIGp1c3QgYQpyb3VnaCBp ZGVhLgoKVGhhbmtzLApKaW5zaGFuCgojIFNwaWxsaW5nIERldmljZSBQcm9wb3NhbCBmb3IgTHVz dHJlIE9TRAoKIyMgSW50cm9kdWN0aW9uCgpTcGlsbGluZyBkZXZpY2UgaXMgYSBwcml2YXRlIGJs b2NrIGRldmljZSB0byBhbiBPU0QgaW4gTHVzdHJlLiBJdAphbGxvd3MgYW4gT1NEIHRvIG1pZ3Jh dGUgaW5mcmVxdWVudGx5IGFjY2Vzc2VkIGRhdGEgb2JqZWN0cyB0byB0aGlzCmRldmljZS4gVGhl IGtleSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHBvcHVsYXIgdGllcmVkIHN0b3JhZ2UgaXMgdGhhdCBp dApvbmx5IGhhcyBhIGxvY2FsIHZpZXcgb2YgdGhlIG9iamVjdHMgaW4gYSBsb2NhbCBPU0QuIENv bnNlcXVlbnRseSwgaXQKc2hvdWxkIG1ha2UgcXVpY2sgYW5kIGFjY3VyYXRlIGRlY2lzaW9ucyBi YXNlZCBvbiB0aGUgcmVjZW50IGFjY2VzcwpwYXR0ZXJuLiBPbmx5IGRhdGEgb2JqZWN0cyBjYW4g YmUgc3BpbGxlZCBpbnRvIHRoZSBzcGlsbGluZyBkZXZpY2UsCndoaWxlIG1ldGFkYXRhIG9iamVj dHMsIHN1Y2ggYXMgT0kgbmFtZXNwYWNlIGFuZCBsYXN0IG9iamlkLCByZW1haW4gaW4KdGhlIE9T RCBwZXJtYW5lbnRseS4gVGhpcyBpbXBsaWVzIHRoYXQgdGhlIHNwaWxsaW5nIGRldmljZSBmb3Ig T1NEIGlzCm9ubHkgYXBwbGljYWJsZSB0byBPU1QgT1NEcy4gQnkgZGVzaWduLCB0aGUgc2l6ZSBv ZiBhbiBPU0Qgc2hvdWxkIGJlCnN1ZmZpY2llbnQgdG8gc3RvcmUgdGhlIGVudGlyZSBsb2NhbCB3 b3Jrc2V0LCBmb3IgaW5zdGFuY2UsIGFsbCB0aGUKZGF0YSBmb3IgYW4gQUkgdHJhaW5pbmcgam9i LiBBIHR5cGljYWwgY29uZmlndXJhdGlvbiB3b3VsZCBpbnZvbHZlIGEKMVRCIFNTRCBPU0Qgd2l0 aCAxMFRCIG9mIEhERCBhcyBhIHNwaWxsaW5nIGRldmljZS4KCkdlbmVyaWMgTHVzdHJlIHV0aWxp dGllcyB3b27igJl0IGJlIGFibGUgdG8gZGlyZWN0bHkgYWNjZXNzIHNwaWxsaW5nCmRldmljZXMu IEZvciBleGFtcGxlLCAqKmxmcyBkZioqIHdpbGwgb25seSBkaXNwbGF5IHRoZSBjYXBhY2l0eSBv ZiB0aGUKT1NEIGRldmljZSwgd2hpbGUgdGhlIGNhcGFjaXR5IG9mIHRoZSBzcGlsbGluZyBkZXZp Y2UgY2FuIGJlIGFjY2Vzc2VkCnVzaW5nIHNwZWNpZmljIG9wdGlvbnMuCgpPU0RzIHdpbGwgYWNj ZXNzIHNwaWxsaW5nIGRldmljZXMgdGhyb3VnaCBWRlMgaW50ZXJmYWNlcyBpbiB0aGUga2VybmVs CnNwYWNlLiBUaGVyZWZvcmUsIHRoZSBzcGlsbGluZyBkZXZpY2UgbXVzdCBiZSBtb3VudGFibGUg aW50byB0aGUKa2VybmVsIG5hbWVzcGFjZS4gSW5pdGlhbGx5LCBvbmx5IEhERCBpcyBzdXBwb3J0 ZWQsIGFuZCB0aGUKaW1wbGVtZW50YXRpb24gY2FuIGJlIGV4dGVuZGVkIHRvIFMzIGFuZCBHQ1Mg dXNpbmcgczNmcyBhbmQgZ2NzZnVzZQpyZXNwZWN0aXZlbHkgaW4gdGhlIGZ1dHVyZS4KCiMjIEFy Y2hpdGVjdHVyZQoKV2hlbiBhbiBPU1Qgb2JqZWN0IGlzIHNwaWxsZWQsIGl0IGxlYXZlcyBhIHpl cm8tbGVuZ3RoZWQgc3R1YiBvYmplY3QKd2l0aCBhIHNwZWNpYWwgRUEsIGNhbGxlZCBzcGlsbC1l YSwgaW4gdGhlIE9TRC4gVGhlIHNwaWxsLWVhIGlzIHVzZWQKdG8gdHJhY2sgdGhlIHN0YXR1cyBv ZiB0aGUgb2JqZWN0IGluIHRoZSBPU0QgYW5kIGFsc28gc3RvcmUgdGhlCm1ldGFkYXRhIG9mIHRo ZSBzcGlsbGVkIG9iamVjdCBpbiB0aGUgc3BpbGxpbmcgZGV2aWNlLgoKU3RhdHVzIG9mIHRoZSBv YmplY3Q6Ci0gKipNSUdSQVRJTkcqKjogVGhlIG9iamVjdCBkYXRhIGlzIGJlaW5nIGNvcGllZCB0 byB0aGUgc3BpbGxlZCBvYmplY3QuCi0gKipNSUdSQVRFRCoqOiBUaGUgb2JqZWN0IGRhdGEgZXhp c3RzIGluIGJvdGggdGhlIE9TRCBhbmQgdGhlCnNwaWxsaW5nIGRldmljZSwgYW5kIHRoZSBjb250 ZW50cyBhcmUgc3luY2hyb25pemVkLgotICoqUkVMRUFTRUQqKjogVGhlIG9iamVjdCBkYXRhIGlz IG9ubHkgaW4gdGhlIHNwaWxsaW5nIGRldmljZSwgYW5kIGl0CmxlYXZlcyBhIHN0dWIgb2JqZWN0 IGluIHRoZSBPU0QuCi0gKipESVJUWSoqOiBUaGUgb2JqZWN0IGlzIHJlbGVhc2VkLCBidXQgaXQg aGFzIGJlZW4gd3JpdHRlbiB0bwphZnRlcndhcmQsIHNvIHRoZSBPU0QgcmV0YWlucyBzb21lIHVw LXRvLWRhdGUgZGF0YS4KCioqTWlncmF0aW5nKioKCk1pZ3JhdGlvbiBpbnZvbHZlcyBjb3B5aW5n IGRhdGEgaW50byB0aGUgc3BpbGxpbmcgZGV2aWNlLiBBIGRhZW1vbgpwcm9jZXNzIGluIHRoZSBP U0QgY29udGludW91c2x5IHNjYW5zIGNhbmRpZGF0ZXMgZm9yIG1pZ3JhdGlvbi4gVGhlCnR5cGlj YWwgcG9saWN5IGZvciBtaWdyYXRpb24gaXMgYmFzZWQgb24gdGhlIGxhc3QgYWNjZXNzIHRpbWUg YW5kIHNpemUKb2YgdGhlIG9iamVjdHMuIEZvciBpbnN0YW5jZSwgaWYgYW4gb2JqZWN0IGhhc27i gJl0IGJlZW4gYWNjZXNzZWQgaW4gdGhlCnBhc3QgZGF5IGFuZCBpdHMgc2l6ZSBleGNlZWRzIDEw TUIsIGl0IHdpbGwgY3JlYXRlIGFuIG9iamVjdCBpbiB0aGUKc3BpbGxpbmcgZGV2aWNlIGFuZCBj b3B5IGl0cyBjb250ZW50cyBvdmVyLgoKVGhlcmXigJlzIG5vIG9uLWRlbWFuZCBtaWdyYXRpb24g ZmVhdHVyZS4gSWYgdGhlcmXigJlzIG5vIGF2YWlsYWJsZSBzcGFjZQp3aGlsZSBhIGxhcmdlIGNo dW5rIG9mIGRhdGEgaXMgYmVpbmcgd3JpdHRlbiwgdGhlIHN5c3RlbSB3aWxsIHJldHVybgpFTk9T UEMgdG8gdGhlIGNsaWVudC4gVGhpcyBzaW1wbGlmaWVzIHRoZSBncmFudGluZyBtZWNoYW5pc20g b24gdGhlCk9GRCBzaWduaWZpY2FudGx5LiBBbm90aGVyIHJlYXNvbiBmb3IgdGhpcyBhcHByb2Fj aCBpcyB0aGF0IHdyaXRpbmcKcGVyZm9ybWFuY2UgaXMgbW9yZSBwcmVkaWN0YWJsZS4gT3RoZXJ3 aXNlLCB0aGUgc3lzdGVtIG1pZ2h0IGhhdmUgdG8Kd2FpdCBmb3IgYW4gb2JqZWN0IHRvIGJlIG1p Z3JhdGVkIG9uIGRlbWFuZCwgbGVhZGluZyB0byBtdWNoIGhpZ2hlcgpsYXRlbmN5LgoKKipSZWxl YXNpbmcqKgoKT25jZSB0aGUgZGF0YSBpcyBtaWdyYXRlZCwgdGhlIGRhZW1vbiBjYW4gcmVsZWFz ZSB0aGUgb2JqZWN0IGJ5CnRydW5jYXRpbmcgaXQgaW4gdGhlIE9TRCBhbmQgc2V0dGluZyB0aGUg c3BpbGwtZWEgc3RhdHVzIHRvCioqUkVMRUFTRUQqKiwgYXRvbWljYWxseS4KClR5cGljYWxseSwg YW4gb2JqZWN0IGlzIHJlbGVhc2VkIG9ubHkgd2hlbiB0aGUgT1NE4oCZcyBhdmFpbGFibGUgc3Bh Y2UKYmVjb21lcyBsaW1pdGVkLiBUaGlzIGFsbG93cyB1cyB0byBrZWVwIGFzIG11Y2ggZGF0YSBh cyBwb3NzaWJsZSBpbgp0aGUgT1NELgoKKipSZXN0b3JpbmcqKgoKUmVzdG9yaW5nIGludm9sdmVz IGNvcHlpbmcgZGF0YSBiYWNrIHRvIHRoZSBPU0QgZGV2aWNlLiBJdOKAmXMgdHJpZ2dlcmVkCmJ5 IHJlYWRpbmcgZnJvbSBvciB3cml0aW5nIHRvIGEgcmVsZWFzZWQgb2JqZWN0IGFuZCBpcyBtYW5h Z2VkIGJ5IHRoZQpkYWVtb24sIHNvIGl0IGRvZXNu4oCZdCBpbnRlcmZlcmUgd2l0aCB0aGUgY3Jp dGljYWwgY29kZSBwYXRoIGhhbmRsaW5nCnJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMgZnJvbSB0 aGUgT0ZELgoKV2hlbiByZXN0b3JpbmcsIHRoZSBvYmplY3QgZGF0YSBpcyBmaXJzdCBjb3BpZWQg dG8gYSB0ZW1wb3JhcnkgZmlsZQooYE9fVE1QRklMRWApLiBBZnRlcndhcmQsIGl04oCZcyByZW5h bWVkIHRvIHN3aXRjaCB0aGUgaW5vZGUgaW4gT0kgYW5kCnJlc2V0IHRoZSBzcGlsbC1lYSBzdGF0 dXMgYXRvbWljYWxseS4KCkFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgc3BpbGxpbmcgZGV2aWNl IGlzIG9wZXJhdGVkIHdpdGggc3RhbmRhcmQKVkZTIGludGVyZmFjZXMuIFRoZXJlZm9yZSwgdGhl IE9TRCBjYW4gZGlyZWN0bHkgcmVhZCBhbmQgd3JpdGUgdGhlCm9iamVjdCBpbiB0aGUgc3BpbGxp bmcgZGV2aWNlLiBXZSB0ZW5kIHRvIHJlYWQgYSByZWxlYXNlZCBmaWxlCmRpcmVjdGx5IGluIHRo ZSBmaXJzdCBmZXcgcmVhZHMuIFdyaXRpbmcgaXMgaGFuZGxlZCBzZXBhcmF0ZWx5IGFuZAp3aWxs IGJlIGNvdmVyZWQgbGF0ZXIuCgpNYWludGFpbmluZyBhIHN5bmNocm9uaXplZCBzdGF0ZSBiZXR3 ZWVuIHR3byBzeXN0ZW1zIGlzIGEgY2hhbGxlbmdlLgpXZeKAmWxsIGxldmVyYWdlIGxsb2cgZXh0 ZW5zaXZlbHkgdG8gYWNoaWV2ZSB0aGlzLgoKIyMgT3BlcmF0aW9ucyBIYW5kbGluZwoKKip3cml0 ZSoqCgpJZiBhbiBvYmplY3QgbGFja3MgYSBzcGlsbCBFQSwgaXQgbWVhbnMgdGhlcmXigJlzIG5v IHNwaWxsZWQgb2JqZWN0IGluCnRoZSBzcGlsbGluZyBkZXZpY2UuIEluIHN1Y2ggY2FzZXMsIHRo ZSB3cml0ZSBvcGVyYXRpb24gcHJvY2VlZHMKbm9ybWFsbHkuCgpJZiBhbiBvYmplY3QgaXMgaW4g dGhlICoqTUlHUkFUSU5HKiogb3IgKipNSUdSQVRFRCoqIHN0YXRlLCBpdCB3cml0ZXMKZGlyZWN0 bHkgdG8gdGhlIG9iamVjdCBhbmQgZGVsZXRlcyB0aGUgc3BpbGwgRUEgYnkgd3JpdGluZyBsbG9n LgoKSWYgYW4gb2JqZWN0IGlzIGluIHRoZSAqKlJFTEVBU0VEKiogc3RhdGUsIGl0IHdyaXRlcyB0 aGUgZGF0YSB0byB0aGUKb2JqZWN0IGluIGxvZy1zdHJ1Y3R1cmVkIGZvcm1hdCBhbmQgc2V0cyBp dHMgc3RhdHVzIHRvICoqRElSVFkqKi4KCklmIGFuIG9iamVjdCBpcyBpbiB0aGUgKipESVJUWSoq IHN0YXRlLCBpdCBhcHBlbmRzIGEgbmV3IGxvZyBlbnRyeSB0bwp0aGUgb2JqZWN0LiBJZiB0aGUg bnVtYmVyIG9mIGxvZ3MgZXhjZWVkcyBhIHByZWRlZmluZWQgbGltaXQsIGl0CnRyaWdnZXJzIGEg cmVzdG9yYXRpb24gcHJvY2Vzcy4KCioqcmVhZCoqCgpJZiBhbiBvYmplY3QgbGFja3MgYSBzcGls bCBFQSwgaXQgbWVhbnMgdGhlcmXigJlzIG5vIHNwaWxsZWQgb2JqZWN0IGluCnRoZSBzcGlsbGlu ZyBkZXZpY2UuIEluIHN1Y2ggY2FzZXMsIHRoZSByZWFkIG9wZXJhdGlvbiBwcm9jZWVkcwpub3Jt YWxseS4KCklmIGFuIG9iamVjdCBpcyBpbiB0aGUgKipNSUdSQVRJTkcqKiBvciAqKk1JR1JBVEVE KiosIGl04oCZcyByZWFkIGRpcmVjdGx5LgoKSWYgYW4gb2JqZWN0IGlzIGluIHRoZSAqKkRJUlRZ Kiogc3RhdGUsIGl0IGNoZWNrcyBpZiB0aGUgcmVhZCByYW5nZQpvdmVybGFwcyB3aXRoIHRoZSBl bnRyaWVzIGluIHRoZSBsb2cuCgpJZiBhbiBvYmplY3QgaXMgaW4gdGhlICoqUkVMRUFTRUQqKiBz dGF0ZSwgaXQgcmVhZHMgdGhlIGRhdGEgZGlyZWN0bHkKZnJvbSB0aGUgc3BpbGxlZCBvYmplY3Qu IElmIHRoZSBudW1iZXIgb2YgcmVhZHMgdG8gdGhpcyBvYmplY3QgZXhjZWVkcwphIHByZWRlZmlu ZWQgbGltaXQsIGl0IGluaXRpYXRlcyBhIHJlc3RvcmF0aW9uIHByb2Nlc3MgYW5kIHNldHMgdGhl Cm9iamVjdOKAmXMgc3RhdHVzIHRvICoqTUlHUkFURUQqKi4KCioqdHJ1bmNhdGUgYW5kIHVubGlu ayoqCgpJZiBhbiBvYmplY3QgaGFzIGEgc3BpbGwgRUEgYW5kIGlzIGJlaW5nIHRydW5jYXRlZCBv ciBkZWxldGVkLCBpdAp3cml0ZXMgYW4gbGxvZyBlbnRyeSB0byBlbnN1cmUgdGhlIHNwaWxsZWQg b2JqZWN0IGlzIGV2ZW50dWFsbHkKZGVsZXRlZC4KCioqbWlncmF0ZSoqCgpCZWZvcmUgaW5pdGlh dGluZyB0aGUgbWlncmF0aW9uIG9mIGFuIG9iamVjdCwgaXTigJlzIGNydWNpYWwgdG8gbWFrZSB0 aGUKc3BpbGxlZCBvYmplY3QgYSBrbm93biBzdGF0ZSBpbiBvcmRlciB0byBwcmV2ZW50IHJlbW90 ZSBvYmplY3QKbGVha2FnZS4gVGhlcmVmb3JlLCBpdOKAmXMgZXNzZW50aWFsIHRvIHNldCB0aGUg c3BpbGwgRUEgZmlyc3QgYW5kIHRoZW4KY3JlYXRlIHRoZSBzcGlsbGVkIG9iamVjdCBhZnRlciB0 aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLiBUaGUKY2hhbGxlbmdpbmcgYXNwZWN0IGlzIHRo YXQgaXQncyBub3QgcG9zc2libGUgdG8gaGF2ZSBhbnkgaW5mb3JtYXRpb24KYWJvdXQgdGhlIHNw aWxsZWQgb2JqZWN0IGJlZm9yZSBpdHMgY3JlYXRpb24uCgpXZSBkZWNpZGVkIHRvIHN0b3JlIHRo ZSBvYmplY3QgaW4gYSBrbm93biBwYXRoLiBGb3IgaW5zdGFuY2UsIG9iamVjdApwYXRocyBsaWtl IGA8ZnNuYW1lPi9PU1Q8aW5kZXg+LzxvaWQ6MDoyPi88b2lkOjI6PmAgc2VlbSByZWFzb25hYmxl LgpUaGlzIGFsc28gbWVhbnMgdGhhdCB0aGUgT1NEIG11c3Qgb3duIHRoZSBzcGlsbGluZyBkZXZp Y2UgZW50aXJlbHkuCkhhdmluZyBmb3JlaWduIG9iamVjdHMgd291bGQgY2F1c2UgY29uZnVzaW9u LgoKKipyZXN0b3JlKioKClJlc3RvcmF0aW9uIHdpbGwgdXNlIGEgdGVtcG9yYXJ5IGZpbGUsIHdo aWNoIGlzIGVzc2VudGlhbGx5IGEgZmlsZQpjcmVhdGVkIHVuZGVyIGFuIG9ycGhhbiBkaXJlY3Rv cnkuIE9uY2UgdGhlIGNvcHkgZnJvbSBzcGlsbGVkIG9iamVjdAppcyBjb21wbGV0ZSwgaXQgd2ls bCBhbHNvIGRlYWwgdGhlIHdyaXRlIGxvZyBlbnRyaWVzIGluIHRoZSBvcmlnaW5hbApvYmplY3Qu IElmIGV2ZXJ5dGhpbmcgaXMgZG9uZSwgaXQgd2lsbCByZW5hbWUgdGhlIHRlbXBvcmFyeSBmaWxl IGFuZAp0aGUgY29ycmVzcG9uZGluZyBPSSBmaWxlLCBhbmQgYXBwZW5kIGEgbG9nIGVudHJ5IHRv IGRlbGV0ZSB0aGUKc3BpbGxlZCBvYmplY3QsIGFsbCBpbiBhIGxvY2FsIHRyYW5zYWN0aW9uLgoK IyMgSW1wbGVtZW50YXRpb24KCk9TRCBBUElzIGFyZSB3ZWxsLW1haW50YWluZWQgYW5kIHByb3Zp ZGUgZGVkaWNhdGVkIEFQSXMgZm9yIG9iamVjdAptYW5pcHVsYXRpb24gYW5kIGJvZHkgb3BlcmF0 aW9ucyB0byBpbnRlcmFjdCB3aXRoIG9iamVjdCBjb250ZW50LgpTcGlsbCBkZXZpY2UgY29uZmln dXJhdGlvbiAgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gbG9nIHNvCnRoYXQg dGhlIE9TRCB3aWxsIGtub3cgaWYgaXQgaGFzIHNwaWxsaW5nIGRldmljZSBpbiB0aGUgZGV2aWNl CmluaXRpYWxpemF0aW9uLgoKSWYgYSBzcGlsbCBkZXZpY2UgZXhpc3RzIGZvciBhbiBPU0QsIHRo ZSBvYmplY3QgYW5kIGJvZHkgb3BlcmF0aW9ucwp3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gYSBuZXcg c2V0IG9mIE9TRCBBUElzLiBUaGVzZSBBUElzIGVzc2VudGlhbGx5CmNoZWNrIGZvciB0aGUgZXhp c3RlbmNlIG9mIGEgc3BpbGwgRUEgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCBhbnkKb3BlcmF0aW9u cy4gSWYgbG9jYWwgb2JqZWN0cyBhcmUgdXNlZCwgdGhlIG9yaWdpbmFsIE9TRCBBUElzIHdpbGwK c3RpbGwgYmUgaW52b2tlZC4KCkEgbmV3IHNldCBvZiBMdXN0cmUgdXRpbGl0aWVzIHdpbGwgYmUg ZGV2ZWxvcGVkIHRvIGRpc3BsYXkgaW5mb3JtYXRpb24KYWJvdXQgc3BpbGwgZGV2aWNlcy4KCiMj IENvbmNsdXNpb24KClRoaXMgc29sdXRpb24gZ2l2ZXMgYSBwb3NzaWJsZSBzb2x1dGlvbiB0cnlp bmcgdG8gYWRkcmVzcyB0aGUKcGFpbnBvaW50cyBvZiBwcmV2YWxlbnQgdGllcmVkIHN0b3JhZ2Ug dXNpbmcgbWlycm9yaW5nLCB3aGVyZSBhCmZ1bGwtZmxhdm91cmVkIHBvbGljeSBlbmdpbmUgaGFz IHRvIHJ1biBvbiBkZWRpY2F0ZWQgY2xpZW50cywgYW5kCmRlbGl2ZXIgYmV0dGVyIHBlcmZvcm1h bmNlIHRoYW4gYmxvY2stbGV2ZWwgY2FjaGUgd2l0aCBkbWNhY2hlLCB3aGVyZQpyZWNvdmVyeSB0 aW1lIGlzIGxlbmd0aHkgaWYgdGhlIGNhY2hlIHNpemUgaXMgaHVnZS4KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbHVzdHJlLWRldmVsIG1haWxpbmcgbGlz dApsdXN0cmUtZGV2ZWxAbGlzdHMubHVzdHJlLm9yZwpodHRwOi8vbGlzdHMubHVzdHJlLm9yZy9s aXN0aW5mby5jZ2kvbHVzdHJlLWRldmVsLWx1c3RyZS5vcmcK