← Back to スタジオ真榊

Pixiv Fanbox

商用利用可能になった「生成塗りつぶし」AIイラストにどう役立つ?

Published 06/06/2023, 03:25:01 AM · Edited 02/01/2024, 10:23:14 AM

商用利用可能になった「生成塗りつぶし」AIイラストにどう役立つ?

【更新情報:この記事は2023年6月6日に投稿されたものを、Adobe Fireflyの商用利用開始に伴い、2023年9月14日にアップデートしたものです】



こんばんは、スタジオ真榊です。今夜はadobeの「ジェネレーティブ塗りつぶし」(生成塗りつぶし、Generative fill)についての特集です。2023年9月13日、ついに商用利用可能になったadobeの生成AI「firefly」。Photoshopに統合された生成機能は、AIイラストづくりにおいてどう役立てられるのか?ということについて、いろいろな角度から検証してみました。


生成塗りつぶしとは

「生成塗りつぶし」は、adobeが既に先行リリースされていた画像生成AI「Firefly」をPhotoshop上の機能として実装したもので、選択範囲をAI生成されたコンテンツで文字通り「塗りつぶす」ツールです。Photoshopにはこれを応用した機能として、キャンバス外を塗り広げる「生成拡張」も搭載されました。Photoshopにはこのほかに、「削除ツール」や「背景を削除」といったAI機能が既に備わっていますが、今回の記事ではAIイラストに活かせる以下の5点について検証します。


①生成塗りつぶし (new!)

・キャンバス上の選択した部分に、プロンプトで指示したものを生成する。(例:丸く範囲選択して「りんご」と打ち込むとリンゴが出現)

・プロンプトを空欄で生成すると、周囲に馴染むものを自動で生成してくれる。

②生成拡張 (new!)

従来の「切り抜きツール」でキャンバスの大きさを拡大した後、①生成塗りつぶしをすることで、存在しない部分をAIが自律的判断で埋める。いわゆるアウトペインティング。

③削除ツール ※既存ツール

ブラシで消したいものを丸く囲むか、ブラシでなぞった部分のオブジェクトを消してなじませる。ほぼ「LamaCleaner」のような機能(例:手の上のリンゴを囲んで背景になじむよう消去する)

④背景を削除 ※既存ツール

ボタン一発で前景と背景を見分け、背景部分だけを削除してくれる機能。削除といってもレイヤー構成上でマスクされるだけなので、元に戻すのも簡単。

⑤被写体を選択 ※既存ツール

前景(主にキャラクター)の部分を自動で背景と見分けて、ふちどりを一発で選択してくれる機能


①と②が今回追加されたものです。SDwebUIユーザーに分かりやすく言えば、「マスク部分にプロンプト指示してinpaint」「inpaint onlyで存在しない続きを書いてもらう」「LamaCleanerで消しゴムマジック」などの作業がワンストップで、高品質にできるツールになったというのが近い感覚。AI生成した部分は基本的に別レイヤーになるため、画像編集がスムーズにできるのも便利です。


無料でも体験可、2通りの利用法

2023年9月13日、Fireflyとそれを使った生成機能は商用利用が可能になり、Photoshopなどの製品にツールとして搭載されました。Photoshopでは先ほど説明したとおり「生成塗りつぶし」「生成拡張」機能が搭載され、Illustratorでは「生成再配色」機能が利用できるようになっています。Fireflyにおいては、契約者のプランごとに「生成クレジット」が新たに設定され、月ごとの生成量に上限が定められます。無料プランでも生成機能を体験することができますし、ウェブ上でもデモを体験することが可能です。


これまで生成塗りつぶしはPhotoshopβ版において「ジェネレーティブ塗りつぶし」という名前で利用することができましたが、9月13日以降は晴れて正式版で利用できることになったわけですね。以下、デスクトップ版のPhotoshopをインストールするまでの手順を簡単に解説します。


(1)有償契約してPhotothopをインストールする方法

Adobe Creative Cloudには「コンプリートプラン」(月額税込6,480 円)や「フォトプラン」(月額税込1,078 円)などさまざまなプランがありますので、それぞれの環境に合わせてご検討ください。


賢木はPhotoshop、Firefly、Lightroomが使えてコスパのいい「フォトプラン」を月々払いしています。


