diff --git a/ui/media/ding.mp3 b/ui/media/ding.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f2843b06cec845d487e3a23076dddaff619cc36c Binary files /dev/null and b/ui/media/ding.mp3 differ diff --git a/ui/media/drawingboard.min.css b/ui/media/drawingboard.min.css new file mode 100644 index 0000000000000000000000000000000000000000..7d80478705de8fdceacbad40e5a85c19307be665 --- /dev/null +++ b/ui/media/drawingboard.min.css @@ -0,0 +1,5 @@ +/* drawingboard.js v0.4.6 - https://github.com/Leimi/drawingboard.js +* Copyright (c) 2015 Emmanuel Pelletier +* Licensed MIT */ + +.drawing-board,.drawing-board *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.drawing-board-controls-hidden,.drawing-board-utils-hidden{display:none!important}.drawing-board{position:relative;display:block}.drawing-board-canvas-wrapper{position:relative;margin:0;border:1px solid #ddd}.drawing-board-canvas{position:absolute;top:0;left:0;width:auto;cursor:crosshair;z-index:20}.drawing-board-cursor{position:absolute;top:0;left:0;pointer-events:none;border-radius:50%;background:#ccc;background:rgba(0,0,0,.2);z-index:30}.drawing-board-control-colors-rainbows,.drawing-board-control-size .drawing-board-control-inner,.drawing-board-control-size-dropdown,.drawing-board-control>button{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden;background-color:#eee;padding:2px 4px;border:1px solid #ccc;box-shadow:0 1px 3px -2px #121212,inset 0 2px 5px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 3px -2px #121212,inset 0 2px 5px 0 rgba(255,255,255,.3);height:28px}.drawing-board-control>button{cursor:pointer;min-width:28px;line-height:14px}.drawing-board-control>button:focus,.drawing-board-control>button:hover{background-color:#ddd}.drawing-board-control>button.active,.drawing-board-control>button:active{box-shadow:inset 0 1px 2px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 2px 0 rgba(0,0,0,.2);background-color:#ddd}.drawing-board-control>button[disabled]{color:gray}.drawing-board-control>button[disabled].active,.drawing-board-control>button[disabled]:active,.drawing-board-control>button[disabled]:focus,.drawing-board-control>button[disabled]:hover{background-color:#eee;box-shadow:0 1px 3px -2px #121212,inset 0 2px 5px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 3px -2px #121212,inset 0 2px 5px 0 rgba(255,255,255,.3);cursor:default}.drawing-board-controls{margin:0 auto;text-align:center;font-size:0;display:table;border-spacing:9.33px 0;position:relative;min-height:28px}.drawing-board-controls[data-align=left]{margin:0;left:-9.33px}.drawing-board-controls[data-align=right]{margin:0 0 0 auto;right:-9.33px}.drawing-board-canvas-wrapper+.drawing-board-controls,.drawing-board-controls+.drawing-board-canvas-wrapper{margin-top:5px}.drawing-board-controls-hidden{height:0;min-height:0;padding:0;margin:0;border:0}.drawing-board-control{display:table-cell;border-collapse:separate;vertical-align:middle;font-size:16px;height:100%}.drawing-board-control-inner{position:relative;height:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.drawing-board-control>button{margin:0;vertical-align:middle}.drawing-board-control-colors{font-size:0;line-height:0}.drawing-board-control-colors-current{border:1px solid #ccc;cursor:pointer;display:inline-block;width:26px;height:26px}.drawing-board-control-colors-rainbows{display:inline-block;position:absolute;left:0;top:33px;margin-left:0;z-index:100;width:250px;height:auto;padding:4px}.drawing-board-control-colors-rainbow{height:18px}.drawing-board-control-colors-picker:first-child{margin-right:5px}.drawing-board-control-colors-picker{display:inline-block;width:18px;height:18px;cursor:pointer}.drawing-board-control-colors-picker[data-color="rgba(255, 255, 255, 1)"]{width:16px;height:17px;border:1px solid #ccc;border-bottom:none}.drawing-board-control-colors-picker:hover{width:16px;height:16px;border:1px solid #555}.drawing-board-control-drawingmode>button{margin-right:2px}.drawing-board-control-drawingmode>button:last-child{margin-right:0}.drawing-board-control-drawingmode-pencil-button{overflow:hidden;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAe9JREFUeNpiZAACVlFRBhYREQZcQPnbNwa3N28YlL5+ZfgLFfvPwGD9m4FhIgsDHuAO0gTUDNKIBvyBmqt/MTDMY8Gl0f31azD7L6oUIxCnAzWmAPHBfwwM01AMUAV6JfPQIVwOYgVqqPnFyOjz6///O38YGKpAgmAD1OXlGdTk5PD5hgeouZudj8/uy9evP/78/dsFFPsJNiAoKIiBABAHap4oLi9v8fTNm48//v7NBwbgWZgkE7rqt8DY+A8JZRBW+cfIuEDT0NDlzadP3z98/doPFDuCrB7TAGFhBqCNIGwM9OcKUzs7+xdv3355+f79VqDYAiTDwZgJh7ONgYpnOvn4GL949erT7UePdgL5JVCD4fgBLBBxaX74+PG789evnwby0/8jKXgExIeB+CG6Af///1e9Ki9vFSAkZPzoyZPPJy9evA9MB77/sWiEARZkzV+/fvXYtGnTpG3btj28EBT0BqjZ5D8OjXCwPksUhA1Wpggf/PHjx/9169Y9EBERaUlgZmaIAcrLE4rk5sIqBqDmlefnRPzfWGX5EaSZm5ubgRloADGA5QZ3RgK7gESY4PMNn9ZtObPpzZvfU4DiYkiB/RcHG+S7fyxAMH/lFU2GOZd2bLx18/cEUMoD4j9I+DcS/RtJHGTYf4AAAwAxaOMYHjxKFwAAAABJRU5ErkJggg==);background-position:50% 50%;background-repeat:no-repeat}.drawing-board-control-drawingmode-pencil-button:before{content:"";display:block;width:0;height:100%}.drawing-board-control-drawingmode-eraser-button{overflow:hidden;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkpJREFUeNp0kk+IElEcx39vFBc9+OfQRTAwzFt4CaYOKStj6MoeculStzoIQSB4kCVckmDx4iGCXWYJIqjoVOzO1l4qT1F7WfBWHvxzDPyTB3XUmXn93suRybUffHmP997n9/cRsFgwGARJkiAcDsPlwgEIeEZQAhCRAkgAlOD6SQP4rgMFDWVnYCAQgFgsBqFQCBwOByzZNQOotPHx1RNCCCipu6bfb+zSnslkeOQVILPrBkAirbws9btdTEWAzZPXpfepOzaeGMBXwe/3w3+MwTc3Dl+UeghTiskbBvR6Pbh18mZHB0jjmxvCKhIfR37s3r+Sevf8ca/T4TBF2HTSODuDxP7uNjrZFFbBk8lEzOVyspa4ykGYw2zfbTb/7ilvok1YhlVVFfP5vDydTkHXdXDdlhZOOnPY4/HA0YPtp3h6LFjh8XgsFgoFGTPgsKm1zDr8ajTQh8Fh5eGjZzjGI8yjKlgjF4tFGdd/YKYmRja24hw+zu3sYe2HiH3hYzQjl8tleTQanWtou93G6Qngdrth6+1+9h6hTULJZ/PeziJXKhV5OByeg1ut1gJOp9NZTdNOcQ419ot+ggp1qoLdBFmqVmNpm3A8Huewy+Wq1RH8QH9zmBlJJpMRdCIqiiIPBgN+2MCGsW/r8/kgGo1m0fmpzWarseayHlmNeL1eFiWC0cRqtSr3+/3FpSiKHMZtjU1glbFyfKgLTqfzEka9OJvNeDnzz1JnCaFmqOl8ZdJY1SiDOXCiXKg1NtG5DIt0y6ov3dE/AgwAENFWYYLj4mYAAAAASUVORK5CYII=);background-position:50% 50%;background-repeat:no-repeat}.drawing-board-control-drawingmode-eraser-button:before{content:"";display:block;width:0;height:100%}.drawing-board-control-drawingmode-filler-button{overflow:hidden;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnNJREFUeNp0k0trE1EUx89MJpNJooYYXBgDNtCKdRPwlbqoCKUtaNVNA0Uo7UbMxoVPEARTXEi+QWfnwn6DEAlEkrSLttTGRiULEQlJ8yChmbzI++E50yTUJA78uMy953/u/557LmOz2WDEZ2m1WrckSRJSqdR2tVrdHQyYebwHtVoNuFHqTqczhQnWKaBYLDoKhcIuzgHDMKBSqeD20qd+LNdsNocSoFhRr9ctpVLJigl4xIIJQizLAmG4cAPa7bYcy9Iug5TL5UYikbD6/X7Rbre/IUcYe3WUW5ZsnQQzW9LpNOPz+UQc5aBM5mgdh7vI9FCCAesW2tnr9YqZTAby+bw8f3AQRP6853n+Ph5hemSCntjj8YjZbFYWx2IxeS2RSEMwuA87O79eqdXquVolK+GxnP0EPbHb7RZJSGABIR6PA11zJHKIR2MhHA5DIPDj7eH3j95KpfK60Wg8Yntil8slkqgnpioLghacTidoNDpEC3q9HnheCc3s1jZeLcW943pirPw/4lKpBkqlDubnl/riycnLsLy88EKj0fhzuRyZv8RFo1E6wpBYkiqy7Z54YmIcVlYeyOKC4mYwJ0nHRaQuM5vNT6hB/iceG7sIq6sPnwmC4MerDkby40AOCCoiddie1Wp92W7zQ2KTyQSLizNP8T0EsPLBbxEDnCj0GkM2qIEwyZRCobizsfH5A1ZXFhuN52F29vpz3HkL574mk8lj24Y5wsHkvjjoX0BOIWc5jruHzbK2ufmzEwpFO3jnDhQv4JoROYdoERVyGjEgZ8iBDlF3FzXo4go6utZ9lftY4N/dXisjR0i1G0ublv8KMAA0ZoUlicxrhwAAAABJRU5ErkJggg==);background-position:50% 50%;background-repeat:no-repeat}.drawing-board-control-drawingmode-filler-button:before{content:"";display:block;width:0;height:100%}.drawing-board-control-navigation>button{font-family:Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;margin-right:2px}.drawing-board-control-navigation>button:last-child{margin-right:0}.drawing-board-control-size[data-drawing-board-type=range] .drawing-board-control-inner{width:75px}.drawing-board-control-size[data-drawing-board-type=dropdown] .drawing-board-control-inner{overflow:visible}.drawing-board-control-size-range-input{position:relative;width:100%;z-index:100;margin:0;padding:0;border:0}.drawing-board-control-size-dropdown span,.drawing-board-control-size-dropdown-current span,.drawing-board-control-size-range-current{display:block;background:#333;opacity:.8}.drawing-board-control-size-range-current{display:inline-block;opacity:.15;position:absolute;pointer-events:none;left:50%;top:50%;z-index:50}.drawing-board-control-size-dropdown-current{display:block;height:100%;width:40px;overflow:hidden;position:relative}.drawing-board-control-size-dropdown-current span{position:absolute;left:50%;top:50%}.drawing-board-control-size-dropdown{position:absolute;left:-6px;top:33px;height:auto;list-style-type:none;margin:0;padding:0;z-index:100}.drawing-board-control-size-dropdown li{display:block;padding:4px;margin:3px 0;min-height:16px}.drawing-board-control-size-dropdown li:hover{background:#ccc}.drawing-board-control-size-dropdown span{margin:0 auto}.drawing-board-control-download-button{overflow:hidden;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoBJREFUeNqMkr9PU1EUx7/vR1tQ3yu10hAmTawtBSYSy2YccFOcnDQm/gewOLnj5GYMg4sdXFxkMca4OBAwdUBe/ZkIGFp+9tHXvh/3/fTcAm01aLzJybnn3nM+95tzrnDl6Tb+sibuTmWUWj3C6/Juk+LySUmyvt0FCKKA02ryOCy6LBiu15ngMbZ5DDCNBqIw6gKM+n4nECUJru3glKry8CpjQaHVYmC2rVH82DIMMMdGGARdwJ+SPNdFS9chx+MXDNMp/NzagWNatk/nQU/hiYAoih6FYTBCBs9zUXMCbAhx2OYOv351lPOJ3EwH4LteL6Dcp/Rfu3FrstDyIizt+agpaYxNDU0M9gl4v7Ck+TYrCYLQqZHUyTtdQBiutPSGUflczSXHs5lVKwZdSOBMvwztxVvN0RtzsiyXBFHsAvL5PBSnCpXV2getILFiE2SjspYbuZzPiDSZ2vOXmlvX5yQqTmMfg9ZXqtls1wnT09OHEyAq0aFLg/gSXsSWq9wWk+p9PrCoYTwcijdLOfE7UsEufN9HGIYnT4EnTGIXe1KqtNNIvuNnGamxfi7SgQD/nIJCTbzOPQ/SQh1pud7T4M6W/8qFIw/5WAr5m7Ozsw9UVc069Fls2yJzSC5/lnc9RhaHZVnfSqUnEgXP2oBqtYqBgYG2+mKxmOVADnAcB4yxHgD1RzehKKns/LyV4gUHBweQy+UyRkdH6UKJ6fQDFxcXoWkaXJeRuTgUGCdLQJ9bx72lGZimGWs2m+083oN+2iiFQiGxvLy8RrDzudyltgrG3N8U2G8CrPz4sGYYRqJSqWR4H/jNWbJhUjAWi8XG8R/L87yPpGCVttVfAgwAVpZR+8tZC08AAAAASUVORK5CYII=);background-position:50% 50%;background-repeat:no-repeat}.drawing-board-control-download-button:before{content:"";display:block;width:0;height:100%} \ No newline at end of file diff --git a/ui/media/drawingboard.min.js b/ui/media/drawingboard.min.js new file mode 100644 index 0000000000000000000000000000000000000000..289d40ae9b017d4a7979b02a0a03609634bd9e84 --- /dev/null +++ b/ui/media/drawingboard.min.js @@ -0,0 +1,4 @@ +/* drawingboard.js v0.4.6 - https://github.com/Leimi/drawingboard.js +* Copyright (c) 2015 Emmanuel Pelletier +* Licensed MIT */ +!function(){"use strict";function a(a,b){for(;a.length>b;)a.shift()}var b=function(a){var b=a?a:{},c={provider:function(){throw new Error("No provider!")},maxLength:30,onUpdate:function(){}};this.provider="undefined"!=typeof b.provider?b.provider:c.provider,this.maxLength="undefined"!=typeof b.maxLength?b.maxLength:c.maxLength,this.onUpdate="undefined"!=typeof b.onUpdate?b.onUpdate:c.onUpdate,this.initialItem=null,this.clear()};b.prototype.initialize=function(a){this.stack[0]=a,this.initialItem=a},b.prototype.clear=function(){this.stack=[this.initialItem],this.position=0,this.onUpdate()},b.prototype.save=function(){this.provider(function(b){a(this.stack,this.maxLength),this.position=Math.min(this.position,this.stack.length-1),this.stack=this.stack.slice(0,this.position+1),this.stack.push(b),this.position++,this.onUpdate()}.bind(this))},b.prototype.undo=function(a){if(this.canUndo()){var b=this.stack[--this.position];this.onUpdate(),a&&a(b)}},b.prototype.redo=function(a){if(this.canRedo()){var b=this.stack[++this.position];this.onUpdate(),a&&a(b)}},b.prototype.canUndo=function(){return this.position>0},b.prototype.canRedo=function(){return this.positionh;h++){if(g=g[e[h]],g===a)throw"tim: '"+e[h]+"' not found in "+b;if(h===f-1)return g}})}}(),DrawingBoard.Utils.MicroEvent=function(){},DrawingBoard.Utils.MicroEvent.prototype={bind:function(a,b){this._events=this._events||{},this._events[a]=this._events[a]||[],this._events[a].push(b)},unbind:function(a,b){this._events=this._events||{},a in this._events!=!1&&this._events[a].splice(this._events[a].indexOf(b),1)},trigger:function(a){if(this._events=this._events||{},a in this._events!=!1)for(var b=0;b=0;g--)f+=parseInt(a.css(e[g]).replace("px",""),10);return f},DrawingBoard.Utils.boxBorderWidth=function(a,b,c){return DrawingBoard.Utils._boxBorderSize(a,b,c,"width")},DrawingBoard.Utils.boxBorderHeight=function(a,b,c){return DrawingBoard.Utils._boxBorderSize(a,b,c,"height")},DrawingBoard.Utils.isColor=function(a){return a&&a.length?/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a)||-1!==$.inArray(a.substring(0,3),["rgb","hsl"]):!1},DrawingBoard.Utils.RGBToInt=function(a,b,c){var d=0;return d|=(255&a)<<16,d|=(255&b)<<8,d|=255&c},DrawingBoard.Utils.pixelAt=function(a,b,c){var d=4*(c*a.width+b),e=DrawingBoard.Utils.RGBToInt(a.data[d],a.data[d+1],a.data[d+2]);return[d,b,c,e]},DrawingBoard.Utils.compareColors=function(a,b,c){if(0===c)return a===b;var d=a>>16&255,e=b>>16&255,f=a>>8&255,g=b>>8&255,h=255&a,i=255&b;return Math.abs(d-e)<=c&&Math.abs(f-g)<=c&&Math.abs(h-i)<=c},function(){for(var a=["ms","moz","webkit","o"],b=0;b-1?c+='
':c='
'+c,this.$el.addClass("drawing-board").append(c),this.dom={$canvasWrapper:this.$el.find(".drawing-board-canvas-wrapper"),$canvas:this.$el.find(".drawing-board-canvas"),$cursor:this.$el.find(".drawing-board-cursor"),$controls:this.$el.find(".drawing-board-controls")},$.each(["left","right","center"],$.proxy(function(a,b){return this.opts.controlsPosition.indexOf(b)>-1?(this.dom.$controls.attr("data-align",b),!1):void 0},this)),this.canvas=this.dom.$canvas.get(0),this.ctx=this.canvas&&this.canvas.getContext&&this.canvas.getContext("2d")?this.canvas.getContext("2d"):null,this.color=this.opts.color,this.ctx?(this.storage=this._getStorage(),this.initHistory(),this.reset({webStorage:!1,history:!1,background:!1}),this.initControls(),this.resize(),this.reset({webStorage:!1,history:!1,background:!0}),this.restoreWebStorage(),this.initDropEvents(),void this.initDrawEvents()):(this.opts.errorMessage&&this.$el.html(this.opts.errorMessage),!1)},DrawingBoard.Board.defaultOpts={controls:["Color","DrawingMode","Size","Navigation"],controlsPosition:"top left",color:"#000000",size:1,background:"#fff",eraserColor:"background",fillTolerance:100,fillHack:!0,webStorage:"session",droppable:!1,enlargeYourContainer:!1,errorMessage:'

It seems you use an obsolete browser. Update it to start drawing.

',stretchImg:!1},DrawingBoard.Board.prototype={mergeOptions:function(a){return a=$.extend({},DrawingBoard.Board.defaultOpts,a),a.background||"background"!==a.eraserColor||(a.eraserColor="transparent"),a},reset:function(a){a=$.extend({color:this.opts.color,size:this.opts.size,webStorage:!0,history:!0,background:!1},a),this.setMode("pencil"),a.background&&this.resetBackground(this.opts.background,$.proxy(function(){a.history&&this.saveHistory()},this)),a.color&&this.setColor(a.color),a.size&&(this.ctx.lineWidth=a.size),this.ctx.lineCap="round",this.ctx.lineJoin="round",a.webStorage&&this.saveWebStorage(),a.history&&!a.background&&this.saveHistory(),this.blankCanvas=this.getImg(),this.ev.trigger("board:reset",a)},resetBackground:function(a,b){a=a||this.opts.background;var c=DrawingBoard.Utils.isColor(a),d=this.getMode();this.setMode("pencil"),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),c?(this.ctx.fillStyle=a,this.ctx.fillRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.history.initialize(this.getImg()),b&&b()):a&&this.setImg(a,{callback:$.proxy(function(){this.history.initialize(this.getImg()),b&&b()},this)}),this.setMode(d)},resize:function(){this.dom.$controls.toggleClass("drawing-board-controls-hidden",!this.controls||!this.controls.length);var a,b,c=[this.$el.width(),DrawingBoard.Utils.boxBorderWidth(this.$el),DrawingBoard.Utils.boxBorderWidth(this.dom.$canvasWrapper,!0,!0)],d=[this.$el.height(),DrawingBoard.Utils.boxBorderHeight(this.$el),this.dom.$controls.height(),DrawingBoard.Utils.boxBorderHeight(this.dom.$controls,!1,!0),DrawingBoard.Utils.boxBorderHeight(this.dom.$canvasWrapper,!0,!0)],e=function(a,b){b=b||1;for(var c=a[0],d=1;d0&&q.push(DrawingBoard.Utils.pixelAt(c,p[e]-1,p[f])),p[e]0&&q.push(DrawingBoard.Utils.pixelAt(c,p[e],p[f]-1)),p[f]10&&this.isMouseHovering){this.dom.$cursor.css({width:this.ctx.lineWidth+"px",height:this.ctx.lineWidth+"px"});var a=DrawingBoard.Utils.tpl("translateX({{x}}px) translateY({{y}}px)",{x:this.coords.current.x-this.ctx.lineWidth/2,y:this.coords.current.y-this.ctx.lineWidth/2});this.dom.$cursor.css({transform:a,"-webkit-transform":a,"-ms-transform":a}),this.dom.$cursor.removeClass("drawing-board-utils-hidden")}else this.dom.$cursor.addClass("drawing-board-utils-hidden");if(this.isDrawing){var b=this._getMidInputCoords(this.coords.current);this.ctx.beginPath(),this.ctx.moveTo(b.x,b.y),this.ctx.quadraticCurveTo(this.coords.old.x,this.coords.old.y,this.coords.oldMid.x,this.coords.oldMid.y),this.ctx.stroke(),this.coords.old=this.coords.current,this.coords.oldMid=b}window.requestAnimationFrame&&requestAnimationFrame($.proxy(function(){this.draw()},this))},_onInputStart:function(a,b){this.coords.current=this.coords.old=b,this.coords.oldMid=this._getMidInputCoords(b),this.isDrawing=!0,window.requestAnimationFrame||this.draw(),this.ev.trigger("board:startDrawing",{e:a,coords:b}),a.stopPropagation(),a.preventDefault()},_onInputMove:function(a,b){this.coords.current=b,this.ev.trigger("board:drawing",{e:a,coords:b}),window.requestAnimationFrame||this.draw(),a.stopPropagation(),a.preventDefault()},_onInputStop:function(a,b){!this.isDrawing||a.touches&&0!==a.touches.length||(this.isDrawing=!1,this.saveWebStorage(),this.saveHistory(),this.ev.trigger("board:stopDrawing",{e:a,coords:b}),this.ev.trigger("board:userAction"),a.stopPropagation(),a.preventDefault())},_onMouseOver:function(a,b){this.isMouseHovering=!0,this.coords.old=this._getInputCoords(a),this.coords.oldMid=this._getMidInputCoords(this.coords.old),this.ev.trigger("board:mouseOver",{e:a,coords:b})},_onMouseOut:function(a,b){this.isMouseHovering=!1,this.ev.trigger("board:mouseOut",{e:a,coords:b})},_getInputCoords:function(a){a=a.originalEvent?a.originalEvent:a;var b,c,d=this.canvas.getBoundingClientRect(),e=this.dom.$canvas.width(),f=this.dom.$canvas.height();return a.touches&&1==a.touches.length?(b=a.touches[0].pageX,c=a.touches[0].pageY):(b=a.pageX,c=a.pageY),b-=this.dom.$canvas.offset().left,c-=this.dom.$canvas.offset().top,b*=e/d.width,c*=f/d.height,{x:b,y:c}},_getMidInputCoords:function(a){return{x:this.coords.old.x+a.x>>1,y:this.coords.old.y+a.y>>1}}},DrawingBoard.Control=function(a,b){return this.board=a,this.opts=$.extend({},this.defaults,b),this.$el=$(document.createElement("div")).addClass("drawing-board-control"),this.name&&this.$el.addClass("drawing-board-control-"+this.name),this.board.ev.bind("board:reset",$.proxy(this.onBoardReset,this)),this.initialize.apply(this,arguments),this},DrawingBoard.Control.prototype={name:"",defaults:{},initialize:function(){},addToBoard:function(){this.board.addControl(this)},onBoardReset:function(){}},DrawingBoard.Control.extend=function(a,b){var c,d=this;c=a&&a.hasOwnProperty("constructor")?a.constructor:function(){return d.apply(this,arguments)},$.extend(c,d,b);var e=function(){this.constructor=c};return e.prototype=d.prototype,c.prototype=new e,a&&$.extend(c.prototype,a),c.__super__=d.prototype,c},DrawingBoard.Control.Color=DrawingBoard.Control.extend({name:"colors",initialize:function(){this.initTemplate();var a=this;this.$el.on("click",".drawing-board-control-colors-picker",function(b){var c=$(this).attr("data-color");a.board.setColor(c),a.$el.find(".drawing-board-control-colors-current").css("background-color",c).attr("data-color",c),a.board.ev.trigger("color:changed",c),a.$el.find(".drawing-board-control-colors-rainbows").addClass("drawing-board-utils-hidden"),b.preventDefault()}),this.$el.on("click",".drawing-board-control-colors-current",function(b){a.$el.find(".drawing-board-control-colors-rainbows").toggleClass("drawing-board-utils-hidden"),b.preventDefault()}),$("body").on("click",function(b){var c=$(b.target),d=c.hasClass("drawing-board-control-colors-current")?c:c.closest(".drawing-board-control-colors-current"),e=a.$el.find(".drawing-board-control-colors-current"),f=a.$el.find(".drawing-board-control-colors-rainbows");d.length&&d.get(0)===e.get(0)||f.hasClass("drawing-board-utils-hidden")||f.addClass("drawing-board-utils-hidden")})},initTemplate:function(){var a='
{{rainbows}}
',b='
',c="";$.each([.75,.5,.25],$.proxy(function(a,d){var e=0,f=null;for(c+='
',.25==d&&(f=this._rgba(0,0,0,1)),.5==d&&(f=this._rgba(150,150,150,1)),.75==d&&(f=this._rgba(255,255,255,1)),c+=DrawingBoard.Utils.tpl(b,{color:f.toString()});330>=e;)c+=DrawingBoard.Utils.tpl(b,{color:this._hsl2Rgba(this._hsl(e-60,1,d)).toString()}),e+=30;c+="
"},this)),this.$el.append($(DrawingBoard.Utils.tpl(a,{color:this.board.color,rainbows:c}))),this.$el.find(".drawing-board-control-colors-rainbows").addClass("drawing-board-utils-hidden")},onBoardReset:function(){this.board.setColor(this.$el.find(".drawing-board-control-colors-current").attr("data-color"))},_rgba:function(a,b,c,d){return{r:a,g:b,b:c,a:d,toString:function(){return"rgba("+a+", "+b+", "+c+", "+d+")"}}},_hsl:function(a,b,c){return{h:a,s:b,l:c,toString:function(){return"hsl("+a+", "+100*b+"%, "+100*c+"%)"}}},_hex2Rgba:function(a){var b=parseInt(a.substring(1),16);return this._rgba(b>>16,b>>8&255,255&b,1)},_hsl2Rgba:function(a){function b(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a}var c,d,e,f=a.h/360,g=a.s,h=a.l;if(0===g)c=d=e=h;else{var i=.5>h?h*(1+g):h+g-h*g,j=2*h-i;c=Math.floor(255*b(j,i,f+1/3)),d=Math.floor(255*b(j,i,f)),e=Math.floor(255*b(j,i,f-1/3))}return this._rgba(c,d,e,1)}}),DrawingBoard.Control.DrawingMode=DrawingBoard.Control.extend({name:"drawingmode",defaults:{pencil:!0,eraser:!0,filler:!0},initialize:function(){this.prevMode=this.board.getMode(),$.each(["pencil","eraser","filler"],$.proxy(function(a,b){this.opts[b]&&this.$el.append('')},this)),this.$el.on("click","button[data-mode]",$.proxy(function(a){var b=$(a.currentTarget).attr("data-mode"),c=this.board.getMode();c!==b&&(this.prevMode=c);var d=c===b?this.prevMode:b;this.board.setMode(d),a.preventDefault()},this)),this.board.ev.bind("board:mode",$.proxy(function(a){this.toggleButtons(a)},this)),this.toggleButtons(this.board.getMode())},toggleButtons:function(a){this.$el.find("button[data-mode]").each(function(b,c){var d=$(c);d.toggleClass("active",a===d.attr("data-mode"))})}}),DrawingBoard.Control.Navigation=DrawingBoard.Control.extend({name:"navigation",defaults:{back:!0,forward:!0,reset:!0},initialize:function(){var a="";if(this.opts.back&&(a+=''),this.opts.forward&&(a+=''),this.opts.reset&&(a+=''),this.$el.append(a),this.opts.back){var b=this.$el.find(".drawing-board-control-navigation-back");this.board.ev.bind("historyNavigation",$.proxy(this.updateBack,this,b)),this.$el.on("click",".drawing-board-control-navigation-back",$.proxy(function(a){this.board.goBackInHistory(),a.preventDefault()},this)),this.updateBack(b)}if(this.opts.forward){var c=this.$el.find(".drawing-board-control-navigation-forward");this.board.ev.bind("historyNavigation",$.proxy(this.updateForward,this,c)),this.$el.on("click",".drawing-board-control-navigation-forward",$.proxy(function(a){this.board.goForthInHistory(),a.preventDefault()},this)),this.updateForward(c)}this.opts.reset&&this.$el.on("click",".drawing-board-control-navigation-reset",$.proxy(function(a){this.board.reset({background:!0}),a.preventDefault()},this))},updateBack:function(a){this.board.history.canUndo()?a.removeAttr("disabled"):a.attr("disabled","disabled")},updateForward:function(a){this.board.history.canRedo()?a.removeAttr("disabled"):a.attr("disabled","disabled")}}),DrawingBoard.Control.Size=DrawingBoard.Control.extend({name:"size",defaults:{type:"auto",dropdownValues:[1,3,6,10,20,30,40,50],min:1,max:50},types:["dropdown","range"],initialize:function(){"auto"==this.opts.type&&(this.opts.type=this._iHasRangeInput()?"range":"dropdown");var a=$.inArray(this.opts.type,this.types)>-1?this["_"+this.opts.type+"Template"]():!1;if(!a)return!1;this.val=this.board.opts.size,this.$el.append($(a)),this.$el.attr("data-drawing-board-type",this.opts.type),this.updateView();var b=this;"range"==this.opts.type&&this.$el.on("change",".drawing-board-control-size-range-input",function(a){b.val=$(this).val(),b.updateView(),b.board.ev.trigger("size:changed",b.val),a.preventDefault()}),"dropdown"==this.opts.type&&(this.$el.on("click",".drawing-board-control-size-dropdown-current",$.proxy(function(){this.$el.find(".drawing-board-control-size-dropdown").toggleClass("drawing-board-utils-hidden")},this)),this.$el.on("click","[data-size]",function(a){b.val=parseInt($(this).attr("data-size"),0),b.updateView(),b.board.ev.trigger("size:changed",b.val),a.preventDefault()}))},_rangeTemplate:function(){var a='
';return DrawingBoard.Utils.tpl(a,{min:this.opts.min,max:this.opts.max,size:this.board.opts.size})},_dropdownTemplate:function(){var a='
    ';return $.each(this.opts.dropdownValues,function(b,c){a+=DrawingBoard.Utils.tpl('
  • ',{size:c})}),a+="
"},onBoardReset:function(){this.updateView()},updateView:function(){var a=this.val;if(this.board.ctx.lineWidth=a,this.$el.find(".drawing-board-control-size-range-current, .drawing-board-control-size-dropdown-current span").css({width:a+"px",height:a+"px",borderRadius:a+"px",marginLeft:-1*a/2+"px",marginTop:-1*a/2+"px"}),this.$el.find(".drawing-board-control-inner").attr("title",a),"dropdown"==this.opts.type){var b=null;$.each(this.opts.dropdownValues,function(c,d){(null===b||Math.abs(d-a)'),this.$el.on("click",".drawing-board-control-download-button",$.proxy(function(a){this.board.downloadImg(),a.preventDefault()},this))}}); \ No newline at end of file diff --git a/ui/media/favicon-16x16.png b/ui/media/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..7a33c0b105a1cfb63f05a03e28f4528266eae2e8 Binary files /dev/null and b/ui/media/favicon-16x16.png differ diff --git a/ui/media/favicon-32x32.png b/ui/media/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..3b21168b534158c9e7d23b79fe3f852f8e479b6b Binary files /dev/null and b/ui/media/favicon-32x32.png differ diff --git a/ui/media/jquery-3.6.1.min.js b/ui/media/jquery-3.6.1.min.js new file mode 100644 index 0000000000000000000000000000000000000000..2c69bc908b10d854c2c3fe6e3268dcffe20e1b5a --- /dev/null +++ b/ui/media/jquery-3.6.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 changePreviewImages(previewImageField.value) + +let modifierCardSizeSlider = document.querySelector('#modifier-card-size-slider') +modifierCardSizeSlider.onchange = () => resizeModifierCards(modifierCardSizeSlider.value) + +// let previewPrompt = document.querySelector('#preview-prompt') + +let showConfigToggle = document.querySelector('#configToggleBtn') +// let configBox = document.querySelector('#config') +// let outputMsg = document.querySelector('#outputMsg') +// let progressBar = document.querySelector("#progressBar") + +let soundToggle = document.querySelector('#sound_toggle') + +let serverStatusColor = document.querySelector('#server-status-color') +let serverStatusMsg = document.querySelector('#server-status-msg') + +let advancedPanelHandle = document.querySelector("#editor-settings .collapsible") +let modifiersPanelHandle = document.querySelector("#editor-modifiers .collapsible") +let inpaintingEditorContainer = document.querySelector('#inpaintingEditor') +let inpaintingEditor = new DrawingBoard.Board('inpaintingEditor', { + color: "#ffffff", + background: false, + size: 30, + webStorage: false, + controls: [{'DrawingMode': {'filler': false}}, 'Size', 'Navigation'] +}) +let inpaintingEditorCanvasBackground = document.querySelector('.drawing-board-canvas-wrapper') + +document.querySelector('.drawing-board-control-navigation-back').innerHTML = '' +document.querySelector('.drawing-board-control-navigation-forward').innerHTML = '' + +let maskResetButton = document.querySelector('.drawing-board-control-navigation-reset') +maskResetButton.innerHTML = 'Clear' +maskResetButton.style.fontWeight = 'normal' +maskResetButton.style.fontSize = '10pt' + +let serverStatus = 'offline' +let activeTags = [] +let modifiers = [] +let lastPromptUsed = '' +let bellPending = false + +let taskQueue = [] +let currentTask = null + +const modifierThumbnailPath = 'media/modifier-thumbnails' +const activeCardClass = 'modifier-card-active' + +function getLocalStorageItem(key, fallback) { + let item = localStorage.getItem(key) + if (item === null) { + return fallback + } + + return item +} + +function getLocalStorageBoolItem(key, fallback) { + let item = localStorage.getItem(key) + if (item === null) { + return fallback + } + + return (item === 'true' ? true : false) +} + +function handleBoolSettingChange(key) { + return function(e) { + localStorage.setItem(key, e.target.checked.toString()) + } +} + +function handleStringSettingChange(key) { + return function(e) { + localStorage.setItem(key, e.target.value.toString()) + } +} + +function isSoundEnabled() { + return getLocalStorageBoolItem(SOUND_ENABLED_KEY, true) +} + +function isFaceCorrectionEnabled() { + return getLocalStorageBoolItem(USE_FACE_CORRECTION_KEY, false) +} + +function isUpscalingEnabled() { + return getLocalStorageBoolItem(USE_UPSCALING_KEY, false) +} + +function isShowOnlyFilteredImageEnabled() { + return getLocalStorageBoolItem(SHOW_ONLY_FILTERED_IMAGE_KEY, true) +} + +function isSaveToDiskEnabled() { + return getLocalStorageBoolItem(SAVE_TO_DISK_KEY, false) +} + +function isUseCPUEnabled() { + return getLocalStorageBoolItem(USE_CPU_KEY, false) +} + +function isUseFullPrecisionEnabled() { + return getLocalStorageBoolItem(USE_FULL_PRECISION_KEY, false) +} + +function isUseTurboModeEnabled() { + return getLocalStorageBoolItem(USE_TURBO_MODE_KEY, true) +} + +function getSavedDiskPath() { + return getLocalStorageItem(DISK_PATH_KEY, '') +} + +function isAdvancedPanelOpenEnabled() { + return getLocalStorageBoolItem(ADVANCED_PANEL_OPEN_KEY, false) +} + +function isModifiersPanelOpenEnabled() { + return getLocalStorageBoolItem(MODIFIERS_PANEL_OPEN_KEY, false) +} + +function isStreamImageProgressEnabled() { + return getLocalStorageBoolItem(STREAM_IMAGE_PROGRESS_KEY, false) +} + +function setStatus(statusType, msg, msgType) { + if (statusType !== 'server') { + return + } + + if (msgType == 'error') { + // msg = '' + msg + '' + serverStatusColor.style.color = 'red' + serverStatusMsg.style.color = 'red' + serverStatusMsg.innerText = 'Stable Diffusion has stopped' + } else if (msgType == 'success') { + // msg = '' + msg + '' + serverStatusColor.style.color = 'green' + serverStatusMsg.style.color = 'green' + serverStatusMsg.innerText = 'Stable Diffusion is ready' + serverStatus = 'online' + } +} + +function logMsg(msg, level, outputMsg) { + if (level === 'error') { + outputMsg.innerHTML = 'Error: ' + msg + '' + } else if (level === 'warn') { + outputMsg.innerHTML = 'Warning: ' + msg + '' + } else { + outputMsg.innerText = msg + } + + console.log(level, msg) +} + +function logError(msg, res, outputMsg) { + logMsg(msg, 'error', outputMsg) + + console.log('request error', res) + setStatus('request', 'error', 'error') +} + +function playSound() { + const audio = new Audio('/media/ding.mp3') + audio.volume = 0.2 + audio.play() +} + +async function healthCheck() { + try { + let res = await fetch('/ping') + res = await res.json() + + if (res[0] == 'OK') { + setStatus('server', 'online', 'success') + } else { + setStatus('server', 'offline', 'error') + } + } catch (e) { + setStatus('server', 'offline', 'error') + } +} + +function showImages(req, res, outputContainer, livePreview) { + let imageItemElements = outputContainer.querySelectorAll('.imgItem') + + res.output.reverse() + + res.output.forEach((result, index) => { + if(typeof res != 'object') return + + const imageData = result?.data || result?.path + '?t=' + new Date().getTime(), + imageSeed = result?.seed, + imageWidth = req.width, + imageHeight = req.height; + + if (!imageData.includes('/')) { + // res contained no data for the image, stop execution + + setStatus('request', 'invalid image', 'error') + return + } + + let imageItemElem = (index < imageItemElements.length ? imageItemElements[index] : null) + + if(!imageItemElem) { + imageItemElem = document.createElement('div') + imageItemElem.className = 'imgItem' + imageItemElem.innerHTML = ` +
+ +
+ + + +
+
+ ` + + const useAsInputBtn = imageItemElem.querySelector('.imgUseBtn'), + saveImageBtn = imageItemElem.querySelector('.imgSaveBtn'); + + useAsInputBtn.addEventListener('click', getUseAsInputHandler(imageItemElem)) + saveImageBtn.addEventListener('click', getSaveImageHandler(imageItemElem, req['output_format'])) + + outputContainer.appendChild(imageItemElem) + } + + const imageElem = imageItemElem.querySelector('img'), + imageSeedLabel = imageItemElem.querySelector('.imgSeedLabel'); + + imageElem.src = imageData + imageElem.width = parseInt(imageWidth) + imageElem.height = parseInt(imageHeight) + imageElem.setAttribute('data-seed', imageSeed) + + const imageInfo = imageItemElem.querySelector('.imgItemInfo') + imageInfo.style.visibility = (livePreview ? 'hidden' : 'visible') + + imageSeedLabel.innerText = 'Seed: ' + imageSeed + }) +} + +function getUseAsInputHandler(imageItemElem) { + return function() { + const imageElem = imageItemElem.querySelector('img') + const imgData = imageElem.src + const imageSeed = imageElem.getAttribute('data-seed') + + initImageSelector.value = null + initImagePreview.src = imgData + + initImagePreviewContainer.style.display = 'block' + inpaintingEditorContainer.style.display = 'none' + promptStrengthContainer.style.display = 'block' + maskSetting.checked = false + samplerSelectionContainer.style.display = 'none' + + // maskSetting.style.display = 'block' + + randomSeedField.checked = false + seedField.value = imageSeed + seedField.disabled = false + } +} + +function getSaveImageHandler(imageItemElem, outputFormat) { + return function() { + const imageElem = imageItemElem.querySelector('img') + const imgData = imageElem.src + const imageSeed = imageElem.getAttribute('data-seed') + + const imgDownload = document.createElement('a') + imgDownload.download = createFileName(imageSeed, outputFormat) + imgDownload.href = imgData + imgDownload.click() + } +} + +// makes a single image. don't call this directly, use makeImage() instead +async function doMakeImage(task) { + if (task.stopped) { + return + } + + const reqBody = task.reqBody + const batchCount = task.batchCount + const outputContainer = document.createElement('div') + + outputContainer.className = 'img-batch' + task.outputContainer.insertBefore(outputContainer, task.outputContainer.firstChild) + + const outputMsg = task['outputMsg'] + const previewPrompt = task['previewPrompt'] + const progressBar = task['progressBar'] + + let res = '' + let seed = reqBody['seed'] + let numOutputs = parseInt(reqBody['num_outputs']) + + try { + res = await fetch('/image', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(reqBody) + }) + + let reader = res.body.getReader() + let textDecoder = new TextDecoder() + let finalJSON = '' + let prevTime = -1 + while (true) { + try { + let t = new Date().getTime() + + const {value, done} = await reader.read() + if (done) { + break + } + + let timeTaken = (prevTime === -1 ? -1 : t - prevTime) + + let jsonStr = textDecoder.decode(value) + + try { + let stepUpdate = JSON.parse(jsonStr) + + if (stepUpdate.step === undefined) { + finalJSON += jsonStr + } else { + let batchSize = stepUpdate.total_steps + let overallStepCount = stepUpdate.step + task.batchesDone * batchSize + let totalSteps = batchCount * batchSize + let percent = 100 * (overallStepCount / totalSteps) + percent = (percent > 100 ? 100 : percent) + percent = percent.toFixed(0) + + stepsRemaining = totalSteps - overallStepCount + stepsRemaining = (stepsRemaining < 0 ? 0 : stepsRemaining) + timeRemaining = (timeTaken === -1 ? '' : stepsRemaining * timeTaken) // ms + + outputMsg.innerHTML = `Batch ${task.batchesDone+1} of ${batchCount}` + outputMsg.innerHTML += `. Generating image(s): ${percent}%` + + timeRemaining = (timeTaken !== -1 ? millisecondsToStr(timeRemaining) : '') + + outputMsg.innerHTML += `. Time remaining (approx): ${timeRemaining}` + outputMsg.style.display = 'block' + + if (stepUpdate.output !== undefined) { + showImages(reqBody, stepUpdate, outputContainer, true) + } + } + } catch (e) { + finalJSON += jsonStr + } + + prevTime = t + } catch (e) { + logError('Stable Diffusion had an error. Please check the logs in the command-line window.', res, outputMsg) + res = undefined + throw e + } + } + + if (res.status != 200) { + if (serverStatus === 'online') { + logError('Stable Diffusion had an error: ' + await res.text(), res, outputMsg) + } else { + logError("Stable Diffusion is still starting up, please wait. If this goes on beyond a few minutes, Stable Diffusion has probably crashed. Please check the error message in the command-line window.", res, outputMsg) + } + res = undefined + progressBar.style.display = 'none' + } else { + if (finalJSON !== undefined && finalJSON.indexOf('}{') !== -1) { + // hack for a middleman buffering all the streaming updates, and unleashing them + // on the poor browser in one shot. + // this results in having to parse JSON like {"step": 1}{"step": 2}...{"status": "succeeded"..} + // which is obviously invalid. + // So we need to just extract the last {} section, starting from "status" to the end of the response + + let lastChunkIdx = finalJSON.lastIndexOf('}{') + if (lastChunkIdx !== -1) { + let remaining = finalJSON.substring(lastChunkIdx) + finalJSON = remaining.substring(1) + } + } + + res = JSON.parse(finalJSON) + + if (res.status !== 'succeeded') { + let msg = '' + if (res.detail !== undefined) { + msg = res.detail + + if (msg.toLowerCase().includes('out of memory')) { + msg += `

+ Suggestions: +
+ 1. If you have set an initial image, please try reducing its dimension to ${MAX_INIT_IMAGE_DIMENSION}x${MAX_INIT_IMAGE_DIMENSION} or smaller.
+ 2. Try disabling the 'Turbo mode' under 'Advanced Settings'.
+ 3. Try generating a smaller image.
` + } + } else { + msg = res + } + logError(msg, res, outputMsg) + res = undefined + } + } + } catch (e) { + console.log('request error', e) + logError('Stable Diffusion had an error. Please check the logs in the command-line window.

' + e + '
' + e.stack + '
', res, outputMsg) + setStatus('request', 'error', 'error') + progressBar.style.display = 'none' + res = undefined + } + + if (!res) return false + + lastPromptUsed = reqBody['prompt'] + + showImages(reqBody, res, outputContainer, false) + + return true +} + +async function checkTasks() { + if (taskQueue.length === 0) { + setStatus('request', 'done', 'success') + setTimeout(checkTasks, 500) + stopImageBtn.style.display = 'none' + makeImageBtn.innerHTML = 'Make Image' + + currentTask = null + + if (bellPending) { + if (isSoundEnabled()) { + playSound() + } + bellPending = false + } + + return + } + + setStatus('request', 'fetching..') + + stopImageBtn.style.display = 'block' + makeImageBtn.innerHTML = 'Enqueue Next Image' + bellPending = true + + previewTools.style.display = 'block' + + let task = taskQueue.pop() + currentTask = task + + let time = new Date().getTime() + + let successCount = 0 + + task.isProcessing = true + task['stopTask'].innerHTML = ' Stop' + task['taskStatusLabel'].innerText = "Processing" + task['taskStatusLabel'].className += " activeTaskLabel" + + for (let i = 0; i < task.batchCount; i++) { + task.reqBody['seed'] = task.seed + (i * task.reqBody['num_outputs']) + + let success = await doMakeImage(task) + task.batchesDone++ + + if (!task.isProcessing) { + break + } + + if (success) { + successCount++ + } + } + + task.isProcessing = false + task['stopTask'].innerHTML = ' Remove' + task['taskStatusLabel'].style.display = 'none' + + time = new Date().getTime() - time + time /= 1000 + + if (successCount === task.batchCount) { + task.outputMsg.innerText = 'Processed ' + task.numOutputsTotal + ' images in ' + time + ' seconds' + + // setStatus('request', 'done', 'success') + } else { + if (task.outputMsg.innerText.toLowerCase().indexOf('error') === -1) { + task.outputMsg.innerText = 'Task ended after ' + time + ' seconds' + } + } + + if (randomSeedField.checked) { + seedField.value = task.seed + } + + currentTask = null + + setTimeout(checkTasks, 10) +} +setTimeout(checkTasks, 0) + +function makeImage() { + if (serverStatus !== 'online') { + alert('The server is still starting up..') + return + } + + let prompts = promptField.value + prompts = prompts.split('\n') + prompts.forEach(prompt => { + prompt = prompt.trim() + if (prompt === '') { + return + } + + createTask(prompt) + }) + + initialText.style.display = 'none' +} + +function createTask(prompt) { + let task = { + stopped: false, + batchesDone: 0 + } + + let seed = (randomSeedField.checked ? Math.floor(Math.random() * 10000000) : parseInt(seedField.value)) + let numOutputsTotal = parseInt(numOutputsTotalField.value) + let numOutputsParallel = parseInt(numOutputsParallelField.value) + let batchCount = Math.ceil(numOutputsTotal / numOutputsParallel) + let batchSize = numOutputsParallel + + let streamImageProgress = (numOutputsTotal > 50 ? false : streamImageProgressField.checked) + + if (activeTags.length > 0) { + let promptTags = activeTags.map(x => x.name).join(", ") + prompt += ", " + promptTags + } + + let reqBody = { + session_id: sessionId, + prompt: prompt, + negative_prompt: negativePromptField.value.trim(), + num_outputs: batchSize, + num_inference_steps: numInferenceStepsField.value, + guidance_scale: guidanceScaleField.value, + width: widthField.value, + height: heightField.value, + // allow_nsfw: allowNSFWField.checked, + turbo: turboField.checked, + use_cpu: useCPUField.checked, + use_full_precision: useFullPrecisionField.checked, + use_stable_diffusion_model: stableDiffusionModelField.value, + stream_progress_updates: true, + stream_image_progress: streamImageProgress, + show_only_filtered_image: showOnlyFilteredImageField.checked, + output_format: outputFormatField.value + } + + if (IMAGE_REGEX.test(initImagePreview.src)) { + reqBody['init_image'] = initImagePreview.src + reqBody['prompt_strength'] = promptStrengthField.value + + // if (IMAGE_REGEX.test(maskImagePreview.src)) { + // reqBody['mask'] = maskImagePreview.src + // } + if (maskSetting.checked) { + reqBody['mask'] = inpaintingEditor.getImg() + } + + reqBody['sampler'] = 'ddim' + } else { + reqBody['sampler'] = samplerField.value + } + + if (saveToDiskField.checked && diskPathField.value.trim() !== '') { + reqBody['save_to_disk_path'] = diskPathField.value.trim() + } + + if (useFaceCorrectionField.checked) { + reqBody['use_face_correction'] = 'GFPGANv1.3' + } + + if (useUpscalingField.checked) { + reqBody['use_upscale'] = upscaleModelField.value + } + + let taskConfig = `Seed: ${seed}, Sampler: ${reqBody['sampler']}, Inference Steps: ${numInferenceStepsField.value}, Guidance Scale: ${guidanceScaleField.value}, Model: ${stableDiffusionModelField.value}` + + if (negativePromptField.value.trim() !== '') { + taskConfig += `, Negative Prompt: ${negativePromptField.value.trim()}` + } + + if (reqBody['init_image'] !== undefined) { + taskConfig += `, Prompt Strength: ${promptStrengthField.value}` + } + + if (useFaceCorrectionField.checked) { + taskConfig += `, Fix Faces: ${reqBody['use_face_correction']}` + } + + if (useUpscalingField.checked) { + taskConfig += `, Upscale: ${reqBody['use_upscale']}` + } + + task['reqBody'] = reqBody + task['seed'] = seed + task['batchCount'] = batchCount + task['isProcessing'] = false + + let taskEntry = document.createElement('div') + taskEntry.className = 'imageTaskContainer' + taskEntry.innerHTML = `
Enqueued
+ +
+
${taskConfig}
+
+
+
+
+
` + + createCollapsibles(taskEntry) + + task['numOutputsTotal'] = numOutputsTotal + task['taskStatusLabel'] = taskEntry.querySelector('.taskStatusLabel') + task['outputContainer'] = taskEntry.querySelector('.img-preview') + task['outputMsg'] = taskEntry.querySelector('.outputMsg') + task['previewPrompt'] = taskEntry.querySelector('.preview-prompt') + task['progressBar'] = taskEntry.querySelector('.progressBar') + task['stopTask'] = taskEntry.querySelector('.stopTask') + + task['stopTask'].addEventListener('click', async function() { + if (task['isProcessing']) { + task.isProcessing = false + try { + let res = await fetch('/image/stop') + } catch (e) { + console.log(e) + } + } else { + let idx = taskQueue.indexOf(task) + if (idx >= 0) { + taskQueue.splice(idx, 1) + } + + taskEntry.remove() + } + }) + + imagePreview.insertBefore(taskEntry, previewTools.nextSibling) + + task['previewPrompt'].innerText = prompt + + taskQueue.unshift(task) +} + +// create a file name with embedded prompt and metadata +// for easier cateloging and comparison +function createFileName(seed, outputFormat) { + + // Most important information is the prompt + let underscoreName = lastPromptUsed.replace(/[^a-zA-Z0-9]/g, '_') + underscoreName = underscoreName.substring(0, 100) + const steps = numInferenceStepsField.value + const guidance = guidanceScaleField.value + + // name and the top level metadata + let fileName = `${underscoreName}_Seed-${seed}_Steps-${steps}_Guidance-${guidance}` + + // add the tags + // let tags = [] + // let tagString = '' + // document.querySelectorAll(modifyTagsSelector).forEach(function(tag) { + // tags.push(tag.innerHTML) + // }) + + // join the tags with a pipe + // if (activeTags.length > 0) { + // tagString = '_Tags-' + // tagString += tags.join('|') + // } + + // // append empty or populated tags + // fileName += `${tagString}` + + // add the file extension + fileName += '.' + (outputFormat === 'png' ? 'png' : 'jpeg') + + return fileName +} + +async function stopAllTasks() { + taskQueue.forEach(task => { + task.isProcessing = false + }) + taskQueue = [] + + if (currentTask !== null) { + currentTask.isProcessing = false + } + + try { + let res = await fetch('/image/stop') + } catch (e) { + console.log(e) + } +} + +clearAllPreviewsBtn.addEventListener('click', async function() { + await stopAllTasks() + + let taskEntries = document.querySelectorAll('.imageTaskContainer') + taskEntries.forEach(task => { + task.remove() + }) + + previewTools.style.display = 'none' + initialText.style.display = 'block' +}) + +stopImageBtn.addEventListener('click', async function() { + await stopAllTasks() +}) + +soundToggle.addEventListener('click', handleBoolSettingChange(SOUND_ENABLED_KEY)) +soundToggle.checked = isSoundEnabled() + +saveToDiskField.checked = isSaveToDiskEnabled() +diskPathField.disabled = !saveToDiskField.checked + +useFaceCorrectionField.addEventListener('click', handleBoolSettingChange(USE_FACE_CORRECTION_KEY)) +useFaceCorrectionField.checked = isFaceCorrectionEnabled() + +useUpscalingField.checked = isUpscalingEnabled() +upscaleModelField.disabled = !useUpscalingField.checked + +showOnlyFilteredImageField.addEventListener('click', handleBoolSettingChange(SHOW_ONLY_FILTERED_IMAGE_KEY)) +showOnlyFilteredImageField.checked = isShowOnlyFilteredImageEnabled() + +useCPUField.addEventListener('click', handleBoolSettingChange(USE_CPU_KEY)) +useCPUField.checked = isUseCPUEnabled() + +useFullPrecisionField.addEventListener('click', handleBoolSettingChange(USE_FULL_PRECISION_KEY)) +useFullPrecisionField.checked = isUseFullPrecisionEnabled() + +turboField.addEventListener('click', handleBoolSettingChange(USE_TURBO_MODE_KEY)) +turboField.checked = isUseTurboModeEnabled() + +streamImageProgressField.addEventListener('click', handleBoolSettingChange(STREAM_IMAGE_PROGRESS_KEY)) +streamImageProgressField.checked = isStreamImageProgressEnabled() + +diskPathField.addEventListener('change', handleStringSettingChange(DISK_PATH_KEY)) + +saveToDiskField.addEventListener('click', function(e) { + diskPathField.disabled = !this.checked + handleBoolSettingChange(SAVE_TO_DISK_KEY)(e) +}) + +useUpscalingField.addEventListener('click', function(e) { + upscaleModelField.disabled = !this.checked + handleBoolSettingChange(USE_UPSCALING_KEY)(e) +}) + +function setPanelOpen(panelHandle) { + let panelContents = panelHandle.nextElementSibling + panelHandle.classList.add('active') + panelContents.style.display = 'block' +} + +if (isAdvancedPanelOpenEnabled()) { + setPanelOpen(advancedPanelHandle) +} + +if (isModifiersPanelOpenEnabled()) { + setPanelOpen(modifiersPanelHandle) +} + +makeImageBtn.addEventListener('click', makeImage) + + +function updateGuidanceScale() { + guidanceScaleField.value = guidanceScaleSlider.value / 10 +} + +function updateGuidanceScaleSlider() { + if (guidanceScaleField.value < 0) { + guidanceScaleField.value = 0 + } else if (guidanceScaleField.value > 50) { + guidanceScaleField.value = 50 + } + + guidanceScaleSlider.value = guidanceScaleField.value * 10 +} + +guidanceScaleSlider.addEventListener('input', updateGuidanceScale) +guidanceScaleField.addEventListener('input', updateGuidanceScaleSlider) +updateGuidanceScale() + +function updatePromptStrength() { + promptStrengthField.value = promptStrengthSlider.value / 100 +} + +function updatePromptStrengthSlider() { + if (promptStrengthField.value < 0) { + promptStrengthField.value = 0 + } else if (promptStrengthField.value > 0.99) { + promptStrengthField.value = 0.99 + } + + promptStrengthSlider.value = promptStrengthField.value * 100 +} + +promptStrengthSlider.addEventListener('input', updatePromptStrength) +promptStrengthField.addEventListener('input', updatePromptStrengthSlider) +updatePromptStrength() + +useBetaChannelField.addEventListener('click', async function(e) { + if (serverStatus !== 'online') { + // logError('The server is still starting up..') + alert('The server is still starting up..') + e.preventDefault() + return false + } + + let updateBranch = (this.checked ? 'beta' : 'main') + + try { + let res = await fetch('/app_config', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + 'update_branch': updateBranch + }) + }) + res = await res.json() + + console.log('set config status response', res) + } catch (e) { + console.log('set config status error', e) + } +}) + +async function getAppConfig() { + try { + let res = await fetch('/app_config') + config = await res.json() + + if (config.update_branch === 'beta') { + useBetaChannelField.checked = true + updateBranchLabel.innerText = "(beta)" + } + + console.log('get config status response', config) + } catch (e) { + console.log('get config status error', e) + } +} + +async function getModels() { + try { + let res = await fetch('/models') + models = await res.json() + + let activeModel = models['active'] + let modelOptions = models['options'] + let stableDiffusionOptions = modelOptions['stable-diffusion'] + + stableDiffusionOptions.forEach(modelName => { + let modelOption = document.createElement('option') + modelOption.value = modelName + modelOption.innerText = modelName + + if (modelName === activeModel['stable-diffusion']) { + modelOption.selected = true + } + + stableDiffusionModelField.appendChild(modelOption) + }) + + console.log('get models response', config) + } catch (e) { + console.log('get models error', e) + } +} + +function checkRandomSeed() { + if (randomSeedField.checked) { + seedField.disabled = true + seedField.value = "0" + } else { + seedField.disabled = false + } +} +randomSeedField.addEventListener('input', checkRandomSeed) +checkRandomSeed() + +function showInitImagePreview() { + if (initImageSelector.files.length === 0) { + initImagePreviewContainer.style.display = 'none' + // inpaintingEditorContainer.style.display = 'none' + promptStrengthContainer.style.display = 'none' + // maskSetting.style.display = 'none' + return + } + + let reader = new FileReader() + let file = initImageSelector.files[0] + + reader.addEventListener('load', function() { + // console.log(file.name, reader.result) + initImagePreview.src = reader.result + initImagePreviewContainer.style.display = 'block' + inpaintingEditorContainer.style.display = 'none' + promptStrengthContainer.style.display = 'block' + samplerSelectionContainer.style.display = 'none' + // maskSetting.checked = false + }) + + if (file) { + reader.readAsDataURL(file) + } +} +initImageSelector.addEventListener('change', showInitImagePreview) +showInitImagePreview() + +initImagePreview.addEventListener('load', function() { + inpaintingEditorCanvasBackground.style.backgroundImage = "url('" + this.src + "')" + // maskSetting.style.display = 'block' + // inpaintingEditorContainer.style.display = 'block' +}) + +initImageClearBtn.addEventListener('click', function() { + initImageSelector.value = null + // maskImageSelector.value = null + + initImagePreview.src = '' + // maskImagePreview.src = '' + maskSetting.checked = false + + initImagePreviewContainer.style.display = 'none' + // inpaintingEditorContainer.style.display = 'none' + // maskImagePreviewContainer.style.display = 'none' + + // maskSetting.style.display = 'none' + + promptStrengthContainer.style.display = 'none' + samplerSelectionContainer.style.display = 'block' +}) + +maskSetting.addEventListener('click', function() { + inpaintingEditorContainer.style.display = (this.checked ? 'block' : 'none') +}) + +promptsFromFileBtn.addEventListener('click', function() { + promptsFromFileSelector.click() +}) + +promptsFromFileSelector.addEventListener('change', function() { + if (promptsFromFileSelector.files.length === 0) { + return + } + + let reader = new FileReader() + let file = promptsFromFileSelector.files[0] + + reader.addEventListener('load', function() { + promptField.value = reader.result + }) + + if (file) { + reader.readAsText(file) + } +}) + +// function showMaskImagePreview() { +// if (maskImageSelector.files.length === 0) { +// // maskImagePreviewContainer.style.display = 'none' +// return +// } + +// let reader = new FileReader() +// let file = maskImageSelector.files[0] + +// reader.addEventListener('load', function() { +// // maskImagePreview.src = reader.result +// // maskImagePreviewContainer.style.display = 'block' +// }) + +// if (file) { +// reader.readAsDataURL(file) +// } +// } +// maskImageSelector.addEventListener('change', showMaskImagePreview) +// showMaskImagePreview() + +// maskImageClearBtn.addEventListener('click', function() { +// maskImageSelector.value = null +// maskImagePreview.src = '' +// // maskImagePreviewContainer.style.display = 'none' +// }) + +// https://stackoverflow.com/a/8212878 +function millisecondsToStr(milliseconds) { + function numberEnding (number) { + return (number > 1) ? 's' : '' + } + + var temp = Math.floor(milliseconds / 1000) + var hours = Math.floor((temp %= 86400) / 3600) + var s = '' + if (hours) { + s += hours + ' hour' + numberEnding(hours) + ' ' + } + var minutes = Math.floor((temp %= 3600) / 60) + if (minutes) { + s += minutes + ' minute' + numberEnding(minutes) + ' ' + } + var seconds = temp % 60 + if (!hours && minutes < 4 && seconds) { + s += seconds + ' second' + numberEnding(seconds) + } + + return s +} + +// https://gomakethings.com/finding-the-next-and-previous-sibling-elements-that-match-a-selector-with-vanilla-js/ +function getNextSibling(elem, selector) { + // Get the next sibling element + var sibling = elem.nextElementSibling + + // If there's no selector, return the first sibling + if (!selector) return sibling + + // If the sibling matches our selector, use it + // If not, jump to the next sibling and continue the loop + while (sibling) { + if (sibling.matches(selector)) return sibling + sibling = sibling.nextElementSibling + } +} + +function createCollapsibles(node) { + if (!node) { + node = document + } + + let collapsibles = node.querySelectorAll(".collapsible") + collapsibles.forEach(function(c) { + let handle = document.createElement('span') + handle.className = 'collapsible-handle' + + if (c.className.indexOf('active') !== -1) { + handle.innerHTML = '➖' // minus + } else { + handle.innerHTML = '➕' // plus + } + c.insertBefore(handle, c.firstChild) + + c.addEventListener('click', function() { + this.classList.toggle("active") + let content = getNextSibling(this, '.collapsible-content') + if (content.style.display === "block") { + content.style.display = "none" + handle.innerHTML = '➕' // plus + } else { + content.style.display = "block" + handle.innerHTML = '➖' // minus + } + + if (this == advancedPanelHandle) { + let state = (content.style.display === 'block' ? 'true' : 'false') + localStorage.setItem(ADVANCED_PANEL_OPEN_KEY, state) + } else if (this == modifiersPanelHandle) { + let state = (content.style.display === 'block' ? 'true' : 'false') + localStorage.setItem(MODIFIERS_PANEL_OPEN_KEY, state) + } + }) + }) +} +createCollapsibles() + +function refreshTagsList() { + editorModifierTagsList.innerHTML = '' + + if (activeTags.length == 0) { + editorTagsContainer.style.display = 'none' + return + } else { + editorTagsContainer.style.display = 'block' + } + + activeTags.forEach((tag, index) => { + tag.element.querySelector('.modifier-card-image-overlay').innerText = '-' + tag.element.classList.add('modifier-card-tiny') + + editorModifierTagsList.appendChild(tag.element) + + tag.element.addEventListener('click', () => { + let idx = activeTags.indexOf(tag) + + if (idx !== -1) { + activeTags[idx].originElement.classList.remove(activeCardClass) + activeTags[idx].originElement.querySelector('.modifier-card-image-overlay').innerText = '+' + + activeTags.splice(idx, 1) + refreshTagsList() + } + }) + }) + + let brk = document.createElement('br') + brk.style.clear = 'both' + editorModifierTagsList.appendChild(brk) +} + +async function getDiskPath() { + try { + let diskPath = getSavedDiskPath() + + if (diskPath !== '') { + diskPathField.value = diskPath + return + } + + let res = await fetch('/output_dir') + if (res.status === 200) { + res = await res.json() + res = res[0] + + document.querySelector('#diskPath').value = res + } + } catch (e) { + console.log('error fetching output dir path', e) + } +} + +function createModifierCard(name, previews) { + const modifierCard = document.createElement('div') + modifierCard.className = 'modifier-card' + modifierCard.innerHTML = ` +
+
+
+
+

+ Modifier Image +
+
+

+
` + + const image = modifierCard.querySelector('.modifier-card-image') + const errorText = modifierCard.querySelector('.modifier-card-error-label') + const label = modifierCard.querySelector('.modifier-card-label') + + errorText.innerText = 'No Image' + + if (typeof previews == 'object') { + image.src = previews[0]; // portrait + image.setAttribute('preview-type', 'portrait') + } else { + image.remove() + } + + const maxLabelLength = 30 + const nameWithoutBy = name.replace('by ', '') + + if(nameWithoutBy.length <= maxLabelLength) { + label.querySelector('p').innerText = nameWithoutBy + } else { + const tooltipText = document.createElement('span') + tooltipText.className = 'tooltip-text' + tooltipText.innerText = name + + label.classList.add('tooltip') + label.appendChild(tooltipText) + + label.querySelector('p').innerText = nameWithoutBy.substring(0, maxLabelLength) + '...' + } + + return modifierCard +} + +function changePreviewImages(val) { + const previewImages = document.querySelectorAll('.modifier-card-image-container img') + + let previewArr = [] + + modifiers.map(x => x.modifiers).forEach(x => previewArr.push(...x.map(m => m.previews))) + + previewArr = previewArr.map(x => { + let obj = {} + + x.forEach(preview => { + obj[preview.name] = preview.path + }) + + return obj + }) + + previewImages.forEach(previewImage => { + const currentPreviewType = previewImage.getAttribute('preview-type') + const relativePreviewPath = previewImage.src.split(modifierThumbnailPath + '/').pop() + + const previews = previewArr.find(preview => relativePreviewPath == preview[currentPreviewType]) + + if(typeof previews == 'object') { + let preview = null + + if (val == 'portrait') { + preview = previews.portrait + } + else if (val == 'landscape') { + preview = previews.landscape + } + + if(preview != null) { + previewImage.src = `${modifierThumbnailPath}/${preview}` + previewImage.setAttribute('preview-type', val) + } + } + }) +} + +function resizeModifierCards(val) { + const cardSizePrefix = 'modifier-card-size_' + const modifierCardClass = 'modifier-card' + + const modifierCards = document.querySelectorAll(`.${modifierCardClass}`) + const cardSize = n => `${cardSizePrefix}${n}` + + modifierCards.forEach(card => { + // remove existing size classes + const classes = card.className.split(' ').filter(c => !c.startsWith(cardSizePrefix)) + card.className = classes.join(' ').trim() + + if(val != 0) + card.classList.add(cardSize(val)) + }) +} + +async function loadModifiers() { + try { + let res = await fetch('/modifiers.json?v=2') + if (res.status === 200) { + res = await res.json() + + modifiers = res; // update global variable + + res.forEach((modifierGroup, idx) => { + const title = modifierGroup.category + const modifiers = modifierGroup.modifiers + + const titleEl = document.createElement('h5') + titleEl.className = 'collapsible' + titleEl.innerText = title + + const modifiersEl = document.createElement('div') + modifiersEl.classList.add('collapsible-content', 'editor-modifiers-leaf') + + if (idx == 0) { + titleEl.className += ' active' + modifiersEl.style.display = 'block' + } + + modifiers.forEach(modObj => { + const modifierName = modObj.modifier + const modifierPreviews = modObj?.previews?.map(preview => `${modifierThumbnailPath}/${preview.path}`) + + const modifierCard = createModifierCard(modifierName, modifierPreviews) + + if(typeof modifierCard == 'object') { + modifiersEl.appendChild(modifierCard) + + modifierCard.addEventListener('click', () => { + if (activeTags.map(x => x.name).includes(modifierName)) { + // remove modifier from active array + activeTags = activeTags.filter(x => x.name != modifierName) + modifierCard.classList.remove(activeCardClass) + + modifierCard.querySelector('.modifier-card-image-overlay').innerText = '+' + } else { + // add modifier to active array + activeTags.push({ + 'name': modifierName, + 'element': modifierCard.cloneNode(true), + 'originElement': modifierCard, + 'previews': modifierPreviews + }) + + modifierCard.classList.add(activeCardClass) + + modifierCard.querySelector('.modifier-card-image-overlay').innerText = '-' + } + + refreshTagsList() + }) + } + }) + + let brk = document.createElement('br') + brk.style.clear = 'both' + modifiersEl.appendChild(brk) + + let e = document.createElement('div') + e.appendChild(titleEl) + e.appendChild(modifiersEl) + + editorModifierEntries.appendChild(e) + }) + + createCollapsibles(editorModifierEntries) + } + } catch (e) { + console.log('error fetching modifiers', e) + } +} \ No newline at end of file diff --git a/ui/media/modifier-thumbnails.css b/ui/media/modifier-thumbnails.css new file mode 100644 index 0000000000000000000000000000000000000000..22af308371d1f672f5fb380f9532fbac20e38da8 --- /dev/null +++ b/ui/media/modifier-thumbnails.css @@ -0,0 +1,216 @@ +.modifier-card { + box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); + transition: 0.1s; + border-radius: 7px; + margin: 3pt 3pt; + float: left; + width: 8em; + height: 11.5em; + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 8em 3.5em; + gap: 0px 0px; + grid-auto-flow: row; + grid-template-areas: + "modifier-card-image-container" + "modifier-card-container"; + border: 2px solid rgba(255, 255, 255, .05); + cursor: pointer; +} +.modifier-card-size_5 { + width: 18em; + grid-template-rows: 18em 3.5em; + height: 21.5em; +} +.modifier-card-size_5 .modifier-card-image-overlay { + font-size: 8em; +} +.modifier-card-size_4 { + width: 14em; + grid-template-rows: 14em 3.5em; + height: 17.5em; +} +.modifier-card-size_4 .modifier-card-image-overlay { + font-size: 7em; +} +.modifier-card-size_3 { + width: 11em; + grid-template-rows: 11em 3.5em; + height: 14.5em; +} +.modifier-card-size_3 .modifier-card-image-overlay { + font-size: 6em; +} +.modifier-card-size_2 { + width: 10em; + grid-template-rows: 10em 3.5em; + height: 13.5em; +} +.modifier-card-size_2 .modifier-card-image-overlay { + font-size: 6em; +} +.modifier-card-size_1 { + width: 9em; + grid-template-rows: 9em 3.5em; + height: 12.5em; +} +.modifier-card-size_1 .modifier-card-image-overlay { + font-size: 5em; +} +.modifier-card-size_-1 { + width: 7em; + grid-template-rows: 7em 3.5em; + height: 10.5em; +} +.modifier-card-size_-1 .modifier-card-image-overlay { + font-size: 4em; +} +.modifier-card-size_-2 { + width: 6em; + grid-template-rows: 6em 3.5em; + height: 9.5em; +} +.modifier-card-size_-2 .modifier-card-image-overlay { + font-size: 3em; +} +.modifier-card-size_-3 { + width: 5em; + grid-template-rows: 5em 3.5em; + height: 8.5em; +} +.modifier-card-size_-3 .modifier-card-image-overlay { + font-size: 3em; +} +.modifier-card-size_-3 .modifier-card-label { + font-size: 0.8em; +} +.modifier-card-tiny { + width: 6em; + height: 9.5em; + grid-template-rows: 6em 3.5em; +} +.modifier-card-tiny .modifier-card-image-overlay { + font-size: 4em; +} +.modifier-card:hover { + transform: scale(1.05); + box-shadow: 0 5px 16px 5px rgba(0, 0, 0, 0.25); +} +.modifier-card-image-container { + border-radius: 5px 5px 0 0; + width: inherit; + height: 100%; + background-color: rgba(0, 0, 0, .2); + grid-area: modifier-card-image-container; + position: relative; + display: flex; + align-items: center; + justify-content: center; + color: rgb(255 255 255 / 8%); +} +.modifier-card-image-container img { + width: inherit; + height: 100%; + border-radius: 5px 5px 0 0; +} +.modifier-card-image-container * { + position: absolute; +} +.modifier-card-container { + text-align: center; + background-color: rgba(0,0,0,0.5); + border-radius: 0 0 5px 5px; + display: flex; + justify-content: center; + align-items: center; + grid-area: modifier-card-container; + font-weight: 100; + font-size: .9em; + width: inherit; +} +.modifier-card-label { + padding: 4px; + word-break: break-word; +} +.modifier-card-image-overlay { + width: inherit; + height: inherit; + background-color: rgb(0 0 0 / 50%); + z-index: 2; + position: absolute; + border-radius: 5px 5px 0 0; + opacity: 0; + font-size: 5em; + font-weight: 900; + color: rgb(255 255 255 / 50%); + display: flex; + align-items: center; + justify-content: center; +} +.modifier-card-overlay { + width: inherit; + height: inherit; + position: absolute; + z-index: 3; +} +.modifier-card:hover > .modifier-card-image-container .modifier-card-image-overlay { + opacity: 1; +} +.modifier-card:hover > .modifier-card-image-container img { + filter: blur(.1em); +} +.modifier-card:active { + transform: scale(0.95); + box-shadow: 0 5px 16px 5px rgba(0, 0, 0, 0.5); +} +#preview-image { + margin-top: 0.5em; + margin-bottom: 0.5em; +} +.modifier-card-active { + border: 2px solid rgb(179 82 255 / 94%); + box-shadow: 0 0px 10px 0 rgb(170 0 229 / 58%); +} +.tooltip { + position: relative; + display: inline-block; +} +.tooltip .tooltip-text { + visibility: hidden; + width: 120px; + background: rgb(101,97,181); + background: linear-gradient(180deg, rgba(101,97,181,1) 0%, rgba(47,45,85,1) 100%); + color: #fff; + text-align: center; + border-radius: 6px; + padding: 5px; + position: absolute; + z-index: 1; + top: 105%; + left: 39%; + margin-left: -60px; + opacity: 0; + transition: opacity 0.3s; + border: 2px solid rgb(90 100 177 / 94%); + box-shadow: 0px 10px 20px 5px rgb(11 0 58 / 55%); + width: 10em; +} +.tooltip .tooltip-text::after { + content: ""; + position: absolute; + top: -0.9em; + left: 50%; + margin-left: -5px; + border-width: 5px; + border-style: solid; + border-color: transparent transparent rgb(90 100 177 / 94%) transparent; +} +.tooltip:hover .tooltip-text { + visibility: visible; + opacity: 1; +} +#modifier-card-size-slider { + width: 6em; + margin-bottom: 0.5em; + vertical-align: middle; +} diff --git a/ui/media/modifier-thumbnails/artist/artstation/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/artstation/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..66bb6606d6085a46ff7ba65792a0a42ea021d1bd Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/artstation/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/artstation/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/artstation/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ab66239fb5720b21e6af688fd862e3248b0583e3 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/artstation/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_agnes_lawrence_pelton/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_agnes_lawrence_pelton/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06ba6e97466c313e9d9c03bbcc2ffe194c5b2843 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_agnes_lawrence_pelton/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_agnes_lawrence_pelton/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_agnes_lawrence_pelton/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..39a757af0a7c918fcbcda8e4ce3b47d3d7bdc913 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_agnes_lawrence_pelton/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_akihito_yoshida/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_akihito_yoshida/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ef89ca57253d453fbf39e1b460500b0c42f1c995 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_akihito_yoshida/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_akihito_yoshida/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_akihito_yoshida/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..008cba8ff6a0dae53c5df7db5aa7ae70df53d09a Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_akihito_yoshida/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_alex_grey/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_alex_grey/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50a7b7fad299ab046b0f9ef330f9bfbb3be11517 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_alex_grey/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_alex_grey/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_alex_grey/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..465d892acb59e829669e8f83a0797f138cd5cbb6 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_alex_grey/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_alexander_jansson/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_alexander_jansson/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b99ed16ea595f149ed031e8cb937d1721276896d Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_alexander_jansson/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_alexander_jansson/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_alexander_jansson/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c27a25ed7e74a725d2bdc0ece3ab90a6b079d0ce Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_alexander_jansson/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_alphonse_mucha/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_alphonse_mucha/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d170e1b2ff7cf1ac43c923edb844ab9a7750ebf Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_alphonse_mucha/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_alphonse_mucha/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_alphonse_mucha/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aa07839b5ed02172ccb52fb17865d6509f23e290 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_alphonse_mucha/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_andy_warhol/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_andy_warhol/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..480aa3cc48f52d965853394f1e1960c0984992ab Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_andy_warhol/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_andy_warhol/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_andy_warhol/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8c1ee6c7cb58b2ca9d86145cd00d8c58b24b725 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_andy_warhol/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_artgerm/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_artgerm/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a96a0e69355cbdb925af7651ec4c5fc5fb596f95 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_artgerm/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_artgerm/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_artgerm/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e7f2e2b37f5745c4d2a5e203d1c0ec076b0027f7 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_artgerm/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_asaf_hanuka/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_asaf_hanuka/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a844326871b45ab2105316c537bef6b2e7a8836d Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_asaf_hanuka/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_asaf_hanuka/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_asaf_hanuka/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3775a2fa0d7239edd8890fb77dcead8b8f32c9d0 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_asaf_hanuka/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_aubrey_beardsley/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_aubrey_beardsley/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae388a252600408fcf25e0f61d03d483a2837b0a Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_aubrey_beardsley/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_aubrey_beardsley/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_aubrey_beardsley/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..da3fe32dd6eeaf56120c9fd2c0376a44c9257c95 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_aubrey_beardsley/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_banksy/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_banksy/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a3b6d562ce1785f816d62e43e4b6dabf989e2a01 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_banksy/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_banksy/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_banksy/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45b5f80891b9e69477063bede5b5cd52c56d5afb Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_banksy/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_beeple/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_beeple/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..984ee5e0139ba595513d7c0a941a22ff818095d1 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_beeple/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_beeple/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_beeple/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..91546ba64fd2a8d276592bdd78a3102a72ea0e93 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_beeple/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_ben_enwonwu/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_ben_enwonwu/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d183d4e4fbecc0608fc6207d159c18c85803353 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_ben_enwonwu/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_ben_enwonwu/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_ben_enwonwu/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..66f45838f426110714327fc45802304676e55253 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_ben_enwonwu/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_bob_eggleton/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_bob_eggleton/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ee7b32fb94740b58bd7c96371d25a78e7e91a2b9 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_bob_eggleton/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_bob_eggleton/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_bob_eggleton/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6df2a4afad5b76a54a448327f8d13e2b09409f31 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_bob_eggleton/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_caravaggio_michelangelo_merisi/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_caravaggio_michelangelo_merisi/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c71e98f57b0cd705d057ca8fb53203e2fa0326d6 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_caravaggio_michelangelo_merisi/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_caravaggio_michelangelo_merisi/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_caravaggio_michelangelo_merisi/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50ec70c6b768bbb4f4126a6f2af2b71ed71085d9 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_caravaggio_michelangelo_merisi/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_caspar_david_friedrich/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_caspar_david_friedrich/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e141286e5a7c7d90be1a8d95a76c8978c106d5f3 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_caspar_david_friedrich/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_caspar_david_friedrich/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_caspar_david_friedrich/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ae777c56602d1b4bb96f2e873473fd040b40dad Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_caspar_david_friedrich/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_chris_foss/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_chris_foss/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9e4faa6150e14dd52537c1167e671729392ac1bd Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_chris_foss/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_chris_foss/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_chris_foss/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6bc604e2cd310fa8260d50d9841419fe36faad6 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_chris_foss/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_claude_monet/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_claude_monet/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1a1ddc05d3f646ef1f4e175f410d0e9b67a31673 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_claude_monet/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_claude_monet/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_claude_monet/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1a18a04296b232bf1ed9b1c922c3bd0460210c2b Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_claude_monet/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_dan_mumford/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_dan_mumford/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0ac12bc5f596b7502a0863662364f4f45c7247a2 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_dan_mumford/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_dan_mumford/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_dan_mumford/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32f1ce244892b2537c51aeb7f5cc83d4102d0011 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_dan_mumford/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_david_mann/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_david_mann/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eed7c8ad221b10b3938fe6b66340ec35fa864402 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_david_mann/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_david_mann/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_david_mann/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f3810f8105d6697a3af3b79d4f09009009fa7d5c Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_david_mann/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_diego_vela_zquez/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_diego_vela_zquez/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3a9574690c5a59dbbc56b9838e8cc513efd2f926 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_diego_vela_zquez/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_diego_vela_zquez/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_diego_vela_zquez/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..43306a99a699e1b786ea18d1dce24c476cfc209a Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_diego_vela_zquez/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_disney_animation_studios/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_disney_animation_studios/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ecaa33e8f7f17489a06d3ff6e4cd0710604e60f9 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_disney_animation_studios/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_disney_animation_studios/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_disney_animation_studios/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08f2086403b8cfec69d13ee4149af9681cd21ebf Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_disney_animation_studios/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_e_douard_manet/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_e_douard_manet/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2e02199b0af1bb45587faff777c4c3733df9155a Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_e_douard_manet/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_e_douard_manet/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_e_douard_manet/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e2161865e858d89d71f59599a366eccaeddd1197 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_e_douard_manet/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_esao_andrews/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_esao_andrews/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b2c58b22f6cbffc34c7d900ba5d181ca684d4fa3 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_esao_andrews/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_esao_andrews/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_esao_andrews/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3628d559e5cbfc0bf175eb13f99cf7e19cee219 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_esao_andrews/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_frida_kahlo/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_frida_kahlo/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6d66b4bc92067e2cad439fcb4d6aad271c88a3c Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_frida_kahlo/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_frida_kahlo/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_frida_kahlo/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dc8d20043ce3acce49125b5450ce5f4802b84cbc Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_frida_kahlo/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_gediminas_pranckevicius/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_gediminas_pranckevicius/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cde1099c12f987db11e362d2b432c3fdac2ed3d0 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_gediminas_pranckevicius/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_gediminas_pranckevicius/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_gediminas_pranckevicius/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..89f9fce2dc9aad7da8fcd40d2dff9073c975f565 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_gediminas_pranckevicius/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_georgia_o_keeffe/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_georgia_o_keeffe/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f374b239b2d5d8d9454f057cd8a26aa8c2281c01 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_georgia_o_keeffe/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_georgia_o_keeffe/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_georgia_o_keeffe/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2667524453aa302a368242f6fe092d770f66f8bf Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_georgia_o_keeffe/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_greg_rutkowski/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_greg_rutkowski/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..65a6bc39ec28748d8c7620c41da0c670a94dba18 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_greg_rutkowski/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_greg_rutkowski/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_greg_rutkowski/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c5b7db7f6890081a6d81714a6e6c9409e3f43368 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_greg_rutkowski/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_gustave_dore_/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_gustave_dore_/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..70f9acf059f2e1ec259686052352c2e597b670e4 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_gustave_dore_/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_gustave_dore_/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_gustave_dore_/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..541fbad68cb64fa816acbdc04ea3466698bd3b44 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_gustave_dore_/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_gustave_klimt/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_gustave_klimt/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..00b13cd09ccc27c8fd10756e9e657524290d990e Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_gustave_klimt/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_gustave_klimt/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_gustave_klimt/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8460065fb62b8b6d5640ad033ec3c83b40ded933 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_gustave_klimt/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_h_r_giger/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_h_r_giger/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c7255ed7e5008e93da5323053e8e4058bf8aa314 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_h_r_giger/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_h_r_giger/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_h_r_giger/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eca5d6e5986bd23666ed1ddba6960ab81db923d4 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_h_r_giger/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_hayao_miyazaki/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_hayao_miyazaki/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a975ce016015e3286ce0f648d17cf63c8d252483 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_hayao_miyazaki/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_hayao_miyazaki/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_hayao_miyazaki/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec758dd6c034fcceda98a444972dd99b93dd9237 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_hayao_miyazaki/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_henri_matisse/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_henri_matisse/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8361f88d4178d1481aa9a52085c92fdd3132725b Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_henri_matisse/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_henri_matisse/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_henri_matisse/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..31c0ae891f512a53459dc121eeed8472a65a6089 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_henri_matisse/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_hp_lovecraft/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_hp_lovecraft/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bf630c7e25e93b787df9bb7e0e6261d6c2ee9b25 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_hp_lovecraft/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_hp_lovecraft/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_hp_lovecraft/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..820233bcc9c1623057337d72be044a61dc0ee9dd Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_hp_lovecraft/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_ivan_shishkin/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_ivan_shishkin/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5847701ceea656e4988bb6ffbc4e29f3834b038c Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_ivan_shishkin/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_ivan_shishkin/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_ivan_shishkin/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cc7d850d3d547ea6b55e9af346bcc7f6f4d200c1 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_ivan_shishkin/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_jack_kirby/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_jack_kirby/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2c079f29b0d1dce863ed22e6906e2ce344f5af8 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_jack_kirby/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_jack_kirby/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_jack_kirby/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cc6bed88190be98f33ba2db4dbf03710427bc69f Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_jack_kirby/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_jackson_pollock/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_jackson_pollock/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a83d9b17b112fd6442315c50bbe8870f3eb6e5cc Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_jackson_pollock/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_jackson_pollock/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_jackson_pollock/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c1be354da65ec86611893ef3d5a5ef1854d9405e Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_jackson_pollock/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_james_jean/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_james_jean/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e6cb00860c79214b1d8bc36b80c3236a7e1d334 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_james_jean/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_james_jean/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_james_jean/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9fe5fd1adc09a83b06d41996cc303ce9ee3167b6 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_james_jean/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_jim_burns/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_jim_burns/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4158915b82f485e317ae5c159cf6c6b322abd6de Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_jim_burns/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_jim_burns/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_jim_burns/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fbaf00b5c3dbbfebbb8086f31c654024b164b8d2 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_jim_burns/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_johannes_vermeer/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_johannes_vermeer/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..be39bf4485b220babef55ad550a2ed98a9a6835d Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_johannes_vermeer/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_johannes_vermeer/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_johannes_vermeer/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8aeef0a9b7015f4c73e1f38ceb1cc111abf908ce Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_johannes_vermeer/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_john_william_waterhouse/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_john_william_waterhouse/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..97fe5e615963e476aab1fb24170e2f1368e0eafe Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_john_william_waterhouse/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_john_william_waterhouse/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_john_william_waterhouse/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e735dec04d9f531f032f25284b78eedd17ea89b3 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_john_william_waterhouse/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_katsushika_hokusai/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_katsushika_hokusai/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..23a9f4ec6959c6e321189c7fe7ab4b89dd680da8 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_katsushika_hokusai/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_katsushika_hokusai/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_katsushika_hokusai/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1a479148fea1f30ca75e1dc5482a19c33c90dc47 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_katsushika_hokusai/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_kim_tschang_yeul/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_kim_tschang_yeul/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..281eab8f1b095ec341f4b50ea6315ad3f32c277b Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_kim_tschang_yeul/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_kim_tschang_yeul/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_kim_tschang_yeul/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e914a0d12b3bf8c4d985d93a27cd3966e816015 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_kim_tschang_yeul/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_ko_young_hoon/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_ko_young_hoon/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34bcb6acdf5377cec95bbb8165c4dc7c76f28ccc Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_ko_young_hoon/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_ko_young_hoon/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_ko_young_hoon/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed22e9cf2f204eace08b08f020ba152ad1ad2807 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_ko_young_hoon/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_leonardo_da_vinci/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_leonardo_da_vinci/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d040800793f4b008b11909f31b8c3d4cfbf9a448 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_leonardo_da_vinci/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_leonardo_da_vinci/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_leonardo_da_vinci/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..01c8881dcc9ef19a141632c7386a43d1711e7312 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_leonardo_da_vinci/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_lisa_frank/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_lisa_frank/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f21f0e2f77d47b3e54b1b50727105fa3063afe62 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_lisa_frank/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_lisa_frank/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_lisa_frank/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5ff81a8901da35def30a87ece2689a44dad98012 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_lisa_frank/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_m_c_escher/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_m_c_escher/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..90dda89d5541ef48e4bf23ca0112753d74d9daa1 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_m_c_escher/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_m_c_escher/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_m_c_escher/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cfe78a3f8c2a18a771834147b09c812cd7b2d3aa Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_m_c_escher/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_mahmoud_sai_d/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_mahmoud_sai_d/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4955bb28ca9f15aba2f204fe642ed981f0b49506 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_mahmoud_sai_d/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_mahmoud_sai_d/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_mahmoud_sai_d/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f0ddbd041f79e38790944829ce144066b205ec08 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_mahmoud_sai_d/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_makoto_shinkai/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_makoto_shinkai/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..85634b1001286318fd01ebe58a7b09c3d3b83d7f Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_makoto_shinkai/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_makoto_shinkai/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_makoto_shinkai/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3551f2823ab414971e50c0f27540794722dfe1a7 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_makoto_shinkai/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_marc_simonetti/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_marc_simonetti/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57d3e30825e3c25e589431002bb63c372b654dd5 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_marc_simonetti/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_marc_simonetti/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_marc_simonetti/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7722a8137364692248d6503116362af1d6246acb Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_marc_simonetti/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_mark_brooks/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_mark_brooks/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5cdb1681c06b64a9526041c09c9338454c3e65b4 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_mark_brooks/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_mark_brooks/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_mark_brooks/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..76200b793fd05b071ab1da731c925063cfea2591 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_mark_brooks/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_michelangelo/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_michelangelo/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e64d6c87daeacda536dc8f15ca8d40eb42a8c952 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_michelangelo/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_michelangelo/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_michelangelo/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b99fe850223e5b30938ac973d0cffcf9d85d4a5 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_michelangelo/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_pablo_picasso/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_pablo_picasso/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c00b82780a71ba610fae1133779e6491cf5e5c77 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_pablo_picasso/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_pablo_picasso/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_pablo_picasso/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5932b9d18bbdbd97002a29efe535034a5b0b0eaf Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_pablo_picasso/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_paul_klee/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_paul_klee/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b753e9e0344bce9ead2364c64a57115d6fff73f9 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_paul_klee/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_paul_klee/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_paul_klee/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6d9803bf326618b56a7db9a2df6eedf1097e181 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_paul_klee/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_peter_mohrbacher/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_peter_mohrbacher/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d1400bf3c6460b2e97122bf8b02cdbd55c261d31 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_peter_mohrbacher/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_peter_mohrbacher/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_peter_mohrbacher/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..85b6c887a351f5f3ef8f2e902dfbfd2c2034ba95 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_peter_mohrbacher/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_pierre-auguste_renoir/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_pierre-auguste_renoir/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7219bf46b5162043804ef6f7288e18a8cbafc39 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_pierre-auguste_renoir/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_pierre-auguste_renoir/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_pierre-auguste_renoir/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4d6e715f0e07cb0cd99d45dc8c54e90280276a7 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_pierre-auguste_renoir/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_pixar_animation_studios/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_pixar_animation_studios/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..767aa50243c0aaa8cd09ffa8dfae0fe7eb5085ca Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_pixar_animation_studios/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_pixar_animation_studios/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_pixar_animation_studios/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..078893a181f8b33955791c22b8118450066a6669 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_pixar_animation_studios/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_rembrandt/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_rembrandt/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3bbdad0b9ff61f237bde04dd1a6c93a7aa755975 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_rembrandt/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_rembrandt/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_rembrandt/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c1207645b939ced0530adc2dd0c5eb6463918cf2 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_rembrandt/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_richard_dadd/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_richard_dadd/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f25919c03ef8f963491fafb8dddd7b0470cc99a2 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_richard_dadd/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_richard_dadd/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_richard_dadd/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6530cc13d635f7c460d9c92ce401f1367c0c68c9 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_richard_dadd/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_rossdraws/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_rossdraws/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4eb47e5c1329c42e343ce8743e1b17e997fa4373 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_rossdraws/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_rossdraws/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_rossdraws/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa93315413e5a2016b5a909df4964fd7b7b6a982 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_rossdraws/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_salvador_dali_/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_salvador_dali_/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa645ada5c03926bf2a6952af5e682d711c3f6fe Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_salvador_dali_/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_salvador_dali_/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_salvador_dali_/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..64ea516057c80cc36c4319532b11090a2f932590 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_salvador_dali_/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_sam_does_arts/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_sam_does_arts/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..87a30e81f982d3d96ec16d6165137ceae70451d3 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_sam_does_arts/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_sam_does_arts/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_sam_does_arts/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2fccacd02fb6414c6b63932eff0dc08b840ea9a2 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_sam_does_arts/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_sandro_botticelli/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_sandro_botticelli/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..84ac59ec7e554a2c19db2f7a2e9134109aab5ac3 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_sandro_botticelli/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_sandro_botticelli/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_sandro_botticelli/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..89ebfad7b7b2126268f1be45a573df01834eba15 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_sandro_botticelli/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_ted_nasmith/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_ted_nasmith/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..73188f832c9db576b4992b7599dc1f2274b78ba8 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_ted_nasmith/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_ted_nasmith/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_ted_nasmith/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6034d3547dd84c24a17ea9163b8635f10e5ac515 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_ted_nasmith/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_ten_hundred/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_ten_hundred/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..558c2528084abaf3bfd9c05a083578ab12092869 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_ten_hundred/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_ten_hundred/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_ten_hundred/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7227be3d7c71b433ebb7f5f1a17d2089709de100 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_ten_hundred/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_thomas_kinkade/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_thomas_kinkade/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3f3c4ab25e0b8fdcf6ec017329cb07ee13338f65 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_thomas_kinkade/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_thomas_kinkade/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_thomas_kinkade/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..49f5f59b17f1d7cc194c053bac3234268c1fddfd Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_thomas_kinkade/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_tivadar_csontva_ry_kosztka/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_tivadar_csontva_ry_kosztka/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4839ba1a276700435aea509c5a40b297acc9cdf9 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_tivadar_csontva_ry_kosztka/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_tivadar_csontva_ry_kosztka/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_tivadar_csontva_ry_kosztka/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5229d550e5b447fc47ff3029f79279ce44e69b1b Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_tivadar_csontva_ry_kosztka/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_victo_ngai/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_victo_ngai/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..632091c622c82b1d12fb3946c94f12f42b1e74f0 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_victo_ngai/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_victo_ngai/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_victo_ngai/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4bbb3ed903581ae01f888418cc69fc7bc55738ad Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_victo_ngai/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_vincent_di_fate/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_vincent_di_fate/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe4becf9e91050bb7da400522a8cb3a18b6d6806 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_vincent_di_fate/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_vincent_di_fate/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_vincent_di_fate/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8087d73b00d92b959879814bd2d4d99990877354 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_vincent_di_fate/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_vincent_van_gogh/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_vincent_van_gogh/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15ced986f11f64ba6713ea28fcfcf7818b6bc542 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_vincent_van_gogh/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_vincent_van_gogh/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_vincent_van_gogh/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f60ae9464ce0a436f0ee655df33fa3f834501742 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_vincent_van_gogh/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_wes_anderson/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_wes_anderson/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f3b05ed5d81caff6016e213beec4b44ddd84e5b0 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_wes_anderson/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_wes_anderson/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_wes_anderson/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2f40313c5088ce00f837db2306f47e53fcdf8a00 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_wes_anderson/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_wlop/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_wlop/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7378e735b10d47d9ce2967439fafe86e5dc6bcf4 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_wlop/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_wlop/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_wlop/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..100280b1c4658e1527a515a02f65f2dcb08c86e3 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_wlop/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_yoshitaka_amano/landscape-0.jpg b/ui/media/modifier-thumbnails/artist/by_yoshitaka_amano/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ad61929d15f64bbc0e521392d86af8d9fa1c4d5 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_yoshitaka_amano/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/artist/by_yoshitaka_amano/portrait-0.jpg b/ui/media/modifier-thumbnails/artist/by_yoshitaka_amano/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3989acaa115d76ca9351833a276819ae22db5f59 Binary files /dev/null and b/ui/media/modifier-thumbnails/artist/by_yoshitaka_amano/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/aerial_view/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/aerial_view/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a62102fc86e571d7115f8a761cdca6db121b1d1 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/aerial_view/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/aerial_view/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/aerial_view/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0ceaffb1936248fd8243f2d40e7db5bf519a90a3 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/aerial_view/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/canon50/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/canon50/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e3ade7b77087c39a5e0c59289b7718240bc4483 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/canon50/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/canon50/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/canon50/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c2de7729a52ac65b939f3a3197f9fd059969d25 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/canon50/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/cinematic/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/cinematic/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e582e1fc8b035e55dad694a2974b62594a29d88 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/cinematic/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/cinematic/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/cinematic/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..58513f7654a54601f9526f8a0a3ce28272f236a3 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/cinematic/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/close-up/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/close-up/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9080e385af5c70e5a05c5ef43aecc9a658d85d78 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/close-up/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/close-up/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/close-up/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f91e25f06e2f6777f2c5e0d766a6e75b3bbc1683 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/close-up/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/color_grading/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/color_grading/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed3b7d13e54c6bce0377b8f598927c44ac8ae6fa Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/color_grading/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/color_grading/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/color_grading/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..91a0fec291f4710a578157d7a990428644a4996d Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/color_grading/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/dramatic/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/dramatic/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..db9cd87060722eade82629b26cbe1f8c38db1826 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/dramatic/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/dramatic/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/dramatic/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..54c6c95b5030c5cfef9f1c2d262b304b809d4206 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/dramatic/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/film_grain/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/film_grain/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b045299e01451bc45616403113d1f19f3b0514f3 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/film_grain/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/film_grain/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/film_grain/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..063c29230656f9ba14fc01eb29b42d1db677c5b1 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/film_grain/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/fisheye_lens/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/fisheye_lens/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4a0e65841eb530dd3a86d014334af38e101fdd0 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/fisheye_lens/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/fisheye_lens/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/fisheye_lens/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..74ce9fce606582a468ba0595a66a90d650dce949 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/fisheye_lens/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/glamor_shot/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/glamor_shot/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd7878b07d697a52eb9af271acfa518c6f24a5bb Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/glamor_shot/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/glamor_shot/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/glamor_shot/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3a9e71512dd0ada12cfd843d613523aef6d8fc1f Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/glamor_shot/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/golden_hour/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/golden_hour/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4814bba6df20fded9a77ef67905fff0ffcc07f7 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/golden_hour/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/golden_hour/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/golden_hour/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..86dc055ab12fe574fca3900c3ac4c69156d1a342 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/golden_hour/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/hd/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/hd/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd98b0f7fef516da7fae02c9487789db2cef211a Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/hd/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/hd/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/hd/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bf7a90021d6374c65481caa52445c95a8fe94d26 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/hd/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/landscape/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/landscape/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..58faf8f15dd339ef17ab65e8c3e799d2193b9647 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/landscape/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/landscape/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/landscape/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6acf3a07a43538174d9466592db870dff95abbb2 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/landscape/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/lens_flare/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/lens_flare/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2bbe565e33060ae051da9068f30eb123b08119d8 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/lens_flare/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/lens_flare/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/lens_flare/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..099e0da886455c3577c9736bf3031764755e3541 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/lens_flare/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/macro/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/macro/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4a1efe3f6ff782b8d122efb3981f844d2e9690bf Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/macro/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/macro/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/macro/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..74842b1374cebd379d05ce306e6f5231a25763dd Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/macro/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/photoshoot/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/photoshoot/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f271289dabff82bed887f0ee9c247f8c9e49f39d Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/photoshoot/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/photoshoot/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/photoshoot/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..01010840750a7a4113085adfa303d227203e5f98 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/photoshoot/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/polaroid/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/polaroid/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..970bd6016fddab6e56050a33778f88ee0b4274d7 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/polaroid/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/polaroid/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/polaroid/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6aa809f5219bac77fa937be02a4a1f701005c1dc Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/polaroid/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/portrait/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/portrait/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26bfee5b1b7c4e089caa1491dd1a0f23d5548b00 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/portrait/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/portrait/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/portrait/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..81ebdf5d4e119cb8ef8f2ac0452e8796bb44c791 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/portrait/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/studio_lighting/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/studio_lighting/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..adaeca662b892942ced872e470743721edd1c651 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/studio_lighting/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/studio_lighting/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/studio_lighting/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c5b34c4589c6c920bcb217e7764d72105f9cb9d5 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/studio_lighting/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/vintage/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/vintage/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b63e895318b894746d5149177ce099a83facf6d Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/vintage/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/vintage/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/vintage/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1b83031b539d2b4e4f47f8d031ad9d51a2d7fc27 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/vintage/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/war_photography/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/war_photography/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..24c47d9edc7def99d079972dc693f540f82ce1b4 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/war_photography/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/war_photography/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/war_photography/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d925a5df060f006ee89f3b01253a2375a6f645f9 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/war_photography/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/white_balance/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/white_balance/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4dc3810544d0fa1f8fdb0841e801ddb150505713 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/white_balance/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/white_balance/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/white_balance/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..27a6d9ebac9d88775f9da05b417b3e767575b587 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/white_balance/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/wildlife_photography/landscape-0.jpg b/ui/media/modifier-thumbnails/camera/wildlife_photography/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..13e10b6c7e08997e948ba4214453b307b0553992 Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/wildlife_photography/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/camera/wildlife_photography/portrait-0.jpg b/ui/media/modifier-thumbnails/camera/wildlife_photography/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57870f3ea9c34ff828696f7cfb8afbf862a8a04b Binary files /dev/null and b/ui/media/modifier-thumbnails/camera/wildlife_photography/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/etching/landscape-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/etching/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..909c2c5398ee2b1685ae5c7aef79d240f67c92d1 Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/etching/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/etching/portrait-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/etching/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4cecabb3eb6031062baf9c648f27a01c9a2a19fa Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/etching/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/linocut/landscape-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/linocut/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..edf51779132917eaac8bf083c7667a86188c57d6 Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/linocut/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/linocut/portrait-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/linocut/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0f3bb2b633e09009bfd41a34b38210dd89466ea2 Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/linocut/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/paper-mache/landscape-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/paper-mache/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d75c8ebea7b0774bc030981ee55f139bf2bf5623 Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/paper-mache/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/paper-mache/portrait-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/paper-mache/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..30c54d06b380ce8e72b8ab6a86d77f8433387782 Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/paper-mache/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/paper_model/landscape-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/paper_model/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6325126c65248c369010cab6c8cf0c0fd7afc836 Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/paper_model/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/paper_model/portrait-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/paper_model/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4e5d11b7dfb0c19f5659b0b6d0e2682014199b13 Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/paper_model/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/papercutting/landscape-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/papercutting/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f69f4762e94f4444defeb7be600f21b375c4a2b6 Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/papercutting/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/papercutting/portrait-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/papercutting/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..44ae9422b9e7d7420ac7f96e6ae6e2c8312de9b0 Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/papercutting/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/pyrography/landscape-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/pyrography/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6a6525277fa8c4e67a1e61df3e7f38a4847c4463 Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/pyrography/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/pyrography/portrait-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/pyrography/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c65e3cca6552773afab76f5f78d0ec64e2fe1826 Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/pyrography/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/wood-carving/landscape-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/wood-carving/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d47075606de0b7707ce9521ea26a6b98d64187ac Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/wood-carving/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/carving_and_etching/wood-carving/portrait-0.jpg b/ui/media/modifier-thumbnails/carving_and_etching/wood-carving/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..715ae3f1c0f117985434917eb89afececacb4db7 Binary files /dev/null and b/ui/media/modifier-thumbnails/carving_and_etching/wood-carving/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/3d_render/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/3d_render/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..738715033f35b244f8c22452f7ed301508d0b4cc Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/3d_render/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/3d_render/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/3d_render/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c9137bdad1dea666b69702e1679dfbfd39594679 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/3d_render/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/corona_render/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/corona_render/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e625a78ef6d4adc79099d858b382ac40b0b7145d Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/corona_render/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/corona_render/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/corona_render/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e650d2e240e0f343bbf7150ba57b99bc48a3c131 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/corona_render/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/creature_design/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/creature_design/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b0bb80938773dc57aab1a88f5e35a921c37524e3 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/creature_design/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/creature_design/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/creature_design/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed08e5a1f881ae0516268ddfb275275de1e8ad2a Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/creature_design/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/cycles_render/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/cycles_render/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1073277c422bd26fdcca8a0304213e6dcad80b07 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/cycles_render/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/cycles_render/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/cycles_render/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c62a0ef47a0e5f576237099cdc3656fcbfa544b Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/cycles_render/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/detailed_render/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/detailed_render/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5880e0d8dce707d89e2bdd4f5e8addf5ee5d35a5 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/detailed_render/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/detailed_render/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/detailed_render/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..71b378f09a1963085c95e04c83d9038c548ef8eb Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/detailed_render/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/environment_design/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/environment_design/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3a48c2b4be76d82e3455ca4da649976dab992944 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/environment_design/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/environment_design/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/environment_design/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..96a1dfbc21a2ba5849820109bab1fe031ff9eaa2 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/environment_design/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/glass_caustics/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/glass_caustics/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..44ddc2ba64a12bb107108f635aa3f9f0a8fa20a2 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/glass_caustics/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/glass_caustics/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/glass_caustics/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..62e8f6edbc8182b3b40f3b0c0de6fd26a9fd3151 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/glass_caustics/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/global_illumination/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/global_illumination/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e0deff28335152593672b4a0a0bd1c76fad8b50d Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/global_illumination/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/global_illumination/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/global_illumination/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5dabf50f7426cfae05be99ec95ee8072581e2fde Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/global_illumination/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/intricate_environment/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/intricate_environment/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ceaf8d30f190837f725e7556bcdad4e9b840b52 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/intricate_environment/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/intricate_environment/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/intricate_environment/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c9df0f6f32eb222b4f9db92bd6117e08a6649258 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/intricate_environment/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/lsd_render/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/lsd_render/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11f3a0fafb423976772a3991469f15fe0d866237 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/lsd_render/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/lsd_render/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/lsd_render/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f2dc13d4ef937ef3331c612deb6ca82ed79f35e Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/lsd_render/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/octane_render/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/octane_render/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c73b479029193944214265c71884c69d9aaba27 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/octane_render/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/octane_render/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/octane_render/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..883f483ec543f438ee9d4fb0e4a521d05b9cc8ac Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/octane_render/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/pbr/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/pbr/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d8a117386b499b32c6f4fa4efd1cfc97112a2871 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/pbr/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/pbr/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/pbr/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6e33515560c2a08ee20c86cc3b70c7967441f45c Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/pbr/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/subsurface_scattering/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/subsurface_scattering/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..af16505e047f1bca82aa02f81bbc9e331262db87 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/subsurface_scattering/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_rendering/subsurface_scattering/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_rendering/subsurface_scattering/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d047f4d82115fb4dce969c1c5a1444724e15ee74 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_rendering/subsurface_scattering/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/3d_model/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_software/3d_model/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e107ee558feccf6790885a892f768f105b78a60 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/3d_model/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/3d_model/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_software/3d_model/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd23e093c2ed100a1db8da5fb87ed9bbef6f38fe Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/3d_model/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/3d_sculpt/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_software/3d_sculpt/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a3d437b306f81054c32d41094ea0669210b87f4f Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/3d_sculpt/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/3d_sculpt/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_software/3d_sculpt/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40bfcba44674569c46343947329ba9883661a5bc Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/3d_sculpt/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/3ds_max_model/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_software/3ds_max_model/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..52156b479ff3b221d929563869c8311a1e1c3c34 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/3ds_max_model/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/3ds_max_model/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_software/3ds_max_model/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f85538cd292aa9e11f2414cf63dcb55826ac159f Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/3ds_max_model/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/blender_model/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_software/blender_model/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdcfd1f87f39bfec00f1b6c7089e9690a430a8e2 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/blender_model/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/blender_model/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_software/blender_model/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..136baa81574ab63ef0770670be8eb74a11f65872 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/blender_model/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/cinema4d_model/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_software/cinema4d_model/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a3d0ee862c1134ec801f530c85b8e1d9b1e7d1d Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/cinema4d_model/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/cinema4d_model/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_software/cinema4d_model/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d5a55841656fdebdb8a024d1a3ccfb3e85489771 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/cinema4d_model/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/maya_model/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_software/maya_model/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..38be657a1e8b6567f965bab90887fe5cafdfba29 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/maya_model/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/maya_model/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_software/maya_model/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d3e4fda8e8acb8ec89d26706f6fbf5bb6c7772a Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/maya_model/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/unreal_engine/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_software/unreal_engine/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4532e3a7a2773a5e439b69fe761beb68018723d Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/unreal_engine/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/unreal_engine/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_software/unreal_engine/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32d0b9fcc2332c2111b2b9e6edb0a4df1335e8db Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/unreal_engine/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/zbrush_sculpt/landscape-0.jpg b/ui/media/modifier-thumbnails/cgi_software/zbrush_sculpt/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..49270c61a6ed9d5165244098681c3d64661d75b4 Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/zbrush_sculpt/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/cgi_software/zbrush_sculpt/portrait-0.jpg b/ui/media/modifier-thumbnails/cgi_software/zbrush_sculpt/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6bd4bbfa9c62dbea161230f30a45fcab6f7bedfe Binary files /dev/null and b/ui/media/modifier-thumbnails/cgi_software/zbrush_sculpt/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/beautiful_lighting/landscape-0.jpg b/ui/media/modifier-thumbnails/color/beautiful_lighting/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d183a6008b203464055b78b45795438adf07d083 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/beautiful_lighting/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/beautiful_lighting/portrait-0.jpg b/ui/media/modifier-thumbnails/color/beautiful_lighting/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b8ecacfd91d3f7f31784bb615d20cd9c395f0c75 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/beautiful_lighting/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/cold_color_palette/landscape-0.jpg b/ui/media/modifier-thumbnails/color/cold_color_palette/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7039a9ce7f99d785fbe4b5116584eaa17f15aeee Binary files /dev/null and b/ui/media/modifier-thumbnails/color/cold_color_palette/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/cold_color_palette/portrait-0.jpg b/ui/media/modifier-thumbnails/color/cold_color_palette/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..abf02c82dd21eb338ababe6daabe93178d304d1a Binary files /dev/null and b/ui/media/modifier-thumbnails/color/cold_color_palette/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/colorful/landscape-0.jpg b/ui/media/modifier-thumbnails/color/colorful/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe708bf6f19da6aa5a17ddc5598685ae1ee19cc1 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/colorful/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/colorful/portrait-0.jpg b/ui/media/modifier-thumbnails/color/colorful/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c327c1f363aaaeb4b3196e723781788560ca69a1 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/colorful/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/dynamic_lighting/landscape-0.jpg b/ui/media/modifier-thumbnails/color/dynamic_lighting/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..632e8694cf3508401f521e759ab7a09e0efc2a47 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/dynamic_lighting/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/dynamic_lighting/portrait-0.jpg b/ui/media/modifier-thumbnails/color/dynamic_lighting/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f85330b18bf0ef2c9a4a9233b5b2af72034f720 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/dynamic_lighting/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/electric_colors/landscape-0.jpg b/ui/media/modifier-thumbnails/color/electric_colors/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..27bfa1022aeed4ea5539bc0a6793a37d4adb0920 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/electric_colors/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/electric_colors/portrait-0.jpg b/ui/media/modifier-thumbnails/color/electric_colors/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1427089553511e784ce5f6eea0c25a53892217af Binary files /dev/null and b/ui/media/modifier-thumbnails/color/electric_colors/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/infrared/landscape-0.jpg b/ui/media/modifier-thumbnails/color/infrared/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..16a6e133263f5bc2d9ffe7ca745715451b0b02e3 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/infrared/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/infrared/portrait-0.jpg b/ui/media/modifier-thumbnails/color/infrared/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3b82b22ee64207b39e9c7591c7e24191475f9b2 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/infrared/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/neon/landscape-0.jpg b/ui/media/modifier-thumbnails/color/neon/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3dee39a5aa017c3b7c3813babd8342b4a5ef001a Binary files /dev/null and b/ui/media/modifier-thumbnails/color/neon/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/neon/portrait-0.jpg b/ui/media/modifier-thumbnails/color/neon/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a00ae357c8759e97ccb857c30229accdd0344b14 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/neon/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/pastel/landscape-0.jpg b/ui/media/modifier-thumbnails/color/pastel/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e1ec1d9656cbd4ad6877d4767e196ebc90edf2d9 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/pastel/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/pastel/portrait-0.jpg b/ui/media/modifier-thumbnails/color/pastel/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8de9e72f007c9d5e18629aa37d6107208c839a64 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/pastel/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/synthwave/landscape-0.jpg b/ui/media/modifier-thumbnails/color/synthwave/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2f9c0e6114d7a55cd49100e29b719718e6469c63 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/synthwave/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/synthwave/portrait-0.jpg b/ui/media/modifier-thumbnails/color/synthwave/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c385eae11485f1c7822b2576de0cfc1ab4de2e1 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/synthwave/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/warm_color_palette/landscape-0.jpg b/ui/media/modifier-thumbnails/color/warm_color_palette/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..87c8501fdc3b82ae1cd6c6446bfc852d4ff33bf8 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/warm_color_palette/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/color/warm_color_palette/portrait-0.jpg b/ui/media/modifier-thumbnails/color/warm_color_palette/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4fb9758e0fb1a9f86c31167db093e363f9a45416 Binary files /dev/null and b/ui/media/modifier-thumbnails/color/warm_color_palette/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/cel_shading/landscape-0.jpg b/ui/media/modifier-thumbnails/drawing_style/cel_shading/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e00cd16399e59412a7c255e16f8094d70e34fff0 Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/cel_shading/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/cel_shading/portrait-0.jpg b/ui/media/modifier-thumbnails/drawing_style/cel_shading/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..715f3e0e6fe8ddf8df2b3ece16cb53ffe07ed037 Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/cel_shading/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/children_s_drawing/landscape-0.jpg b/ui/media/modifier-thumbnails/drawing_style/children_s_drawing/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..79d70a721c8a8bb76749c160e2fea839d6d04877 Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/children_s_drawing/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/children_s_drawing/portrait-0.jpg b/ui/media/modifier-thumbnails/drawing_style/children_s_drawing/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc29298ff5e04f267436a6c27b2e75c617e3eb8b Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/children_s_drawing/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/crosshatch/landscape-0.jpg b/ui/media/modifier-thumbnails/drawing_style/crosshatch/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6144a67dea183027df057884bb8abbb2b9c9b4c Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/crosshatch/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/crosshatch/portrait-0.jpg b/ui/media/modifier-thumbnails/drawing_style/crosshatch/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2bb7acfb1b9a21104762185d9e4cdcd8f3183e7 Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/crosshatch/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/detailed_and_intricate/landscape-0.jpg b/ui/media/modifier-thumbnails/drawing_style/detailed_and_intricate/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5048c432460a3ff3751cbd0928d8a19eae0b5069 Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/detailed_and_intricate/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/detailed_and_intricate/portrait-0.jpg b/ui/media/modifier-thumbnails/drawing_style/detailed_and_intricate/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..699f92d9a2a54a1a8124f2c0cca47353a5a5ed8a Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/detailed_and_intricate/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/doodle/landscape-0.jpg b/ui/media/modifier-thumbnails/drawing_style/doodle/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92cec1c497640e1bf5ec719f6d3d4b2dd1aa9abe Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/doodle/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/doodle/portrait-0.jpg b/ui/media/modifier-thumbnails/drawing_style/doodle/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7524efa50e208416beb16c668e2fdc4a097f5a2d Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/doodle/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/dot_art/landscape-0.jpg b/ui/media/modifier-thumbnails/drawing_style/dot_art/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9fcb939f3fbac643b32b912fad0584eb6e85f844 Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/dot_art/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/dot_art/portrait-0.jpg b/ui/media/modifier-thumbnails/drawing_style/dot_art/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..815628a2db9bc72b6cb9bbda775dd630179f786c Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/dot_art/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/line_art/landscape-0.jpg b/ui/media/modifier-thumbnails/drawing_style/line_art/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d3e1330411085a31a1f71828a002710e59a09c31 Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/line_art/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/line_art/portrait-0.jpg b/ui/media/modifier-thumbnails/drawing_style/line_art/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..469b3004411470f7e95f116e69facea42672563e Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/line_art/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/sketch/landscape-0.jpg b/ui/media/modifier-thumbnails/drawing_style/sketch/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4211b2292166ec36a1bb53bf70dad1fb4e9e0671 Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/sketch/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/drawing_style/sketch/portrait-0.jpg b/ui/media/modifier-thumbnails/drawing_style/sketch/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c222d077c1848f1548b29a5f11ffa00f3174585 Binary files /dev/null and b/ui/media/modifier-thumbnails/drawing_style/sketch/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/angry/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/angry/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..221392553b04d4f890af16f7f6058fa773c782db Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/angry/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/angry/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/angry/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8065e42cb874b72450a2c510203eece17912179 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/angry/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/bitter/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/bitter/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..63810553e547886416f514b5f07729f2f4d6a125 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/bitter/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/bitter/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/bitter/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9071251015c39860b2d21959190ee61a6585e5d9 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/bitter/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/disgusted/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/disgusted/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e6fdf176a7687c50f2a1b6841a9e7f83069c892a Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/disgusted/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/disgusted/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/disgusted/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9bb8497b954d3e02b100284326762641b9d1c0e8 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/disgusted/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/embarrassed/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/embarrassed/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bd3e1d65a2236b7de90b2c2a93bf5b9df207f217 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/embarrassed/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/embarrassed/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/embarrassed/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ed2ae9632f432977d579e4e97b9d0edfae0b04a Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/embarrassed/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/evil/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/evil/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7aac3ea350215fee54d2c95475441bbcc7f7cc16 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/evil/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/evil/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/evil/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c9adb9196041e19b754ac06fe8f43f1ed15bbc04 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/evil/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/excited/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/excited/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cfbd3a20189b47f41fc04d828323347751b71ad3 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/excited/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/excited/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/excited/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82b8033a6d40ac3c945c757e0ed514b8a86aafc5 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/excited/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/fear/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/fear/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d55b0d5d9b01bbf2b2e7e3426ad3858dfc619b65 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/fear/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/fear/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/fear/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7fb810f3c29ca3ec03bd01eee4f0e2396d8c038 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/fear/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/funny/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/funny/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5b05507ac9ec45f4df6062f97cdc1c87274ab9d1 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/funny/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/funny/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/funny/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1590e8a5c1086733a124e1735514fa606621c07e Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/funny/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/happy/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/happy/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..30429d0424d4d0d86569196354ad8041cdd9e72d Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/happy/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/happy/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/happy/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a7a4bf5662cbbfc4670720e065a6ecf4cc99fea Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/happy/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/horrifying/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/horrifying/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..31b5cc4c88a9c01c1e620a5a06c904fc6ff8fa87 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/horrifying/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/horrifying/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/horrifying/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aef8da4065869bd301fd00f1242bd3f48da9a1b5 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/horrifying/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/lonely/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/lonely/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cce5400b62fd55af7657afc11c5edd95d9c87bf0 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/lonely/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/lonely/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/lonely/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6f451950ed0541312b54f345f11e87082fe1736d Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/lonely/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/melancholic/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/melancholic/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..346a626e468b5555b207985cac4b010711cad59b Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/melancholic/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/melancholic/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/melancholic/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a503597f48e13c9dd3dbdd65bab58ddd7867dc4a Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/melancholic/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/sad/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/sad/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a086851d7e4370655a1c76157d14b83c8572c2e2 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/sad/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/sad/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/sad/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3f4fc6b747c8be3433d6891c460782354cda7f8 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/sad/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/serene/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/serene/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e508f95ef41eeddeb2018b62e8e58450529bf5e6 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/serene/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/serene/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/serene/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ca5a0a311986ed3356ae5886a462e29da477370f Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/serene/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/surprised/landscape-0.jpg b/ui/media/modifier-thumbnails/emotions/surprised/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e0aaaf176f33712d150893f2a81fcb071cc101a Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/surprised/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/emotions/surprised/portrait-0.jpg b/ui/media/modifier-thumbnails/emotions/surprised/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5d3bb4672a073c08be899ddbdcbe94ebf5efd0b7 Binary files /dev/null and b/ui/media/modifier-thumbnails/emotions/surprised/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/pen/chalk/landscape-0.jpg b/ui/media/modifier-thumbnails/pen/chalk/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7f8de12ff52f370d6395f6f90758600ebbc8df9 Binary files /dev/null and b/ui/media/modifier-thumbnails/pen/chalk/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/pen/chalk/portrait-0.jpg b/ui/media/modifier-thumbnails/pen/chalk/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0cbe5f9194f52f1c873ecc7dbdfd5ea72d9b7311 Binary files /dev/null and b/ui/media/modifier-thumbnails/pen/chalk/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/pen/colored_pencil/landscape-0.jpg b/ui/media/modifier-thumbnails/pen/colored_pencil/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a9f93581e78749a3f046e6caf2426405bd64665f Binary files /dev/null and b/ui/media/modifier-thumbnails/pen/colored_pencil/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/pen/colored_pencil/portrait-0.jpg b/ui/media/modifier-thumbnails/pen/colored_pencil/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9b07e5f36d0c72f967a2a4d1cb18b166d8cf5b65 Binary files /dev/null and b/ui/media/modifier-thumbnails/pen/colored_pencil/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/pen/graphite/landscape-0.jpg b/ui/media/modifier-thumbnails/pen/graphite/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b764c32577898b041d9e13ce401865a07d58e703 Binary files /dev/null and b/ui/media/modifier-thumbnails/pen/graphite/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/pen/graphite/portrait-0.jpg b/ui/media/modifier-thumbnails/pen/graphite/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8d9ce682a08ef338c4d173d765cdd7cacf908b87 Binary files /dev/null and b/ui/media/modifier-thumbnails/pen/graphite/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/pen/ink/landscape-0.jpg b/ui/media/modifier-thumbnails/pen/ink/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04e9bb8df68b80f721e1e313e47fe6d060afdfe5 Binary files /dev/null and b/ui/media/modifier-thumbnails/pen/ink/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/pen/ink/portrait-0.jpg b/ui/media/modifier-thumbnails/pen/ink/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..58912a5c347ed558f71ed8bc41a9c3e88bffe5db Binary files /dev/null and b/ui/media/modifier-thumbnails/pen/ink/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/pen/oil_paint/landscape-0.jpg b/ui/media/modifier-thumbnails/pen/oil_paint/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e8487eb3e2cf5b6c54f94fea6b50c6c85d845d87 Binary files /dev/null and b/ui/media/modifier-thumbnails/pen/oil_paint/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/pen/oil_paint/portrait-0.jpg b/ui/media/modifier-thumbnails/pen/oil_paint/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..39f49db7b26b356f328287c4fe69f8c48468e7ae Binary files /dev/null and b/ui/media/modifier-thumbnails/pen/oil_paint/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/pen/pastel_art/landscape-0.jpg b/ui/media/modifier-thumbnails/pen/pastel_art/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d47f061f344fe3631102ce7be934ff433be7fc6d Binary files /dev/null and b/ui/media/modifier-thumbnails/pen/pastel_art/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/pen/pastel_art/portrait-0.jpg b/ui/media/modifier-thumbnails/pen/pastel_art/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b8389468a83fdb5e0d378a9a3f16520318246f2f Binary files /dev/null and b/ui/media/modifier-thumbnails/pen/pastel_art/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/16-bit/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/16-bit/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cab6dabaeb48210c11ab3b7d457d463a1671c294 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/16-bit/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/16-bit/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/16-bit/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec0d327c62c81278135cb136e55a9b09b8b810ff Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/16-bit/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/2d/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/2d/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c171c474a7bb4a2864f6aa361e6fd0ba321256dd Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/2d/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/2d/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/2d/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5da42777816e5f6bdffe124fe59e5288f43afa27 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/2d/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/8-bit/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/8-bit/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..de645e6d09475dad6e9856a999ef45e8329c2cce Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/8-bit/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/8-bit/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/8-bit/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..922cda9126c7a080afa6676117347c6d66e4c48c Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/8-bit/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/anaglyph/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/anaglyph/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..acf16435bd41fee3be7d7aeae4ac07aea55cba68 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/anaglyph/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/anaglyph/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/anaglyph/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..48246fa5b3b2d7b058fcd8893420c6779c742d2f Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/anaglyph/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/anime/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/anime/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..84b8deb44be54578ff1182acb9552e6851cc9273 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/anime/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/anime/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/anime/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa34b2a22045b3643a8af089bea1293fc466ddd1 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/anime/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/art_nouveau/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/art_nouveau/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aa8239f8800482af8c185e4802e83164897d830d Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/art_nouveau/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/art_nouveau/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/art_nouveau/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff30bc9c3dbdc9b3ef4fe4cfb4d330913e6000fa Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/art_nouveau/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/baroque/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/baroque/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dfc78d2f9e88513eddb8fbf683f95ed87e6ea317 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/baroque/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/baroque/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/baroque/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32e901978ae392737a1b5ec55bb28d28eb507d31 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/baroque/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/bauhaus/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/bauhaus/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b2b4337801740f09e32e9ca6ded8edf756167807 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/bauhaus/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/bauhaus/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/bauhaus/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b7ee00252285b4acd5f29219bc3d0b2ece26c576 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/bauhaus/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/cartoon/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/cartoon/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e0690e17076ed29e8f512d1fe3fd4defbb5ef6f Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/cartoon/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/cartoon/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/cartoon/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..95997d3c9c259f95af2fa1550e17d04594acd880 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/cartoon/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/cgi/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/cgi/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e987dcefe3f1e7c447ceef94b9c2041072f8cf03 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/cgi/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/cgi/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/cgi/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6184ba711536ef31d111b64bac8c6f42848afa63 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/cgi/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/comic_book/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/comic_book/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c0b91a35895ed1ce0944e2bad39a713b0a078d4 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/comic_book/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/comic_book/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/comic_book/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d435d523d1813577d1cf1140e5bda06cec14ca2 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/comic_book/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/concept_art/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/concept_art/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26817477e489263c8914a3b1a3ac53f6930db726 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/concept_art/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/concept_art/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/concept_art/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e7c0b07d35c30cb1db7dc0504249d9bf80acdae Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/concept_art/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/constructivist/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/constructivist/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e82b2d5a3f8e84fe8ba875ef7809da709df55c20 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/constructivist/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/constructivist/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/constructivist/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d015f6660dc648961b7fffb6dd00940b8f7f9155 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/constructivist/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/cubist/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/cubist/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b4f22661ec496af67757baef596098c217aa639 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/cubist/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/cubist/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/cubist/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..679b23b0d9bbdf9705ee509f0c4e1a6d8f94e29c Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/cubist/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/dadaist/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/dadaist/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..31ec96eaf1baa85799ee3a9a078976154e3ec69a Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/dadaist/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/dadaist/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/dadaist/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04f4443b6f61bd77340940513820487d00fc5596 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/dadaist/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/digital_art/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/digital_art/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6977ef1a2f97ab7e4e4381ecd1edbd862d782948 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/digital_art/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/digital_art/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/digital_art/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9dde746ad1aab06915a0372b88312b439c0e4843 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/digital_art/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/expressionist/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/expressionist/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c317ff449b694115dd108b9e5736e5c4a65eb7e2 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/expressionist/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/expressionist/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/expressionist/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e0d4f0581f8ab1fde709cbfb40640935b83f4a8f Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/expressionist/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/fantasy/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/fantasy/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df3890e554e9a99c951d07db8f43be2ea71edcfe Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/fantasy/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/fantasy/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/fantasy/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5e7ed735b6cccd20f11947bb7cce658f67f4788d Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/fantasy/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/fauvist/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/fauvist/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57128ce1a9ff63920d4c8b54c725bef4bfb63aa1 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/fauvist/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/fauvist/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/fauvist/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d75bdba437cb0c0e25395995901a74058b434cf Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/fauvist/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/figurative/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/figurative/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..323ca7b2ee1f80dc4d36475304d702dd8cc4ac90 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/figurative/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/figurative/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/figurative/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..547ca26542827bbfd874b01943d2f2efbef87461 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/figurative/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/geometric/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/geometric/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2cb79e10fbd46a52827167c763a82743ef5c6625 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/geometric/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/geometric/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/geometric/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a07a8453cb9a89268fee85806bcd045cec88dd68 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/geometric/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/graphic_novel/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/graphic_novel/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c4b4d130535b7a5f0425074550489b1e6dbf193 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/graphic_novel/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/graphic_novel/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/graphic_novel/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae186e55e098a63ece1818eab6158228b5f1b5d2 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/graphic_novel/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/hard_edge_painting/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/hard_edge_painting/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6f5a1a6b00ae18738f452c43ba4760c4342441e2 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/hard_edge_painting/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/hard_edge_painting/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/hard_edge_painting/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4651a8e8030e486f5d40eb6be06bcce5231eae9c Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/hard_edge_painting/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/hydrodipped/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/hydrodipped/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..01181f167ac2fe1d8b26011461810de01a0bc18c Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/hydrodipped/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/hydrodipped/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/hydrodipped/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7b8e721fe28279cf048acb110bd6e2eb741c5532 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/hydrodipped/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/impressionistic/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/impressionistic/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..64d765dab265a695078d51c050266a7f01d26a2f Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/impressionistic/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/impressionistic/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/impressionistic/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..60fe0cf0134a0e9f7ce2215662e0d1d1910f79be Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/impressionistic/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/lithography/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/lithography/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d7ef50cdcbd678b4603814e5ce0e41d821918405 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/lithography/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/lithography/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/lithography/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a9e81d807bfc6d10ec97e9b2f2f598006d83a96 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/lithography/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/manga/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/manga/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..54faf7f19f91ab89c4a1dd2e05064af3d5ee35c3 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/manga/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/manga/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/manga/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fab81d2d482ffada8e319b9d99a1c05a37aa3870 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/manga/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/minimalist/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/minimalist/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f36b5b1fdadeab86a9b88ddb8565ce2e45454ab Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/minimalist/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/minimalist/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/minimalist/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2812a6dbdfe18242c4bced4bc2ec835ec9ab0c9e Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/minimalist/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/modern_art/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/modern_art/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec4323084cc9666650fefd010b1c66154c4cf76c Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/modern_art/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/modern_art/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/modern_art/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1eb036508d03f73705949d2d8ca0aa37f3903bf9 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/modern_art/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/mosaic/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/mosaic/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32284748edfc228cbb97a5f77c2ce03416ac20da Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/mosaic/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/mosaic/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/mosaic/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..43c07d870a3baaf641950007a7701387201a7d5b Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/mosaic/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/mural/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/mural/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2455f4d507aad0aff71348d7e7ffed798a1149eb Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/mural/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/mural/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/mural/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a31bd7d2e166f03a1d82356521a06480200fd44e Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/mural/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/naive/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/naive/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aec27ab0832d3c0c894091f7f6dc3dc392629e46 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/naive/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/naive/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/naive/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37dab0d4a535b3b655a3b9f293f10e3e726ff92c Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/naive/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/neoclassical/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/neoclassical/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dc7d151fa556a94314f9609656abcce158bbee70 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/neoclassical/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/neoclassical/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/neoclassical/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..517d2970338edf2bd0a73d72419b562f59b0ef95 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/neoclassical/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/photo/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/photo/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e888b747c9d9cac4db06eab50299eacfac60809 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/photo/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/photo/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/photo/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..28b15e1fa91c713ab6b848d892fa6465aa7504c6 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/photo/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/realistic/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/realistic/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..001896d16bec01f96eb3872dc60da27ce2b02a7b Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/realistic/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/realistic/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/realistic/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3b19a4b5b6995595abcc0cf30046331db1dc549 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/realistic/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/rococo/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/rococo/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cff9271a5c19f3e5caa4cc57af188cf6de5beeb2 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/rococo/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/rococo/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/rococo/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c0aa58dd4e77055770e68635d1aa9140ff9c31e Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/rococo/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/romantic/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/romantic/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8a5e03db8996f11e5f8c567f5ed6807ad2c5d767 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/romantic/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/romantic/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/romantic/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..efb2ace0bfb61b0ddcd26ff95f8734fbf2f3833c Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/romantic/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/street_art/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/street_art/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd9340dca69f83c362a7437a1c747b7be1a75035 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/street_art/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/street_art/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/street_art/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..191209a804d555eaf7aa383a4d0b724890e75414 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/street_art/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/stuckist/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/stuckist/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53d2ba03f9c74075e18454d97450482ed6c82ddc Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/stuckist/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/stuckist/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/stuckist/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a69865e8c6e6638a6c8a93fff006f454614e889c Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/stuckist/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/surrealist/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/surrealist/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa18e3b1e5b121e32f6954c3dde7c40a2e4ecf76 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/surrealist/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/surrealist/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/surrealist/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8f2230241e12b5d4e3ab54847b07477818a25be Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/surrealist/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/symbolist/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/symbolist/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b5b7f762cc1a9806d29e73732fa7a87423d5b88 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/symbolist/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/symbolist/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/symbolist/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..59dfe64bb77425809e0b9e1dd55c150fe9c42a26 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/symbolist/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/visual_novel/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/visual_novel/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd7534a1a46c5f72af36fb1134f11fc4648a27a9 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/visual_novel/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/visual_novel/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/visual_novel/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1cb5bce04b33c51b39d4d6765ee529facbe1584a Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/visual_novel/portrait-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/watercolor/landscape-0.jpg b/ui/media/modifier-thumbnails/visual_style/watercolor/landscape-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08e6faa0b1b49f880ace7c1c185c9b9b23eb2cd5 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/watercolor/landscape-0.jpg differ diff --git a/ui/media/modifier-thumbnails/visual_style/watercolor/portrait-0.jpg b/ui/media/modifier-thumbnails/visual_style/watercolor/portrait-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b21e4f26d5dda0ae1b4fd9454fd029292d03691 Binary files /dev/null and b/ui/media/modifier-thumbnails/visual_style/watercolor/portrait-0.jpg differ