まずはAdobe Creative Cloudのアプリケーションをインストールし、起動。有償会員としてログインしている状態で、Adobe Creative Cloudアプリのメニューから「写真」をクリックすると、インストールできるアプリが表示されるので、「デスクトップアプリ」の中からPhotoshopを選んでインストールすればOKです。


(2)ウェブサイト上で体験する方法

Adbe Fireflyの公式サイトにアクセスし、adobeアカウントにログインします。まだadobeアカウントがない方は無料サインアップしましょう)。「生成塗りつぶし」の欄にある「生成」ボタンをクリック。


「画像をアップロード」から任意の画像をアップロードすると、ブラウザ上で生成塗りつぶしを体験することができます。キャンバスの読み込みや画像の出力も可能ですが、レイヤー機能やほかのツールと組み合わせて本格的に画像編集することはできません。初めて体験する場合はこちらで十分かと思います。ちなみに、Photoshop版とはインターフェイスがやや異なります。


【ウェブサイト版の基本的な使い方】

画面左側の「挿入」でプロンプトを使ったt2i機能が、「削除」で消しゴムマジック機能が使えます。ブラシで塗った部分が透過状態になるので、その状態で「生成」を押すと3種類の生成候補が出力されます。「+さらに生成」を押すと別の候補を出力することが可能。日本語でのプロンプト指示も通用します。


こちらの画像の料理部分を塗りつぶして「おいしい料理」と打ち込みます。


生成ボタンを押すと、このような画像が3種類提案されるといった感じ。中には低劣ものもありますが、好みのものができるまで再生成を繰り返すことができます。


Photoshop正式版で生成機能を使ってみよう

さて、これまでもPhotoshopβ版でいろいろと実験をしていましたが、正式版のPhotoshopを使うとAIイラストにどのような加工ができるか、さっそくいろいろと試してみました。


①生成塗りつぶし

まずは基本の「生成塗りつぶし」機能から。選択ツールやなげなわツールなどで特定部分を選択すると、下の画像のようなコンテクストバーが表示されます。プロンプトを打ち込む空欄があるので、生成したい内容を入力しましょう。プロンプトは3~8語程度がよく、できるだけ自然言語風に書いたほうが良い結果が出るようです。(high qualityなどのいわゆるクォリティタグは不要です)



生成ボタンを押すと処理が開始されます。


私の環境では10秒前後で候補が表示されました。候補は3パターン出力され、「< >」ボタンで切り替えられます。もう一度「生成」をクリックすることで、さらに3パターン追加してもらうことが可能。生成される画像はややフォトリアル寄りなタッチのものが多いのですが、題材となったイラスト全体のタッチをきちんと読み取って、できるだけ調和するものを生成してくれます。


②削除ツール

次に、LamaCleanerでAIイラストにおける利便性が痛感された「消しゴムマジック」機能を試してみましょう。Photoshopでは、こちらの「削除ツール」で使うことができます。(このツールは今回搭載されたFireflyによる新機能ではなく、以前から利用することができました)

使い方はLamaCleanerと同様で、ブラシでなぞると一瞬読み込みが生じて、直後に消える感覚です。対象オブジェクトが大きいときは、外周を雑に丸く囲むだけで消せます。


この赤い謎のバーを丸で囲むと、クリックボタンを離した途端に読み込みが始まり…


このようにパッと消えます。


コツは、消したいものの輪郭に沿って正確に選択するのではなく、周囲の領域も含めるかたちでおおざっぱに選択すること。そうすることで境目がより自然な仕上がりになります。


ちなみに、通常の生成塗りつぶしでも同様の結果が得られます。このように消したいものを範囲選択して…


空欄のまま「生成塗りつぶし」すると…

ぱっと消えます。(こちらの写真はベータ版のもののため、生成塗りつぶしではなくジェネレーティブ塗りつぶし表記になっています)


LamaCleanerでは上手に消せなかった広範囲の被写体も、かなり上手に消すことができます。

ここまで広範囲にわたるオブジェクトを消そうとすると、LamaCleanerではぼんやりした結果になってしまいますが、生成塗りつぶしならかなり上手に「塗りつぶし」てくれる感覚があります。細部の破綻が出てしまった場合はそこをもう一度選択して、今度はプロンプト指示することでうまく修正することが可能。非常に使い勝手が良いです。



③生成拡張

SDwebUIでもおなじみの、キャンバス上に存在しない「続きの絵」を書いてもらえる機能です。プロンプト指示なしで生成すると、現状のキャンバスを参照してAIがふさわしいと考えるものが出現しますし、プロンプト指示をすると生成者が望んだもので空白を埋めてくれます。


こちらのイラストをアウトペイントしてみましょう。従来の「切り抜きツール」を使ってキャンバスに余白を作ります。キャラクターの頭も見切れているので、上方向にも広げます。コンテクストバーのプロンプト欄は空欄のまま、「生成」ボタンを押しましょう。


こちらが生成結果。同じタッチで「続き」を描いてもらえました。何か別の言葉を入れることで、全く異なる要素を描いてもらうこともできます。

ただ、アニメタッチのイラストでは、なかなかうまくいかないことも多いです。


例えば、こちらのイラストをアウトペイントしますと・・・


一見「おおっ」と思うのですが、よく見ると手足はめちゃくちゃです。自然系のものは比較的得意ですが、イラスト調の人体はほとんどうまくできません。


④背景の削除

これは以前から使えた機能。どこも選択しない状態で、コンテクストバーの「背景を削除」をおもむろに押すと・・・


読み込み後、このように背景が消えます。ただ、ご覧の通り完璧ではなく、よく見ると髪や耳の部分が抜けてしまっています。本当にデリートされたわけではなくマスクされて見えなくなっているだけなので、欠けた部分は手作業でもどしてあげる必要があります。

イラストのキャラ部分の切り抜きはSDwebUIでも拡張機能「Katanuki」や、「extra(その他)」タブの「背景を削除」などで使えますので、どれを使うかは場面次第かなと思います。


被写体を選択

こちらもごくシンプルで、ボタン一発でこのように前景部分を選択できる機能。選択範囲はさきほど「背景を削除」で選択される範囲と一致するようです。同様に耳の一部が選択抜けになっているのが分かると思います。



得意なこと、苦手なこと

いろいろと触ってみて感じた「生成塗りつぶし」の長所、短所について挙げてみます。


◆長所

「生成塗りつぶし」「削除ツール」「生成拡張」の3機能は、SDwebUIやLamaCleanerでも代替可能ではありますが、Photoshopではワンストップで利用できる上、生成されたものが別レイヤーになるため、そこからの画像編集が格段にやりやすくなっています。UIも洗練されており、画像サイズやdpiが大きいことが原因で破綻することもない。一度に複数候補を示してくれるのも便利で、非常によくまとまったツールと感じました。


プロンプトを空欄で生成すると、画像全体からみてふさわしいものを推論してくれる仕組みも素晴らしい。消しゴムマジックとしてもアウトペイントとしても使えるのは大変便利ですし、直感的にどんな結果になるか想像できるのも良いですね。


特に優れていると感じたのは、「①自然や無生物の描写」「②周囲に馴染ませる調和力」「③存在しない部分を想像する推察力」ーの3つ。アウトペイントをさせると分かる通り、キャラクター部分以外なら元画像の雰囲気やタッチをよく読み取って「続き」を描いてくれることに感動しました。


◆短所

一方、AIイラストに利用するとなると、マイナスと言える要素もいくつも見当たります。


①キャラクターを描けない...

一番のウィークポイントは、やはりイラスト調の人物、つまりキャラクターが全然描けないこと。Fireflyはフォトリアルな教師データを多く学習しているためか、AIイラストの画風と調和しないコンテンツが生成されがちで、人体の部位を指示してもたいていフォトリアル調か、油絵のようなべっとりした画風になってしまいます。


例えば、さきほど「被写体を選択」した部分に「生成塗りつぶし」を掛けると、このように大変残念な結果になってしまいます。Fireflyくんはまだ日本のアニメ調キャラは描けません。


②肌色多めだと規制が発動しがち・・・

また、成人向け表現をはじめ、児童・事件・トラブル・戦争・犯罪などにちょっとでも関連しそうな指示は、adobeのガイドラインによって弾かれがち。特に問題のなさそうな表現でも引っかかるので、意図した表現ができない場面がけっこう頻繁に生じます。


こちらの画像のように、女の子のイラストの破綻を消そうとしただけで弾かれたこともあり、思ったより使いにくく感じるかもしれません。

(※恐らくスカートの丈が際どかったのと、被写体の女の子の年齢が「児童」と自動認識されたことが原因ではないかと思われます)


AIイラストでどう使える?

こうした長所・短所を踏まえて、生成塗りつぶし機能をAIイラスト制作に役立てるとなると、具体的にどんなことができるでしょうか。


・二つのイラストをつなぎ合わせる

例えば、別々のイラストをつなぎあわせることはできそうです。AIイラストはとかく一つのキャンバス上で複数のキャラクターを書き分けるのが苦手ですが、別々に生成したキャラクターイラストをキャンバス上で並べ、余白を「生成塗りつぶし」することで、調和感のあるイラストを生成することができます。

例えばこのように別々のイラストを並べます。多少食い込むように選択範囲を設定して空欄で「生成」すると、

同じ空間にいるように合成してもらうことができます。おかしなところはあとから削除ツールで消しましょう。特にLoRAを使った別々のキャラクターを一つのAIイラストとして生成するのは拡張機能を使いこなさないとなかなかできないのですが、こうした荒業で容易にクリアすることができます。上の画像では空中に木々が生じてしまっていますが、これも削除ツールで消すことが出来ます。


・見切れたキャラを補完する

キャラクターの頭上や足元が見切れてしまうのがAIイラストあるある。せっかく良い感じのイラストにできたのに・・・というときに、「アウトペイント」で続きを補完してもらうことができます。

生成塗りつぶしで余白を大胆に広げていくときは、気に入った部分以外を範囲しては空欄生成、また選択しては空欄生成、と繰り返すことで、より精度を高めていくことができます。


・LamaCleanerの代わりに使う

小さな破綻部分を削除することはLamaCleanerでも容易にできましたが、大きな破綻を消そうとすると「消した後」のことをAIがうまく想像できず、ぼんやりしてしまう欠点がありました。生成塗りつぶしはこうした部分を上手に処理することができるのが強みです。


・着せ替えに使う

キャラクターの顔面は崩壊するので差し替えられませんが、無生物である服装の「着せ替え」を行うことならできるようです。キャラクターの服装部分を範囲選択して、プロンプト「red dress」で生成すると…


このように着替えさせることができました。ただ、タッチがフォトリアルなFirefly調になってしまうのがやはりネック。あとからi2iするなどしてアップスケールすれば問題ありませんが、それなら適当に赤く「雑塗り」してi2iしても似たような結果が得られそうです。


また、あおりや俯瞰構図だと体の大きさを合わせられなかったり、まだまだなところもあるようです。これは首から下の衣装を変えようとして失敗したケース。

パースがきいた構図だったため、自然な体のサイズをうまく想像できなかったようです。このように、Fireflyの教師データを想像して、できることとできないことをきちんとユーザーの方で見分けてあげる必要があります。


前景と背景を切り分ける

「被写体を選択」と「背景を削除」の二つを使いこなして、AIイラストの前景と背景を切り分ける方法があります。


このように被写体を選択して、右クリックメニューの「選択とマスク」から選択範囲を調整します。


上手に選択できたら切り抜き。Shift+Ctrl+vで「同じ場所にペースト」します。これで、「キャラが切り抜かれた背景レイヤー」と「キャラのみのレイヤー」ができました。


キャラの輪郭を選択した後、選択範囲を拡張します。背景レイヤーを選んだ状態で「生成塗りつぶし」。空欄です。


はい、このように切り抜かれていた部分が生成で補完され、きれいな背景のみレイヤーができました。


切り抜かれたキャラ部分より少し広めに選択しておいたのは、下図のようにキャラの輪郭が残らないようにするためです。生成塗りつぶしは少し広めに選択して掛けるのが基本になります。


さて、非表示にしておいたキャラレイヤーを復帰させましょう。これで、「キャラのみレイヤー」と「切り抜きなしの背景レイヤー」ができましたので、こんなふうにキャラの位置を移動させることができたり…


前景と背景で別々に、自由に効果を掛けたりすることができるようになりますね。


私の趣味ではありませんが、適当にイルカや海鳥を生成することもできます笑


AIイラストの難しい部分は、キャンバス全体が同じ詳細度で描かれるため、視線誘導がうまくできずに没個性なイラストになりがちなところ。このようにAIイラストを背景と前景に切り分けることで、背景をぼかしたり、色彩を落としたり、仕上げグラデーションを掛けたり、トーン化したり、別の背景に差し替えたりと、さまざまな加工が容易になります。もちろん光と影が不自然にならないよう、ある程度のテクニックは必要ですが、「意図のあるイラストにする」ためには非常に有用かと思います。


破綻を消して意図のあるイラストにする


こちらの2枚のイラストをご覧ください。まず【左】のイラストは、「リンゴと少女」をテーマに生成してみたものの、部分部分に破綻や構造のよくわからないものが多く映り込んでいて、混乱するイラスト。

【右】は、削除ツールで余計なものを削除したり、かごに入ったリンゴやキッチンナイフを「生成塗りつぶし」で生成したり、背景を選択して星空に入れ替えたり、ベランダにいると分かるようにフェンスを作ったり、手やスカートの細部を修正したりしたものです。無生物の生成なら、SDを一切使わずここまでできるのはなかなかすごいですね!


雑念を呼びそうな破綻を排除し、ちょっとした小物を入れることによってストーリー性を強調することができるので、より生成者の意図をストレートに盛り込むことができる。これがAIイラストにおける生成塗りつぶしの一番の使い途ではないかなと感じています。



【おまけ】手の修正に使えないこともないが・・・

意図した形にすることはなかなか難しいのですが、生成塗りつぶしで崩壊した手を修正することもできなくはありませんでした。さきほどのリンゴと少女のイラストも生成塗りつぶしだけで手を修正しているので、左右で見比べてみてください。


やり方は簡単で、手の範囲を広めに選択して「hand」と指示するだけ。手が左右逆にならないよう「right hand」などと指定してもいいかもしれません(効果のほどはまだ検証中)


ただ、さきほどのように半リアルなタッチであればなかなかきれいな手が出せるのですが、こちらの画像のように完全にイラストタッチだと、とたんに精度が下がってきます。


崩壊した手を範囲選択して「hand」と指示し、何度も生成しなおしても、一番出来がよくてせいぜいこの程度。フォトリアルな制作ならともかく、手修正については、これまでもFANBOXで解説してきた方法でアプローチしたほうが有用と言えるでしょう。





終わりに

生成塗りつぶしを使いこなすことで、AIイラスト特有の破綻を的確に排除し、より生成者の意図がはっきり伝わるように修正できるようになることがよく分かりました。


Photoshopには生成塗りつぶしだけでなく、クリスタなどにはない「被写体を選択」「背景を削除」といった機能もあり、今後も下記のようなさまざまなAI利用機能がリリースされていくようです。著作権切れ画像やAdobe Stockの素材を元に学習されたFireflyの成り立ちからして、アニメ特化の生成ができるようになることはなさそうですが、あくまで補助的な使い方をするのであれば、間違いなく非常に有用と言えます。


そんなわけで、今日はここまで。それでは皆様、ワクワクに満ちた創作生活をお送りください!


スタジオ真榊でした。



Attachments (46)

iA10MmXFCqR3w95VQDjD2v8w.png

iA10MmXFCqR3w95VQDjD2v8w.png

dKKK8iMqHQu9QE1nEgXyxGEe.png

dKKK8iMqHQu9QE1nEgXyxGEe.png

gA13yTq4KV2b1a4rFhxBqfPq.png

gA13yTq4KV2b1a4rFhxBqfPq.png

CpgmezTuJrD6SWOxO9kqixhC.png

CpgmezTuJrD6SWOxO9kqixhC.png

5MzARigSzKGl9mN1s0sOlTDj.png

5MzARigSzKGl9mN1s0sOlTDj.png

RIZWvOf8foLOEKgsUFEDKJIF.png

RIZWvOf8foLOEKgsUFEDKJIF.png

2ftXuiUtoVYqwkKWPNOWXclq.png

2ftXuiUtoVYqwkKWPNOWXclq.png

KSI1DKrl9GUKIbQsxPeVMdEX.png

KSI1DKrl9GUKIbQsxPeVMdEX.png

4ecrKjL8GfbfyzZR8DaUGnJe.png

4ecrKjL8GfbfyzZR8DaUGnJe.png

f7Oxy4p4oxQ0Y2CxvXldQkZl.png

f7Oxy4p4oxQ0Y2CxvXldQkZl.png

jRiz7tuwBLcvyvlIRQmnFaPq.png

jRiz7tuwBLcvyvlIRQmnFaPq.png

pxT32GN1fQ6876kmckgfAM71.png

pxT32GN1fQ6876kmckgfAM71.png

ZzpcpOf1l1ubmMn5WtcuUbrO.png

ZzpcpOf1l1ubmMn5WtcuUbrO.png

QVyBuBoKZA5UXOCCqcC9xpxT.png

QVyBuBoKZA5UXOCCqcC9xpxT.png

aw57qguleXfh13hLrzUvytOE.png

aw57qguleXfh13hLrzUvytOE.png

5vkKRE3Hx6MOQ1Mct15SmFJU.jpeg

5vkKRE3Hx6MOQ1Mct15SmFJU.jpeg

BGmP7peuFUcEF3jc9jjkvpxM.png

BGmP7peuFUcEF3jc9jjkvpxM.png

lvXwKK50aAcCORVOlMQ1hgEO.png

lvXwKK50aAcCORVOlMQ1hgEO.png

KOMipfb62ZSncvPolhYIPvFQ.png

KOMipfb62ZSncvPolhYIPvFQ.png

aYyH7CUew94TaIq0D4u4bxBD.png

aYyH7CUew94TaIq0D4u4bxBD.png

O0mh6OjIkUd3gpeCS6M6i4nM.png

O0mh6OjIkUd3gpeCS6M6i4nM.png

LTiumljS7xYWK55q3hQ6suo4.png

LTiumljS7xYWK55q3hQ6suo4.png

tudC2y0QBob6kFJnTPdgc34V.png

tudC2y0QBob6kFJnTPdgc34V.png

PueKD8ym9MhT7IpJ9D9R8Azf.png

PueKD8ym9MhT7IpJ9D9R8Azf.png

C9eejE4YASpGeGbcqwr75m8F.png

C9eejE4YASpGeGbcqwr75m8F.png

GmF2zfkZCmK784Y9td45DfMj.png

GmF2zfkZCmK784Y9td45DfMj.png

GMIX6TVafuIE9UcHO61tvAoG.png

GMIX6TVafuIE9UcHO61tvAoG.png

l9mAkUXh0sU41kkIsexPaVMJ.png

l9mAkUXh0sU41kkIsexPaVMJ.png

w2baLWnlHf9y2xiP3hD6fd5G.jpeg

w2baLWnlHf9y2xiP3hD6fd5G.jpeg

xcMoNcuaJQgvJCGjqzPt0gs3.png

xcMoNcuaJQgvJCGjqzPt0gs3.png

HVjHY02Q43jRghPeGllvt8XY.png

HVjHY02Q43jRghPeGllvt8XY.png

DssNVC2ecrMGFeD6Y4P8th8o.png

DssNVC2ecrMGFeD6Y4P8th8o.png

TeRaevANblIRMXzibnhWEF9B.png

TeRaevANblIRMXzibnhWEF9B.png

Fl7MBI3UVsw14VzyZMPxB9ZZ.png

Fl7MBI3UVsw14VzyZMPxB9ZZ.png

mwfaCqA8EByi6iVjyfti0qA7.png

mwfaCqA8EByi6iVjyfti0qA7.png

QUEWjhbHsFPDKmgHqNl43cme.png

QUEWjhbHsFPDKmgHqNl43cme.png

osMH7k6dwLTG70SCfns9xU3w.png

osMH7k6dwLTG70SCfns9xU3w.png

YcP2qcvCbmVSGv9sP55Y7y6F.png

YcP2qcvCbmVSGv9sP55Y7y6F.png

UfuRw0ovZaBGpSybX0CC77AM.png

UfuRw0ovZaBGpSybX0CC77AM.png

ru1YdFLXf8mKd3Zegzuwqio8.png

ru1YdFLXf8mKd3Zegzuwqio8.png

9oAGQjqduRQIZwMGOFVyntR8.png

9oAGQjqduRQIZwMGOFVyntR8.png

VUInTRgZeNA2qey2WF2jVzvL.jpeg

VUInTRgZeNA2qey2WF2jVzvL.jpeg

10hIYVyxXj9MpIPVrQUKVBtZ.png

10hIYVyxXj9MpIPVrQUKVBtZ.png

lfkE9s1b4tzD1xoEAncZPQsC.png

lfkE9s1b4tzD1xoEAncZPQsC.png

cAUJfthY4bBjeu0mv4273yZr.png

cAUJfthY4bBjeu0mv4273yZr.png

yp5qpKF4lFuhXFjfFe4Z6pxU.png

yp5qpKF4lFuhXFjfFe4Z6pxU.png