diff --git a/packages/subapp-redux/src/shared.js b/packages/subapp-redux/src/shared.js index 33e55088c..1149ef087 100644 --- a/packages/subapp-redux/src/shared.js +++ b/packages/subapp-redux/src/shared.js @@ -95,10 +95,18 @@ function createSharedStore(initialState, info, storeContainer) { replaceReducer(info.reduxReducers, info, storeContainer); } else { reducerContainer = newReducerContainer(); - store = createStore( - combineSharedReducers(info, reducerContainer, info.reduxReducers), - initialState - ); + if (info.reduxEnhancer && info.reduxEnhancer instanceof Function) { + store = createStore( + combineSharedReducers(info, reducerContainer, info.reduxReducers), + initialState, + info.reduxEnhancer() + ); + } else { + store = createStore( + combineSharedReducers(info, reducerContainer, info.reduxReducers), + initialState + ); + } store[originalReplaceReducerSym] = store.replaceReducer; // // TODO: better handling of a replaceReducer that takes extra params @@ -136,6 +144,10 @@ function createSharedStore(initialState, info, storeContainer) { } else { reducer = x => x; } + + if (info.reduxEnhancer && info.reduxEnhancer instanceof Function) { + return createStore(reducer, initialState, info.reduxEnhancer()); + } return createStore(reducer, initialState); } diff --git a/samples/poc-subapp-redux/.browserslistrc b/samples/poc-subapp-redux/.browserslistrc new file mode 100644 index 000000000..d66332951 --- /dev/null +++ b/samples/poc-subapp-redux/.browserslistrc @@ -0,0 +1,4 @@ +# Browsers that we support +last 2 versions +ie >= 11 +> 5% diff --git a/samples/poc-subapp-redux/.editorconfig b/samples/poc-subapp-redux/.editorconfig new file mode 100644 index 000000000..beffa3084 --- /dev/null +++ b/samples/poc-subapp-redux/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/samples/poc-subapp-redux/.eslintrc.js b/samples/poc-subapp-redux/.eslintrc.js new file mode 100644 index 000000000..2f1a6a306 --- /dev/null +++ b/samples/poc-subapp-redux/.eslintrc.js @@ -0,0 +1,11 @@ +var path = require("path"); +var archetype = require("@xarc/app/config/archetype")(); +var archetypeEslint = path.join(archetype.config.eslint, ".eslintrc-react"); + +function dotify(p) { + return path.isAbsolute(p) ? p : "." + path.sep + p; +} + +module.exports = { + extends: dotify(path.relative(__dirname, archetypeEslint)) +}; diff --git a/samples/poc-subapp-redux/.gitattributes b/samples/poc-subapp-redux/.gitattributes new file mode 100644 index 000000000..176a458f9 --- /dev/null +++ b/samples/poc-subapp-redux/.gitattributes @@ -0,0 +1 @@ +* text=auto diff --git a/samples/poc-subapp-redux/LICENSE b/samples/poc-subapp-redux/LICENSE new file mode 100644 index 000000000..26518628d --- /dev/null +++ b/samples/poc-subapp-redux/LICENSE @@ -0,0 +1,13 @@ +Copyright 2018-present @WalmartLabs + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/samples/poc-subapp-redux/README.md b/samples/poc-subapp-redux/README.md new file mode 100644 index 000000000..b10140b38 --- /dev/null +++ b/samples/poc-subapp-redux/README.md @@ -0,0 +1,209 @@ +# subapp poc sample + +## The Concept + +- What is a subapp? + + At its core, a subapp is just a component, and if React is used, a React component. + + The goal is to not limit subapps to a framework, but at the moment React is the primary focus. + +- What makes a subapp special? + + Electrode provide enhancements to make subapps special: + + - `Code splitting` - Automatically detect subapps and configure webpack to split your JS by subapps. + - `Composable` - Create routes/pages that are composed of multiple subapps. + - `Lazy loading` - Dynamically lazy load and create multiple instances of subapps on a page. + - `Initial Props` - Automatically retrieve initial props before rendering subapps. + - `Async data fetch` - Use React suspense to enable single pass async data fetch within components. + - `Server Side Rendering` - Independently enable server side render for each subapp. + - `Redux` - Automatically facilitate, initialize, and hydrate SSR data using Redux. + - `React Router` - Automatically setup component routing using [react-router]. + - `Hot module Reload` - Automatically support Hot Module Reload during development. + +## Introduction + +**How do I create a subapp?** + +- Electrode automatically look under the directory `src` for subapps. +- To create a subapp, create a directory for it and an entry file with `subapp-` prefix, or just `subapp.js`. +- Load your subapp with the `loadSubApp` API. + +- The simplest sample of a subapp: + +```js +import React from "react"; +import { loadSubApp } from "subapp-web"; + +const Home = () =>
Home
; + +export default loadSubApp({ + name: "Home", + Component: Home +}); +``` + +And that's it! **TBD**: Electrode will detect your subapps and generate a route for each subapp base on its name. The `home` subapp will be used for the default route. + +## Flexible Server Routing + +To control server routes, you can create a `src/routes.js` file that specify the server routes. + +Example: + +```js +export const favicon = "static/favicon.png"; + +export default { + "/": { + pageTitle: "Home", + subApps: ["./home", "./demo1"] + }, + about: { + pageTitle: "About us", + subApps: ["./about"] + } +}; +``` + +## Initial Props + +Your subapp can provide a `prepare` method that retrieves `props`. + +Example: + +```js +import React from "react"; +import { loadSubApp } from "subapp-web"; + +const Demo1 = props =>
Demo1 props: {JSON.stringify(props)}
; + +export default loadSubApp({ + name: "Demo1", + Component: Home, + prepare() { + return fetch("/api/demo-data"); + } +}); +``` + +## Server Side Rendering + +### Enable SSR for a subapp + +When you create an instance of a subapp, you can specify attributes for that instance. To enable SSR, set the `serverSideRendering` attribute. + +Example in `routes.js`: + +```js +export const favicon = "static/favicon.png"; + +export default { + "/": { + pageTitle: "Home", + subApps: [["./home", { serverSideRendering: true }], "./demo1"] + }, + about: { + pageTitle: "About us", + subApps: ["./about"] + } +}; +``` + +### Server Side Data Fetching + +You can have data fetching that only runs on server side, and send that to the client for hydration if you use Redux. + +To enable server side only data fetching, create a file `server.js` under your subapp's directory, and have it exports a `prepare` method. + +Example: + +```js +export default { + prepare: ({ request, context }) => { + return fetch("remote-service-url/api/data").then(result => { + return { initialState: result }; + }); + } +}; +``` + +### Other SSR attributes + +You can also control how your subapp works from server side to client side for each instance. + +Some of the attributes supported: + +- `hydrate` - Enable client side hydration of initial state from server. ie: Use `React.hydrate` API. +- `useStream` - Use the stream SSR APIs. ie: `ReactDomServer.renderToNodeStream`. +- `suspenseSsr` - Support suspense in SSR. No stream support. + +## React Router and SPA + +In addition to the basic server routes, your subapps can have its own routing using [react-router]. + +To enable, set the `useReactRouter` flag when loading your subapp and wrap your component with a router. + +Example: + +```js +import React from "react"; +import { loadSubApp } from "subapp-web"; +import { Router, Route, Switch } from "react-router-dom"; +import { withRouter } from "react-router"; + +const Home = () => { + return ( +
+ + + + + + +
+ ); +}; + +export default loadSubApp({ + name: "Home", + Component: withRouter(Home), + useReactRouter: true +}); +``` + +Electrode will automatically ensure your subapp is integrated with `StaticRouter` when doing SSR and `DynamicRouter` with `history` when running in the browser. + +**SPA** Further, you can have other subapps on the same page, and those will stay persistent while your subapp that is enabled with [react-router] will change. When loading each of the [react-router] routes, your page will be properly server side rendered. + +## Redux + +Electrode enables automatic integration with Redux for your subapps. To enable, add `redux` and `react-redux` to your dependencies, and use `reduxLoadSubApp` from the module `subapp-redux`, and provide reducers or `reduxCreateStore` for the subapp. + +Example: + +```js +import React from "react"; +import { reduxLoadSubApp } from "subapp-redux"; +import { connect } from "react-redux"; +import reducers from "./reducers"; + +const Home = props =>
Home
; + +const mapStateToProps = state => state; + +export default reduxLoadSubApp({ + name: "Home", + Component: connect(mapStateToProps, dispatch => ({ dispatch }))(Home), + reduxCreateStore(initialState) { + return createStore(reducers, initialState); + } +}); +``` + +## License + +Apache-2.0 © + +[react-router]: https://www.npmjs.com/package/react-router diff --git a/samples/poc-subapp-redux/archetype/config/index.js b/samples/poc-subapp-redux/archetype/config/index.js new file mode 100644 index 000000000..2bed5e77c --- /dev/null +++ b/samples/poc-subapp-redux/archetype/config/index.js @@ -0,0 +1,5 @@ +module.exports = { + options: { + subapp: true + } +}; diff --git a/samples/poc-subapp-redux/babel.config.js b/samples/poc-subapp-redux/babel.config.js new file mode 100644 index 000000000..fb1d6601e --- /dev/null +++ b/samples/poc-subapp-redux/babel.config.js @@ -0,0 +1,4 @@ +"use strict"; +module.exports = { + extends: "@xarc/app-dev/config/babel/babelrc.js" +}; diff --git a/samples/poc-subapp-redux/config/default.js b/samples/poc-subapp-redux/config/default.js new file mode 100644 index 000000000..7c085cacb --- /dev/null +++ b/samples/poc-subapp-redux/config/default.js @@ -0,0 +1,31 @@ +"use strict"; + +const defaultListenPort = 3000; + +const portFromEnv = () => { + const x = parseInt(process.env.APP_SERVER_PORT || process.env.PORT, 10); + /* istanbul ignore next */ + return x !== null && !isNaN(x) ? x : defaultListenPort; +}; + +module.exports = { + plugins: { + "@xarc/app-dev": { + enable: process.env.WEBPACK_DEV === "true" + }, + "subapp-server": { options: { insertTokenIds: true } } + }, + connections: { + default: { + host: process.env.HOST, + address: process.env.HOST_IP || "0.0.0.0", + port: portFromEnv(), + routes: { + cors: false + }, + state: { + ignoreErrors: true + } + } + } +}; diff --git a/samples/poc-subapp-redux/config/development.js b/samples/poc-subapp-redux/config/development.js new file mode 100644 index 000000000..f053ebf79 --- /dev/null +++ b/samples/poc-subapp-redux/config/development.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/samples/poc-subapp-redux/config/production.js b/samples/poc-subapp-redux/config/production.js new file mode 100644 index 000000000..8bc69dd8f --- /dev/null +++ b/samples/poc-subapp-redux/config/production.js @@ -0,0 +1,10 @@ +module.exports = { + plugins: { + "subapp-server": { + options: { + insertTokenIds: false, + cdn: { enable: true } + } + } + } +}; diff --git a/samples/poc-subapp-redux/package.json b/samples/poc-subapp-redux/package.json new file mode 100644 index 000000000..c039f13f9 --- /dev/null +++ b/samples/poc-subapp-redux/package.json @@ -0,0 +1,80 @@ +{ + "name": "poc-subapp-redux", + "version": "0.0.1", + "description": "SubApp Redux POC", + "homepage": "http://test", + "author": { + "name": "Joel Chen", + "email": "joel123@gmail.com", + "url": "https://github.com/jchip" + }, + "contributors": [], + "files": [ + "server", + "src", + "lib", + "dist" + ], + "main": "lib/server/index.js", + "keywords": [ + "test", + "electrode" + ], + "repository": { + "type": "git", + "url": "test/test-app" + }, + "license": "Apache-2.0", + "engines": { + "node": ">= 8", + "npm": ">= 5" + }, + "scripts": { + "dev": "clap -q dev", + "test": "clap check", + "build": "clap build" + }, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@module-federation/concat-runtime": "^0.0.1", + "@xarc/app": "^8.1.6", + "@xarc/fastify-server": "^2.0.0", + "electrode-confippet": "^1.5.0", + "history": "^4.10.1", + "html-webpack-plugin": "^5.3.1", + "react": "^16.13.1", + "react-async-ssr": "^0.7.2", + "react-dom": "^16.13.1", + "react-redux": "^7.2.0", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0", + "redux": "^4.0.5", + "redux-logger": "^3.0.6", + "subapp-react": "^0.0.21", + "subapp-redux": "^1.0.30", + "subapp-server": "^1.2.4", + "subapp-web": "^1.0.47" + }, + "devDependencies": { + "@xarc/app-dev": "^8.1.6", + "@xarc/opt-eslint": "^1.0.0" + }, + "fyn": { + "dependencies": { + "@xarc/app": "../../packages/xarc-app", + "subapp-react": "../../packages/subapp-react", + "subapp-redux": "../../packages/subapp-redux", + "subapp-server": "../../packages/subapp-server", + "subapp-web": "../../packages/subapp-web" + }, + "devDependencies": { + "@xarc/app-dev": "../../packages/xarc-app-dev", + "@xarc/opt-eslint": "../../packages/xarc-opt-eslint" + } + }, + "prettier": { + "printWidth": 100, + "trailingComma": "none", + "arrowParens": "avoid" + } +} diff --git a/samples/poc-subapp-redux/src/.eslintrc.js b/samples/poc-subapp-redux/src/.eslintrc.js new file mode 100644 index 000000000..741028a4c --- /dev/null +++ b/samples/poc-subapp-redux/src/.eslintrc.js @@ -0,0 +1,5 @@ +const { eslintReactRc } = require("@xarc/app-dev"); + +module.exports = { + extends: eslintReactRc +}; diff --git a/samples/poc-subapp-redux/src/01.header/subapp-header.jsx b/samples/poc-subapp-redux/src/01.header/subapp-header.jsx new file mode 100644 index 000000000..f530c4fd3 --- /dev/null +++ b/samples/poc-subapp-redux/src/01.header/subapp-header.jsx @@ -0,0 +1,13 @@ +// @subapp@ {name: "Header"} +import { loadSubApp, React } from "subapp-react"; + +const Header = () => { + return ( +
+

Online Store

+

Mission, Vision & Values

+
+ ); +}; + +export default loadSubApp({ name: "Header", Component: Header }); diff --git a/samples/poc-subapp-redux/src/02.main-body/main-body.jsx b/samples/poc-subapp-redux/src/02.main-body/main-body.jsx new file mode 100644 index 000000000..7d7c5fe44 --- /dev/null +++ b/samples/poc-subapp-redux/src/02.main-body/main-body.jsx @@ -0,0 +1,77 @@ +import {reduxLoadSubApp} from "subapp-redux"; +import {getBrowserHistory, React} from "subapp-react"; +import {connect} from "react-redux"; +import {withRouter} from "react-router"; +import {Route, Router, Switch} from "react-router-dom"; +import logger from 'redux-logger'; +import {applyMiddleware} from 'redux'; + +import {Products} from "../components/products"; +import {Navigation} from "../components/navigation"; +import {Deals} from "../components/deals"; +import reduxReducers, {decNumber, incNumber} from "./reducers"; + +const mapStateToProps = state => state; + +const HomeComp = (props) => { + return ( +
+

HOME

+
+ + Redux State Demo +
+ Check out the number below and footer's submit. +
+ You can do the same on other tabs too, if available. +
+ + {props.number} + +
+
+
+ + ); +}; + +const Stores = () => `Stores`; +const Contact = () => `Contact`; + +const MainBody = props => { + return ( +
+ + + + + + + + +
+ ); +}; + + +const Home = connect(mapStateToProps, dispatch => ({ dispatch }))(HomeComp) +const Component = withRouter(connect(mapStateToProps, dispatch => ({ dispatch }))(MainBody)); + +export default reduxLoadSubApp({ + name: "MainBody", + Component, + useReactRouter: true, + reduxEnhancer: () => applyMiddleware(logger), + StartComponent: props => { + return ( + + + + ); + }, + + prepare: async () => {}, + + reduxShareStore: true, + reduxReducers +}); diff --git a/samples/poc-subapp-redux/src/02.main-body/reducers.jsx b/samples/poc-subapp-redux/src/02.main-body/reducers.jsx new file mode 100644 index 000000000..8d90c5fc5 --- /dev/null +++ b/samples/poc-subapp-redux/src/02.main-body/reducers.jsx @@ -0,0 +1,31 @@ +const number = (number = 1000, action = {}) => { + if (action.type === "INC_NUMBER") { + return number + 1; + } + if (action.type === "DEC_NUMBER") { + return number - 1; + } + + return number; +}; + +const items = s => { + return s || { items: [] }; +}; + +export default { + number, + items +}; + +// Action function for easy of use. +export const incNumber = () => { + return { + type: "INC_NUMBER" + }; +}; +export const decNumber = () => { + return { + type: "DEC_NUMBER" + }; +}; \ No newline at end of file diff --git a/samples/poc-subapp-redux/src/02.main-body/server.jsx b/samples/poc-subapp-redux/src/02.main-body/server.jsx new file mode 100644 index 000000000..f2fe1d7a4 --- /dev/null +++ b/samples/poc-subapp-redux/src/02.main-body/server.jsx @@ -0,0 +1,64 @@ +import React from "react"; +import subApp from "./main-body"; +import Promise from "bluebird"; +import { StaticRouter } from "react-router-dom"; + +module.exports = { + prepare: async ({ request, context }) => { + return Promise.delay(50 + Math.random() * 1000) + .return({ + number: 100, + items: [ + { + heading: "BLACK FRIDAY DEAL", + imageUrl: + "https://i5.walmartimages.com/asr/eb17a965-39fc-4f78-9512-ed9e8535cb3f_2.a3bc9a314bb6bf1d7c323ea038f181b8.jpeg?odnHeight=450&odnWidth=450&odnBg=FFFFFF", + footer: `VIZIO 50” Class 4K Ultra HD LED TV`, + type: "danger" + }, + { + heading: "BLACK FRIDAY DEAL", + imageUrl: + "https://i5.walmartimages.com/asr/7da972fa-166b-4e32-a59e-eb99d932f97e_1.98742f6c14fb6ecc1feed8c1b2c7d340.jpeg?odnHeight=450&odnWidth=450&odnBg=FFFFFF", + footer: `Sharp 40" Class FHD (1080p) LED TV`, + type: "success" + }, + { + heading: "BLACK FRIDAY DEAL", + imageUrl: + "https://i5.walmartimages.com/asr/38ee580a-8e54-48fa-8f0d-4ca6be5b4c29_3.57548f072dc4d4eb3833b7b2837c5f35.jpeg?odnHeight=450&odnWidth=450&odnBg=FFFFFF", + footer: `Sceptre 32" Class HD (720P) LED TV` + }, + { + heading: "BLACK FRIDAY DEAL", + imageUrl: "https://placehold.it/150x80?text=IMAGE", + footer: "Buy 50 mobiles and get a gift card", + type: "success" + }, + { + heading: "BLACK FRIDAY DEAL", + imageUrl: "https://placehold.it/150x80?text=IMAGE", + footer: "Buy 50 mobiles and get a gift card" + }, + { + heading: "BLACK FRIDAY DEAL", + imageUrl: "https://placehold.it/150x80?text=IMAGE", + footer: "Buy 50 mobiles and get a gift card", + type: "success" + } + ] + }) + .then(initialState => { + return { initialState }; + }); + }, + StartComponent: props => { + return ( + + + + ); + } +}; + +console.log("hello from main-body server.jsx"); diff --git a/samples/poc-subapp-redux/src/02.main-body/subapp-manifest.js b/samples/poc-subapp-redux/src/02.main-body/subapp-manifest.js new file mode 100644 index 000000000..243851d85 --- /dev/null +++ b/samples/poc-subapp-redux/src/02.main-body/subapp-manifest.js @@ -0,0 +1,6 @@ +module.exports = { + type: "app", + name: "MainBody", + entry: "main-body", + serverEntry: "./server" +}; diff --git a/samples/poc-subapp-redux/src/04.footer/server.jsx b/samples/poc-subapp-redux/src/04.footer/server.jsx new file mode 100644 index 000000000..fa7f85526 --- /dev/null +++ b/samples/poc-subapp-redux/src/04.footer/server.jsx @@ -0,0 +1,15 @@ +import { Component } from "./subapp-footer"; +import Promise from "bluebird"; + +module.exports = { + initialize: () => { + // console.log("subapp footer server initialize"); + }, + prepare: () => { + // console.log("subapp footer server prepare"); + return Promise.delay(50 + Math.random() * 1000).return({ + title: "Your Online Store Copyright" + }); + }, + StartComponent: Component +}; diff --git a/samples/poc-subapp-redux/src/04.footer/subapp-footer.jsx b/samples/poc-subapp-redux/src/04.footer/subapp-footer.jsx new file mode 100644 index 000000000..d16ec4d97 --- /dev/null +++ b/samples/poc-subapp-redux/src/04.footer/subapp-footer.jsx @@ -0,0 +1,65 @@ +import { React } from "subapp-react"; +import { reduxLoadSubApp } from "subapp-redux"; +import PropTypes from "prop-types"; +import { connect } from "react-redux"; + +const email = (email = '', action = {}) => { + if (action.type === "EMAIL") { + return action.payload; + } + return email; +}; + +const setEmail = (value) => { + return { + type: 'EMAIL', + payload: value + }; +}; + +const reducers = {email}; + +const Footer = props => { + + const onSubmit = () => { + const email = document.getElementById("email").value; + props.dispatch(setEmail(email)); + return true; + }; + + return ( + + ); +}; + +Footer.propTypes = { + title: PropTypes.string +}; + +const Component = connect( + state => state, + dispatch => ({ dispatch }) +)(Footer); + +export default reduxLoadSubApp({ + name: "Footer", + Component, + reduxShareStore: true, + reduxReducers: reducers, + prepare: () => { + return new Promise(resolve => { + setTimeout(() => { + resolve({ + title: "Online Store Copyright" + }); + }, 2000); + }); + } +}); diff --git a/samples/poc-subapp-redux/src/05.extras/subapp-extras.jsx b/samples/poc-subapp-redux/src/05.extras/subapp-extras.jsx new file mode 100644 index 000000000..d24e4dc29 --- /dev/null +++ b/samples/poc-subapp-redux/src/05.extras/subapp-extras.jsx @@ -0,0 +1,36 @@ +import React from "react"; +import { reduxLoadSubApp } from "subapp-redux"; +import PropTypes from "prop-types"; +import { connect } from "react-redux"; + +const Extras = props => { + return ( +
+

Extras Extras Extras

+
{props.message}
+
+ ); +}; + +Extras.propTypes = { + message: PropTypes.string +}; + +const Component = connect( + state => state, + dispatch => ({ dispatch }) +)(Extras); + +export default reduxLoadSubApp({ + name: "Extras", + Component, + prepare: () => { + return new Promise(resolve => { + setTimeout(() => { + resolve({ + message: "what other buyers are looking at" + }); + }, 1000); + }); + } +}); diff --git a/samples/poc-subapp-redux/src/06.suspense-demo/subapp-suspense-demo.js b/samples/poc-subapp-redux/src/06.suspense-demo/subapp-suspense-demo.js new file mode 100644 index 000000000..3b293f064 --- /dev/null +++ b/samples/poc-subapp-redux/src/06.suspense-demo/subapp-suspense-demo.js @@ -0,0 +1,56 @@ +/* eslint-disable no-magic-numbers */ + +import { React, loadSubApp, AppContext } from "subapp-react"; + +let data; + +class Data1 extends React.Component { + constructor(props) { + super(props); + } + + render() { + if (!data) { + throw new Promise(resolve => { + setTimeout(() => { + data = "demo data received from async call"; + resolve(data); + }, 2500); + }); + } + return
{data}
; + } +} + +class SuspenseDemo extends React.Component { + constructor(props) { + super(props); + } + + render() { + return ( + + {({ isSsr, ssr, subApp }) => { + return ( +
+
+ IS_SSR: {`${Boolean(isSsr)}`} HAS_REQUEST: {ssr && ssr.request ? "yes" : "no"} +
+ suspense demo waiting for data...
}> +
+ Suspense Demo Received Data + +
+ + + ); + }} +
+ ); + } +} + +export default loadSubApp({ + name: "SuspenseDemo", + Component: SuspenseDemo +}); diff --git a/samples/poc-subapp-redux/src/components/adv-grid.jsx b/samples/poc-subapp-redux/src/components/adv-grid.jsx new file mode 100644 index 000000000..241095b73 --- /dev/null +++ b/samples/poc-subapp-redux/src/components/adv-grid.jsx @@ -0,0 +1,74 @@ +import React from "react"; +import PropTypes from "prop-types"; +import { withStyles } from "@material-ui/core/styles"; +import GridList from "@material-ui/core/GridList"; +import GridListTile from "@material-ui/core/GridListTile"; +import GridListTileBar from "@material-ui/core/GridListTileBar"; +import IconButton from "@material-ui/core/IconButton"; +import StarBorderIcon from "@material-ui/icons/StarBorder"; + +const styles = theme => ({ + root: { + display: "flex", + flexWrap: "wrap", + justifyContent: "space-around", + overflow: "hidden", + backgroundColor: theme.palette.background.paper + }, + gridList: { + width: 500, + height: 450, + // Promote the list into his own layer on Chrome. This cost memory but helps keeping high FPS. + transform: "translateZ(0)" + }, + titleBar: { + background: + "linear-gradient(to bottom, rgba(0,0,0,0.7) 0%, " + "rgba(0,0,0,0.3) 70%, rgba(0,0,0,0) 100%)" + }, + icon: { + color: "white" + } +}); + +function AdvancedGridList(props) { + const { classes, imagesData } = props; + + return ( +
+ + {imagesData.map(img => ( + + {img.name} + + + + } + actionPosition="left" + className={classes.titleBar} + /> + + ))} + +
+ ); +} + +AdvancedGridList.propTypes = { + classes: PropTypes.object.isRequired, + imagesData: PropTypes.array.isRequired +}; + +export default withStyles(styles)(AdvancedGridList); diff --git a/samples/poc-subapp-redux/src/components/deals.jsx b/samples/poc-subapp-redux/src/components/deals.jsx new file mode 100644 index 000000000..252f2d43f --- /dev/null +++ b/samples/poc-subapp-redux/src/components/deals.jsx @@ -0,0 +1,102 @@ +import { React, dynamicLoadSubApp, xarc } from "subapp-react"; +import PropTypes from "prop-types"; +import { connect } from "react-redux"; + +class SubApp extends React.Component { + constructor() { + super(); + this.state = { ready: false }; + } + + render() { + // is subapp loaded? + // TODO: handle SSR + if (typeof window === "undefined") { + return ""; + } + const { name } = this.props; + + const subapp = xarc.getSubApp(name); + if (xarc.getBundle(name) && subapp) { + return ( +
+
+
{subapp.start(null, { props: this.props })}
+
+
+ ); + } else { + const onLoad = () => this.setState({ ready: true }); + dynamicLoadSubApp({ + name: "Deal", + onLoad + }); + + // if not, return loadingComponent + return ""; + } + } +} + +const DealSubApp = props => { + const { id } = props; + + dynamicLoadSubApp({ name: "Deal", id }); + + return ( +
+
+
+
+
+
+
+ ); +}; + +const incNumber = () => { + return { + type: "INC_NUMBER" + }; +}; + +const decNumber = () => { + return { + type: "DEC_NUMBER" + }; +}; + +const Deals = props => { + const { value, dispatch } = props; + + return ( +
+
+ Redux State Demo: +  {value}  + +
+ +
+ + + +
+
+ +
+
+ ); +}; + +Deals.propTypes = { + value: PropTypes.number +}; + +const mapStateToProps = state => { + return { value: state.number.value }; +}; + +const ReduxDeals = connect(mapStateToProps, dispatch => ({ dispatch }))(Deals); + +export { ReduxDeals as Deals }; diff --git a/samples/poc-subapp-redux/src/components/large.jsx b/samples/poc-subapp-redux/src/components/large.jsx new file mode 100644 index 000000000..e28fd55a2 --- /dev/null +++ b/samples/poc-subapp-redux/src/components/large.jsx @@ -0,0 +1,42 @@ +import React from "react"; +import PropTypes from "prop-types"; + +const range = (n, cb) => { + const r = []; + for (let i = 0; i < n; i++) { + r.push(cb(i)); + } + return r; +}; + +function Large(props) { + const { breadth, depth } = props; + + const rlvl = 150 + Math.floor(50 / (depth + 1)); + const level = 50 + Math.floor(100 / (depth + 1)); + + return ( +
+ {`hello ${depth}:${breadth}; `} + {range(breadth, i => ( +
+ {`${depth}-${i}; `} + {i < 3 && depth > 0 && ( + + )} +
+ ))} + {range(8, i => ( + {`${i}.`} + ))} +
+ ); +} + +Large.propTypes = { + breadth: PropTypes.number.isRequired, + depth: PropTypes.number.isRequired, + imagesData: PropTypes.array.isRequired +}; + +export default Large; diff --git a/samples/poc-subapp-redux/src/components/navigation.jsx b/samples/poc-subapp-redux/src/components/navigation.jsx new file mode 100644 index 000000000..e8cdd2312 --- /dev/null +++ b/samples/poc-subapp-redux/src/components/navigation.jsx @@ -0,0 +1,71 @@ +import React from "react"; +import { Route, Link } from "react-router-dom"; +import { withRouter } from "react-router"; + +const NavItem = props => { + const { to, exact, strict, children } = props; + return ( + { + const cn = match ? "active" : null; + return ( +
  • + +
    {children}
    + +
  • + ); + }} + /> + ); +}; + +const Navigation = () => { + return ( + + ); +}; + +const RouterNavigation = withRouter(Navigation); + +export { RouterNavigation as Navigation }; diff --git a/samples/poc-subapp-redux/src/components/products.jsx b/samples/poc-subapp-redux/src/components/products.jsx new file mode 100644 index 000000000..ab191aeee --- /dev/null +++ b/samples/poc-subapp-redux/src/components/products.jsx @@ -0,0 +1,71 @@ +import React from "react"; +import PropTypes from "prop-types"; +import {connect} from "react-redux"; + +import {decNumber, incNumber} from "../02.main-body/reducers"; + +const DealItem = props => { + const { item } = props; + const panelClass = `panel panel-${item.type || "primary"}`; + return ( +
    +
    +
    {item.heading}
    +
    + Image +
    +
    {item.footer}
    +
    +
    + ); +}; + +const DealRow = props => { + const { items, index } = props; + const elements = []; + for (let i = 0; i < 3 && index + i < items.length; i++) { + elements.push(); + } + return
    {elements}
    ; +}; + +const Products = props => { + const { items, dispatch } = props; + const rows = []; + for (let i = 0; i < items.length; i += 3) { + rows.push(); + } + + return ( +
    +

    Products

    +
    + Redux State Demo: +  {props.number}  + +
    + {rows} +
    + ); +}; + +Products.propTypes = { + items: PropTypes.array, + value: PropTypes.number +}; + +const mapStateToProps = state => { + return { items: state.items, number: state.number }; +}; + +const ReduxProducts = connect( + mapStateToProps, + dispatch => ({ dispatch }) +)(Products); + +export { ReduxProducts as Products }; diff --git a/samples/poc-subapp-redux/src/deal/subapp-deal.jsx b/samples/poc-subapp-redux/src/deal/subapp-deal.jsx new file mode 100644 index 000000000..205452889 --- /dev/null +++ b/samples/poc-subapp-redux/src/deal/subapp-deal.jsx @@ -0,0 +1,7 @@ +import { React, loadSubApp } from "subapp-react"; + +const Deal = props => { + return
    SPECIAL DEAL - SPECIAL DEAL - {props.deal}
    ; +}; + +export default loadSubApp({ name: "Deal", Component: Deal }); diff --git a/samples/poc-subapp-redux/src/server-routes/.eslintrc.js b/samples/poc-subapp-redux/src/server-routes/.eslintrc.js new file mode 100644 index 000000000..6e9a41dcc --- /dev/null +++ b/samples/poc-subapp-redux/src/server-routes/.eslintrc.js @@ -0,0 +1,5 @@ +const { eslintNodeRc } = require("@xarc/app-dev"); + +module.exports = { + extends: eslintNodeRc +}; diff --git a/samples/poc-subapp-redux/src/server-routes/default/index.js b/samples/poc-subapp-redux/src/server-routes/default/index.js new file mode 100644 index 000000000..27aca5ebc --- /dev/null +++ b/samples/poc-subapp-redux/src/server-routes/default/index.js @@ -0,0 +1,131 @@ +/* @jsx createElement */ + +import { IndexPage, createElement, Token, Require, Literal } from "subapp-server/template"; + +const Template = ( + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    + + + +
    + +
    + +
    + +
    + +
    + +
    + + + + + + {/* */} + + + + +
    +); + +export default Template; diff --git a/samples/poc-subapp-redux/src/server-routes/default/route.js b/samples/poc-subapp-redux/src/server-routes/default/route.js new file mode 100644 index 000000000..8372fbc2a --- /dev/null +++ b/samples/poc-subapp-redux/src/server-routes/default/route.js @@ -0,0 +1,21 @@ +"use strict"; + +module.exports = { + path: [ + "/", + { "/home": ["post"] }, + "/products", + "/deals", + "/stores", + "/contact", + "/account", + "/cart" + ], + pageTitle: "Online Store Home", + // Specify the HTML index generation template + // since using JSX template, don't include the extension + // because babel transpiled it to .js in prod mode + // but in dev mode we still need to be able to load the + // .jsx version directly through @babel/register. + templateFile: "index" +}; diff --git a/samples/poc-subapp-redux/src/server-routes/default/style.css b/samples/poc-subapp-redux/src/server-routes/default/style.css new file mode 100644 index 000000000..c3ea9e6d8 --- /dev/null +++ b/samples/poc-subapp-redux/src/server-routes/default/style.css @@ -0,0 +1,19 @@ +/* Remove the navbar's default rounded borders and increase the bottom margin */ + +.navbar { + margin-bottom: 50px; + border-radius: 0; +} + +/* Remove the jumbotron's default bottom margin */ + +.jumbotron { + margin-bottom: 0; +} + +/* Add a gray background color and some padding to the footer */ + +footer { + background-color: #f2f2f2; + padding: 25px; +} diff --git a/samples/poc-subapp-redux/src/server-routes/favicon.png b/samples/poc-subapp-redux/src/server-routes/favicon.png new file mode 100644 index 000000000..4e528fe82 Binary files /dev/null and b/samples/poc-subapp-redux/src/server-routes/favicon.png differ diff --git a/samples/poc-subapp-redux/src/server/.eslintrc.js b/samples/poc-subapp-redux/src/server/.eslintrc.js new file mode 100644 index 000000000..6e9a41dcc --- /dev/null +++ b/samples/poc-subapp-redux/src/server/.eslintrc.js @@ -0,0 +1,5 @@ +const { eslintNodeRc } = require("@xarc/app-dev"); + +module.exports = { + extends: eslintNodeRc +}; diff --git a/samples/poc-subapp-redux/src/server/index.js b/samples/poc-subapp-redux/src/server/index.js new file mode 100644 index 000000000..25d9e67cc --- /dev/null +++ b/samples/poc-subapp-redux/src/server/index.js @@ -0,0 +1,47 @@ +"use strict"; + +/* eslint-disable global-require */ + +process.on("SIGINT", () => { + process.exit(0); +}); + +const electrodeConfippet = require("electrode-confippet"); +const { loadRuntimeSupport } = require("@xarc/app"); + +// +const electrodeServer = require("@xarc/fastify-server"); + +// +// sample to show electrode server startup events +// https://github.com/electrode-io/electrode-server#listener-function +// +function setupElectrodeServerEvents(emitter) { + emitter.on("config-composed", (data, next) => next()); + emitter.on("server-created", (data, next) => next()); + emitter.on("connection-set", (data, next) => next()); + emitter.on("plugins-sorted", (data, next) => next()); + emitter.on("plugins-registered", (data, next) => next()); + emitter.on("server-started", (data, next) => next()); + emitter.on("complete", (data, next) => next()); +} + +const startServer = config => { + if (!config.listener) { + config.listener = setupElectrodeServerEvents; + } + return electrodeServer(config); +}; + +// + +module.exports = async () => { + await loadRuntimeSupport(); + const config = electrodeConfippet.config; + const server = await startServer(config); + return server; +}; + +if (require.main === module) { + module.exports(); +} diff --git a/samples/poc-subapp-redux/src/subapps/03.bottom/bottom.jsx b/samples/poc-subapp-redux/src/subapps/03.bottom/bottom.jsx new file mode 100644 index 000000000..d4a58de52 --- /dev/null +++ b/samples/poc-subapp-redux/src/subapps/03.bottom/bottom.jsx @@ -0,0 +1,72 @@ +import { React, getBrowserHistory } from "subapp-react"; +import { reduxLoadSubApp } from "subapp-redux"; +import { withRouter } from "react-router"; +import { Router, Route, Switch } from "react-router-dom"; +import { createStore } from "redux"; +import { connect } from "react-redux"; +import PropTypes from "prop-types"; +import Large from "../../components/large"; + +// import AdvGridList from "../components/adv-grid"; + +const MoreProducts = props => { + return ( +
    +

    More Products

    +
    + ); +}; + +MoreProducts.propTypes = { + imagesData: PropTypes.array.isRequired +}; + +const MoreDeals = () => { + return ( +
    +
    +

    More Deals

    +

    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt + ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation + ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in + reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur + sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id + est laborum. +

    +
    +
    + ); +}; + +const Bottom = props => { + return ( + + } /> + + + ); +}; + +const Component = withRouter( + connect( + state => state, + dispatch => ({ dispatch }) + )(Bottom) +); + +export default reduxLoadSubApp({ + name: "Bottom", + useReactRouter: true, + Component, + StartComponent: props => { + return ( + + + + ); + }, + reduxCreateStore: initialState => { + return createStore(s => s, initialState); + } +}); diff --git a/samples/poc-subapp-redux/src/subapps/03.bottom/server.jsx b/samples/poc-subapp-redux/src/subapps/03.bottom/server.jsx new file mode 100644 index 000000000..0f96495d1 --- /dev/null +++ b/samples/poc-subapp-redux/src/subapps/03.bottom/server.jsx @@ -0,0 +1,41 @@ +import React from "react"; +import subApp from "./bottom"; +import { StaticRouter } from "react-router-dom"; +import Promise from "bluebird"; +import Fs from "fs"; + +let filterImages; + +export default { + initialize: () => { + if (!filterImages) { + const natureImages = JSON.parse(Fs.readFileSync("static/nature-images.json")); + filterImages = natureImages.value.map(x => { + return { + contentUrl: x.contentUrl, + featured: x.featured, + thumbnail: x.thumbnail, + thumbnailUrl: x.thumbnailUrl, + name: x.name + }; + }); + } + }, + prepare: (request, context) => { + const initialState = { + imagesData: filterImages + }; + const store = subApp.reduxCreateStore(initialState); + return Promise.delay(50 + Math.random() * 500).return({ + initialState, + store + }); + }, + StartComponent: props => { + return ( + + + + ); + } +}; diff --git a/samples/poc-subapp-redux/src/subapps/03.bottom/subapp-manifest.js b/samples/poc-subapp-redux/src/subapps/03.bottom/subapp-manifest.js new file mode 100644 index 000000000..258dde270 --- /dev/null +++ b/samples/poc-subapp-redux/src/subapps/03.bottom/subapp-manifest.js @@ -0,0 +1,6 @@ +module.exports = { + type: "app", + name: "Bottom", + entry: "bottom", + serverEntry: "./server" +}; diff --git a/samples/poc-subapp-redux/static/nature-images.json b/samples/poc-subapp-redux/static/nature-images.json new file mode 100644 index 000000000..6e5473318 --- /dev/null +++ b/samples/poc-subapp-redux/static/nature-images.json @@ -0,0 +1,1443 @@ +{ + "_type": "Images", + "instrumentation": { + "pageLoadPingUrl": null + }, + "webSearchUrl": "https://www.bing.com/images/search?q=nature wallpapers&FORM=OIIARP", + "totalEstimatedMatches": 1000, + "value": [ + { + "name": "Nature Wallpapers - Wallpaper Cave", + "datePublished": "2019-03-31T20:04:00Z", + "homePageUrl": null, + "contentSize": "374039 B", + "hostPageDisplayUrl": "https://wallpapercave.com/nature-wallpaper", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_wrzbsZfQ*mid_39A134DDA7CD59E1B57379153726F3C5CF757736*simid_607987833954242509*thid_OIP.wrzbsZfQRWhqC0W1cEUaxwHaEK", + "insightsSourcesSummary": null, + "imageId": "39A134DDA7CD59E1B57379153726F3C5CF757736", + "accentColor": "614E0E", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=39A134DDA7CD59E1B57379153726F3C5CF757736&simid=607987833954242509", + "thumbnailUrl": "https://tse3.mm.bing.net/th?id=OIP.wrzbsZfQRWhqC0W1cEUaxwHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpapercave.com/wp/u9AVLry.jpg" + }, + { + "name": "Nature Wallpapers · Pexels · Free Stock Photos", + "datePublished": "2019-04-05T20:27:00Z", + "homePageUrl": null, + "contentSize": "41033 B", + "hostPageDisplayUrl": "https://www.pexels.com/search/nature wallpaper", + "width": 500, + "height": 375, + "thumbnail": { + "width": 474, + "height": 355 + }, + "imageInsightsToken": "ccid_UPw8mPiW*mid_EECFBB7F4320921571A5087401F72540DC666883*simid_607993589201896767*thid_OIP.UPw8mPiWHcPJ0fqmA6MvRwHaFj", + "insightsSourcesSummary": null, + "imageId": "EECFBB7F4320921571A5087401F72540DC666883", + "accentColor": "BD6F0E", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=EECFBB7F4320921571A5087401F72540DC666883&simid=607993589201896767", + "thumbnailUrl": "https://tse1.mm.bing.net/th?id=OIP.UPw8mPiWHcPJ0fqmA6MvRwHaFj&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://images.pexels.com/photos/592077/pexels-photo-592077.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500" + }, + { + "name": "Nature Wallpaper HD Desktop | PixelsTalk.Net", + "datePublished": "2019-04-02T19:48:00Z", + "homePageUrl": null, + "contentSize": "638707 B", + "hostPageDisplayUrl": "https://www.pixelstalk.net/nature-wallpaper-hd-desktop", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_VKCPRArI*mid_582F8B74581C6801CAFEE05EB2AD9C11E9371F51*simid_608004412519612660*thid_OIP.VKCPRArIcinHh8Sn1NfC4QHaEK", + "insightsSourcesSummary": null, + "imageId": "582F8B74581C6801CAFEE05EB2AD9C11E9371F51", + "accentColor": "1188BA", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=582F8B74581C6801CAFEE05EB2AD9C11E9371F51&simid=608004412519612660", + "thumbnailUrl": "https://tse2.mm.bing.net/th?id=OIP.VKCPRArIcinHh8Sn1NfC4QHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://www.pixelstalk.net/wp-content/uploads/2016/06/Download-HD-Nature-Backgrounds.jpg" + }, + { + "name": "Nature Wallpaper : Find best latest Nature Wallpaper in HD for your PC desktop background ...", + "datePublished": "2019-03-24T20:27:00Z", + "homePageUrl": null, + "contentSize": "1557913 B", + "hostPageDisplayUrl": "https://www.pinterest.com/pin/415246028127530350", + "width": 3840, + "height": 2400, + "thumbnail": { + "width": 474, + "height": 296 + }, + "imageInsightsToken": "ccid_yj24kMJS*mid_A6B293B664009758ABAF6B57E9CF38CBF763FD9E*simid_608016880785491743*thid_OIP.yj24kMJSivkoD3FEX0D16QHaEo", + "insightsSourcesSummary": null, + "imageId": "A6B293B664009758ABAF6B57E9CF38CBF763FD9E", + "accentColor": "397016", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=A6B293B664009758ABAF6B57E9CF38CBF763FD9E&simid=608016880785491743", + "thumbnailUrl": "https://tse3.mm.bing.net/th?id=OIP.yj24kMJSivkoD3FEX0D16QHaEo&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://i.pinimg.com/originals/6f/32/e1/6f32e140dfb2acc4d0dd3018e625566c.jpg" + }, + { + "name": "171 Nature Wallpaper Examples For Your Desktop Background", + "datePublished": "2019-03-31T19:36:00Z", + "homePageUrl": null, + "contentSize": "453717 B", + "hostPageDisplayUrl": "https://www.designyourway.net/drb/nature-desktop-wallpaper...", + "width": 1600, + "height": 900, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_ukbqPTM0*mid_A499186B32617CBB67B453F9FD6F36280EFC2CD0*simid_608025758467163246*thid_OIP.ukbqPTM0iYvcGtUVefxL9wHaEK", + "insightsSourcesSummary": null, + "imageId": "A499186B32617CBB67B453F9FD6F36280EFC2CD0", + "accentColor": "0481C7", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=A499186B32617CBB67B453F9FD6F36280EFC2CD0&simid=608025758467163246", + "thumbnailUrl": "https://tse4.mm.bing.net/th?id=OIP.ukbqPTM0iYvcGtUVefxL9wHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://www.designyourway.net/drb/wp-content/uploads/2017/04/Nature-Wallpaper-Desktop-Background-107-1-1600x900.jpg" + }, + { + "name": "Nature Wallpaper 1920x1080 (74+ images)", + "datePublished": "2019-03-20T19:49:00Z", + "homePageUrl": null, + "contentSize": "830153 B", + "hostPageDisplayUrl": "getwallpapers.com/collection/nature-wallpaper-1920x1080", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_sBrcQLnu*mid_4620530B3AC0674965996C2774848D8193544FD3*simid_607990655744017519*thid_OIP.sBrcQLnu5Q-6cppK5X2J8AHaEK", + "insightsSourcesSummary": null, + "imageId": "4620530B3AC0674965996C2774848D8193544FD3", + "accentColor": "0294C9", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=4620530B3AC0674965996C2774848D8193544FD3&simid=607990655744017519", + "thumbnailUrl": "https://tse1.mm.bing.net/th?id=OIP.sBrcQLnu5Q-6cppK5X2J8AHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "http://getwallpapers.com/wallpaper/full/c/2/7/422653.jpg" + }, + { + "name": "Nature Backgrounds free download | PixelsTalk.Net", + "datePublished": "2019-04-02T19:48:00Z", + "homePageUrl": null, + "contentSize": "3362744 B", + "hostPageDisplayUrl": "https://www.pixelstalk.net/nature-backgrounds-free-download", + "width": 2262, + "height": 1504, + "thumbnail": { + "width": 474, + "height": 315 + }, + "imageInsightsToken": "ccid_AearnGIt*mid_994D2ACAD5AAF1CB386FC396DC5950231E5CED3A*simid_608023336148140524*thid_OIP.AearnGItXZ6SoUS6Qw!_nTAHaE7", + "insightsSourcesSummary": null, + "imageId": "994D2ACAD5AAF1CB386FC396DC5950231E5CED3A", + "accentColor": "0042CC", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=994D2ACAD5AAF1CB386FC396DC5950231E5CED3A&simid=608023336148140524", + "thumbnailUrl": "https://tse3.mm.bing.net/th?id=OIP.AearnGItXZ6SoUS6Qw_nTAHaE7&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://www.pixelstalk.net/wp-content/uploads/2016/08/Nature-backgrounds-hd-wallpapers-2262x1504.jpg" + }, + { + "name": "1920x1080 Nature Wallpapers - Wallpaper Cave", + "datePublished": "2019-03-23T22:23:00Z", + "homePageUrl": null, + "contentSize": "337096 B", + "hostPageDisplayUrl": "https://wallpapercave.com/1920x1080-nature-wallpaper", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_BUs/qspn*mid_82D24A22618190425A967A92E9089DC440C58AA1*simid_607999374512098423*thid_OIP.BUs!_qspnAj9Sj1jOKqLzCwHaEK", + "insightsSourcesSummary": null, + "imageId": "82D24A22618190425A967A92E9089DC440C58AA1", + "accentColor": "128EB9", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=82D24A22618190425A967A92E9089DC440C58AA1&simid=607999374512098423", + "thumbnailUrl": "https://tse2.mm.bing.net/th?id=OIP.BUs_qspnAj9Sj1jOKqLzCwHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpapercave.com/wp/3O88kWG.jpg" + }, + { + "name": "Nature Wallpaper High Definition ·① WallpaperTag", + "datePublished": "2019-04-06T20:19:00Z", + "homePageUrl": null, + "contentSize": "703396 B", + "hostPageDisplayUrl": "https://wallpapertag.com/nature-wallpaper-high-definition", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_yEXuPAzM*mid_2C6B10E86DB9C482DFB238D1A01CA97588AE474C*simid_608018195059378059*thid_OIP.yEXuPAzMPxTTIAmL-DU2AgHaEK", + "insightsSourcesSummary": null, + "imageId": "2C6B10E86DB9C482DFB238D1A01CA97588AE474C", + "accentColor": "08476D", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=2C6B10E86DB9C482DFB238D1A01CA97588AE474C&simid=608018195059378059", + "thumbnailUrl": "https://tse4.mm.bing.net/th?id=OIP.yEXuPAzMPxTTIAmL-DU2AgHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpapertag.com/wallpaper/full/5/c/0/653384-full-size-nature-wallpaper-high-definition-1920x1080.jpg" + }, + { + "name": "Free Beautiful HD 3d Nature Wallpaper For Computer and Smartphone - 3d Wallpapers", + "datePublished": "2019-04-06T20:04:00Z", + "homePageUrl": null, + "contentSize": "383149 B", + "hostPageDisplayUrl": "https://www.3d-wallpapers.info/234/hd-3d-nature-wallpaper", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_sm8+m8ml*mid_8EA373C8DA74E659255FE3FB924AC68054C2D2FA*simid_608048388707650987*thid_OIP.sm8-m8mliE8KamaZj8hUogHaEK", + "insightsSourcesSummary": null, + "imageId": "8EA373C8DA74E659255FE3FB924AC68054C2D2FA", + "accentColor": "166BB5", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=8EA373C8DA74E659255FE3FB924AC68054C2D2FA&simid=608048388707650987", + "thumbnailUrl": "https://tse2.mm.bing.net/th?id=OIP.sm8-m8mliE8KamaZj8hUogHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://www.3d-wallpapers.info/wp-content/uploads/3d-wallpaper-nature.jpg" + }, + { + "name": "Beautiful Nature wallpaper ·① Download free full HD wallpapers for desktop, mobile, laptop in ...", + "datePublished": "2019-03-31T20:54:00Z", + "homePageUrl": null, + "contentSize": "650978 B", + "hostPageDisplayUrl": "https://wallpapertag.com/beautiful-nature-wallpaper", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_QlpFz7x3*mid_0C40995234EA5E25E74F5B189E6A03F73454F8F9*simid_608001848416668421*thid_OIP.QlpFz7x3SD!_gy88pAjSPUgHaEK", + "insightsSourcesSummary": null, + "imageId": "0C40995234EA5E25E74F5B189E6A03F73454F8F9", + "accentColor": "609910", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=0C40995234EA5E25E74F5B189E6A03F73454F8F9&simid=608001848416668421", + "thumbnailUrl": "https://tse3.mm.bing.net/th?id=OIP.QlpFz7x3SD_gy88pAjSPUgHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpapertag.com/wallpaper/full/3/0/a/150465-beautiful-nature-wallpaper-1920x1080-cell-phone.jpg" + }, + { + "name": "26 Most Beautiful Nature Wallpaper That Looks Great on Your iPhone | News Share", + "datePublished": "2019-03-31T20:54:00Z", + "homePageUrl": null, + "contentSize": "83072 B", + "hostPageDisplayUrl": "www.newsshare.in/nature-wallpaper-iphone-3703.html", + "width": 720, + "height": 1280, + "thumbnail": { + "width": 474, + "height": 842 + }, + "imageInsightsToken": "ccid_PzsUa9eC*mid_DE60BBC255C5C0963BF82E8F0741736361DC1182*simid_608032256789906236*thid_OIP.PzsUa9eC6oXuOJ-VWintxQHaNK", + "insightsSourcesSummary": null, + "imageId": "DE60BBC255C5C0963BF82E8F0741736361DC1182", + "accentColor": "1788B4", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=DE60BBC255C5C0963BF82E8F0741736361DC1182&simid=608032256789906236", + "thumbnailUrl": "https://tse4.mm.bing.net/th?id=OIP.PzsUa9eC6oXuOJ-VWintxQHaNK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "http://www.newsshare.in/wp-content/uploads/2017/05/Nature-Wallpaper-iPhone-6.jpg" + }, + { + "name": "HD Wallpapers Nature 1080p (77+ images)", + "datePublished": "2019-04-06T19:57:00Z", + "homePageUrl": null, + "contentSize": "627004 B", + "hostPageDisplayUrl": "getwallpapers.com/collection/hd-wallpapers-nature-1080p", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_tFTGR2oM*mid_5262D7CEDF1BEAB1AC0699A8206F3D4DFE8F5A53*simid_608044368594666807*thid_OIP.tFTGR2oMQjtmffFr3PD4JAHaEK", + "insightsSourcesSummary": null, + "imageId": "5262D7CEDF1BEAB1AC0699A8206F3D4DFE8F5A53", + "accentColor": "B7A814", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=5262D7CEDF1BEAB1AC0699A8206F3D4DFE8F5A53&simid=608044368594666807", + "thumbnailUrl": "https://tse3.mm.bing.net/th?id=OIP.tFTGR2oMQjtmffFr3PD4JAHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "http://getwallpapers.com/wallpaper/full/e/c/1/17575.jpg" + }, + { + "name": "Nature Wallpaper For Pc - WallpaperSafari", + "datePublished": "2019-03-24T20:05:00Z", + "homePageUrl": null, + "contentSize": "1715388 B", + "hostPageDisplayUrl": "https://wallpapersafari.com/nature-wallpaper-for-pc", + "width": 1920, + "height": 1026, + "thumbnail": { + "width": 474, + "height": 253 + }, + "imageInsightsToken": "ccid_UqFfl4pq*mid_276047D70A3226695B3C814EB57C62DE4B66B57D*simid_608009424776204130*thid_OIP.UqFfl4pqbFiogJDIMKCwdQHaD9", + "insightsSourcesSummary": null, + "imageId": "276047D70A3226695B3C814EB57C62DE4B66B57D", + "accentColor": "084A8E", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=276047D70A3226695B3C814EB57C62DE4B66B57D&simid=608009424776204130", + "thumbnailUrl": "https://tse3.mm.bing.net/th?id=OIP.UqFfl4pqbFiogJDIMKCwdQHaD9&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://cdn.wallpapersafari.com/55/74/cGfg4X.jpg" + }, + { + "name": "HD Nature Wallpapers 1920X1080 - WallpaperSafari", + "datePublished": "2019-03-31T21:16:00Z", + "homePageUrl": null, + "contentSize": "1754485 B", + "hostPageDisplayUrl": "https://wallpapersafari.com/hd-nature-wallpapers-1920x1080", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_v+JXJi5y*mid_D3F8A92C3592DCEC74238117FD96C179D469BCA6*simid_607997957174529736*thid_OIP.v-JXJi5yuDXjfpxDKznQ4QHaEK", + "insightsSourcesSummary": null, + "imageId": "D3F8A92C3592DCEC74238117FD96C179D469BCA6", + "accentColor": "2F639C", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=D3F8A92C3592DCEC74238117FD96C179D469BCA6&simid=607997957174529736", + "thumbnailUrl": "https://tse4.mm.bing.net/th?id=OIP.v-JXJi5yuDXjfpxDKznQ4QHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://cdn.wallpapersafari.com/44/4/dGSDMf.jpg" + }, + { + "name": "171 Nature Wallpaper Examples For Your Desktop Background", + "datePublished": "2019-04-05T19:51:00Z", + "homePageUrl": null, + "contentSize": "381026 B", + "hostPageDisplayUrl": "https://www.designyourway.net/drb/nature-desktop-wallpaper...", + "width": 1600, + "height": 900, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_ulRZcZiW*mid_A499186B32617CBB67B4041CF05D275F1F708F6C*simid_607993619261489910*thid_OIP.ulRZcZiWWEHaVf8zFsVrXgHaEK", + "insightsSourcesSummary": null, + "imageId": "A499186B32617CBB67B4041CF05D275F1F708F6C", + "accentColor": "C98802", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=A499186B32617CBB67B4041CF05D275F1F708F6C&simid=607993619261489910", + "thumbnailUrl": "https://tse1.mm.bing.net/th?id=OIP.ulRZcZiWWEHaVf8zFsVrXgHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://www.designyourway.net/drb/wp-content/uploads/2017/04/Nature-Wallpaper-Desktop-Background-103-1-1600x900.jpg" + }, + { + "name": "35+ Nature wallpapers HD ·① Download free High Resolution backgrounds for desktop, mobile ...", + "datePublished": "2019-03-27T20:09:00Z", + "homePageUrl": null, + "contentSize": "730901 B", + "hostPageDisplayUrl": "https://wallpapertag.com/nature-wallpapers-hd", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_rL4t7zuh*mid_293FC81983A1695BDDD9B86AAA4712BFD6818508*simid_608009437653631449*thid_OIP.rL4t7zuhFIMRH7PPNoP!_hwHaEK", + "insightsSourcesSummary": null, + "imageId": "293FC81983A1695BDDD9B86AAA4712BFD6818508", + "accentColor": "AC571F", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=293FC81983A1695BDDD9B86AAA4712BFD6818508&simid=608009437653631449", + "thumbnailUrl": "https://tse2.mm.bing.net/th?id=OIP.rL4t7zuhFIMRH7PPNoP_hwHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpapertag.com/wallpaper/full/e/a/5/224053-cool-nature-wallpapers-hd-1920x1080-for-mobile-hd.jpg" + }, + { + "name": "Beautiful Nature Wallpapers HD - Wallpaper Cave", + "datePublished": "2019-04-05T19:51:00Z", + "homePageUrl": null, + "contentSize": "259939 B", + "hostPageDisplayUrl": "https://wallpapercave.com/beautiful-nature-wallpaper-hd", + "width": 1600, + "height": 900, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_nGehm9sR*mid_4A2E1531BA9BCD18B97F17DC0935F50B487D7DAD*simid_607987640699323296*thid_OIP.nGehm9sRprdfrfEaXhDZcgHaEK", + "insightsSourcesSummary": null, + "imageId": "4A2E1531BA9BCD18B97F17DC0935F50B487D7DAD", + "accentColor": "AC5F20", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=4A2E1531BA9BCD18B97F17DC0935F50B487D7DAD&simid=607987640699323296", + "thumbnailUrl": "https://tse1.mm.bing.net/th?id=OIP.nGehm9sRprdfrfEaXhDZcgHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpapercave.com/wp/jScZjiP.jpg" + }, + { + "name": "Nature Computer Wallpaper ·① WallpaperTag", + "datePublished": "2019-04-06T20:26:00Z", + "homePageUrl": null, + "contentSize": "608987 B", + "hostPageDisplayUrl": "https://wallpapertag.com/nature-computer-wallpaper", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_rj0vSIDq*mid_26C534E2D1B275B57709592F38F332987FF9128D*simid_608011834246561974*thid_OIP.rj0vSIDqyhK-fITi0sVgQQHaEK", + "insightsSourcesSummary": null, + "imageId": "26C534E2D1B275B57709592F38F332987FF9128D", + "accentColor": "456721", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=26C534E2D1B275B57709592F38F332987FF9128D&simid=608011834246561974", + "thumbnailUrl": "https://tse4.mm.bing.net/th?id=OIP.rj0vSIDqyhK-fITi0sVgQQHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpapertag.com/wallpaper/full/8/7/e/837836-nature-computer-wallpaper-1920x1080-ios.jpg" + }, + { + "name": "Purple Nature Wallpaper Computer | Best Wallpapers HD | wallpaper themes in 2019 | Pinterest ...", + "datePublished": "2019-03-31T20:40:00Z", + "homePageUrl": null, + "contentSize": "200764 B", + "hostPageDisplayUrl": "https://www.pinterest.com/pin/421368108864264085", + "width": 1596, + "height": 987, + "thumbnail": { + "width": 474, + "height": 293 + }, + "imageInsightsToken": "ccid_2CF6BxHl*mid_E36ABE252EEFCFE923C54ABC9035BA44AC897FBD*simid_608000134731858274*thid_OIP.2CF6BxHlcjFucJxxxQbtmwHaEl", + "insightsSourcesSummary": null, + "imageId": "E36ABE252EEFCFE923C54ABC9035BA44AC897FBD", + "accentColor": "440D6A", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=E36ABE252EEFCFE923C54ABC9035BA44AC897FBD&simid=608000134731858274", + "thumbnailUrl": "https://tse2.mm.bing.net/th?id=OIP.2CF6BxHlcjFucJxxxQbtmwHaEl&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://i.pinimg.com/originals/9a/17/57/9a175710fe055a0f29d52a7ce251fed8.jpg" + }, + { + "name": "Nature Wallpaper HD Desktop | PixelsTalk.Net", + "datePublished": "2019-04-07T19:56:00Z", + "homePageUrl": null, + "contentSize": "517593 B", + "hostPageDisplayUrl": "https://www.pixelstalk.net/nature-wallpaper-hd-desktop", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_XRJlPamc*mid_582F8B74581C6801CAFEFFFD498692BF4D152EBD*simid_608047491031370712*thid_OIP.XRJlPamcEoC8ms9BT5wFxAHaEK", + "insightsSourcesSummary": null, + "imageId": "582F8B74581C6801CAFEFFFD498692BF4D152EBD", + "accentColor": "9EB210", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=582F8B74581C6801CAFEFFFD498692BF4D152EBD&simid=608047491031370712", + "thumbnailUrl": "https://tse2.mm.bing.net/th?id=OIP.XRJlPamcEoC8ms9BT5wFxAHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://www.pixelstalk.net/wp-content/uploads/2016/03/desktop-nature-wallpaper-high-quality-wallpaper.jpg" + }, + { + "name": "Nature Wallpaper Hd - WallpaperSafari", + "datePublished": "2019-04-05T20:41:00Z", + "homePageUrl": null, + "contentSize": "643358 B", + "hostPageDisplayUrl": "https://wallpapersafari.com/nature-wallpaper-hd", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_YauZ4Jyr*mid_53EC1AB67BDEBE33C5ED873D73DEB5B5CBE998BB*simid_608026677591081797*thid_OIP.YauZ4JyrxAV2Lh3UQgeOZAHaEK", + "insightsSourcesSummary": null, + "imageId": "53EC1AB67BDEBE33C5ED873D73DEB5B5CBE998BB", + "accentColor": "74BB10", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=53EC1AB67BDEBE33C5ED873D73DEB5B5CBE998BB&simid=608026677591081797", + "thumbnailUrl": "https://tse4.mm.bing.net/th?id=OIP.YauZ4JyrxAV2Lh3UQgeOZAHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://cdn.wallpapersafari.com/56/53/IrWiwk.jpg" + }, + { + "name": "Spring Nature Wallpapers - Wallpaper Cave", + "datePublished": "2019-04-05T20:13:00Z", + "homePageUrl": null, + "contentSize": "219742 B", + "hostPageDisplayUrl": "https://wallpapercave.com/spring-nature-wallpapers", + "width": 1024, + "height": 768, + "thumbnail": { + "width": 474, + "height": 355 + }, + "imageInsightsToken": "ccid_N+Dep+md*mid_8BCA9125B457F5F7A75B939387D84975AB9B5B51*simid_608054285641910196*thid_OIP.N-Dep-mdxBv2Jb8a13e2wQHaFj", + "insightsSourcesSummary": null, + "imageId": "8BCA9125B457F5F7A75B939387D84975AB9B5B51", + "accentColor": "AA9321", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=8BCA9125B457F5F7A75B939387D84975AB9B5B51&simid=608054285641910196", + "thumbnailUrl": "https://tse4.mm.bing.net/th?id=OIP.N-Dep-mdxBv2Jb8a13e2wQHaFj&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpapercave.com/wp/Jyfp0fI.jpg" + }, + { + "name": "background nature hd Group with 76 items", + "datePublished": "2019-03-31T19:50:00Z", + "homePageUrl": null, + "contentSize": "2029413 B", + "hostPageDisplayUrl": "www.kinyu-z.net/group/background-nature-hd", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_fm41yS7l*mid_9A49CD9FFDFA5D44765BE70E69ED2584321D917A*simid_608021789976955662*thid_OIP.fm41yS7lhgil7NZ65SRRagHaEK", + "insightsSourcesSummary": null, + "imageId": "9A49CD9FFDFA5D44765BE70E69ED2584321D917A", + "accentColor": "B72605", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=9A49CD9FFDFA5D44765BE70E69ED2584321D917A&simid=608021789976955662", + "thumbnailUrl": "https://tse2.mm.bing.net/th?id=OIP.fm41yS7lhgil7NZ65SRRagHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "http://www.kinyu-z.net/data/wallpapers/226/1497417.jpg" + }, + { + "name": "Nature Wallpaper For Pc - WallpaperSafari", + "datePublished": "2019-03-24T20:05:00Z", + "homePageUrl": null, + "contentSize": "2308050 B", + "hostPageDisplayUrl": "https://wallpapersafari.com/nature-wallpaper-for-pc", + "width": 2560, + "height": 1600, + "thumbnail": { + "width": 474, + "height": 296 + }, + "imageInsightsToken": "ccid_ysoEAhoi*mid_276047D70A3226695B3CD8761A1C240670F0E2C9*simid_608032050628004945*thid_OIP.ysoEAhoi33ahwM6mis51DgHaEo", + "insightsSourcesSummary": null, + "imageId": "276047D70A3226695B3CD8761A1C240670F0E2C9", + "accentColor": "2973A2", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=276047D70A3226695B3CD8761A1C240670F0E2C9&simid=608032050628004945", + "thumbnailUrl": "https://tse4.mm.bing.net/th?id=OIP.ysoEAhoi33ahwM6mis51DgHaEo&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://cdn.wallpapersafari.com/17/66/Fbi3dk.jpg" + }, + { + "name": "Nature Wallpaper Hd - WallpaperSafari", + "datePublished": "2019-04-05T20:41:00Z", + "homePageUrl": null, + "contentSize": "166093 B", + "hostPageDisplayUrl": "https://wallpapersafari.com/nature-wallpaper-hd", + "width": 1600, + "height": 1000, + "thumbnail": { + "width": 474, + "height": 296 + }, + "imageInsightsToken": "ccid_THrB/70w*mid_53EC1AB67BDEBE33C5ED898256366E0A4361CFB5*simid_608013955993635987*thid_OIP.THrB!_70wRXfIivIIFiiDeQHaEo", + "insightsSourcesSummary": null, + "imageId": "53EC1AB67BDEBE33C5ED898256366E0A4361CFB5", + "accentColor": "798F0C", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=53EC1AB67BDEBE33C5ED898256366E0A4361CFB5&simid=608013955993635987", + "thumbnailUrl": "https://tse1.mm.bing.net/th?id=OIP.THrB_70wRXfIivIIFiiDeQHaEo&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://cdn.wallpapersafari.com/92/37/qLlCuN.jpg" + }, + { + "name": "HD Nature Wallpapers for Desktop (65+ images)", + "datePublished": "2019-04-05T20:20:00Z", + "homePageUrl": null, + "contentSize": "621374 B", + "hostPageDisplayUrl": "getwallpapers.com/collection/hd-nature-wallpapers-for-desktop", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_3pGpJWAw*mid_0C04605128626BDDFAD716A605A65DC6666A5491*simid_608027721265513714*thid_OIP.3pGpJWAwQ7WLVwVYYnh7DAHaEK", + "insightsSourcesSummary": null, + "imageId": "0C04605128626BDDFAD716A605A65DC6666A5491", + "accentColor": "0546C6", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=0C04605128626BDDFAD716A605A65DC6666A5491&simid=608027721265513714", + "thumbnailUrl": "https://tse1.mm.bing.net/th?id=OIP.3pGpJWAwQ7WLVwVYYnh7DAHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "http://getwallpapers.com/wallpaper/full/7/4/7/355454.jpg" + }, + { + "name": "Nature Wallpapers - Wallpaper Cave", + "datePublished": "2019-04-05T20:20:00Z", + "homePageUrl": null, + "contentSize": "346716 B", + "hostPageDisplayUrl": "https://wallpapercave.com/nature-wallpaper", + "width": 1680, + "height": 1050, + "thumbnail": { + "width": 474, + "height": 296 + }, + "imageInsightsToken": "ccid_tl8WmUwC*mid_39A134DDA7CD59E1B57340F6F039AC38C691564D*simid_608046245488101465*thid_OIP.tl8WmUwC62gn3xe9f3Rz9QHaEo", + "insightsSourcesSummary": null, + "imageId": "39A134DDA7CD59E1B57340F6F039AC38C691564D", + "accentColor": "2761A4", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=39A134DDA7CD59E1B57340F6F039AC38C691564D&simid=608046245488101465", + "thumbnailUrl": "https://tse2.mm.bing.net/th?id=OIP.tl8WmUwC62gn3xe9f3Rz9QHaEo&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpapercave.com/wp/7mxT7gD.jpg" + }, + { + "name": "65+ Nature 1920X1080 Wallpapers on WallpaperPlay", + "datePublished": "2019-03-31T19:43:00Z", + "homePageUrl": null, + "contentSize": "664635 B", + "hostPageDisplayUrl": "https://wallpaperplay.com/board/nature-1920x1080-wallpapers", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_tJO5j+PN*mid_091665C80463A673AABFBECB0810E57BBC47BD00*simid_608005688131387577*thid_OIP.tJO5j-PNmuqtUvudjjFpcgHaEK", + "insightsSourcesSummary": null, + "imageId": "091665C80463A673AABFBECB0810E57BBC47BD00", + "accentColor": "C29209", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=091665C80463A673AABFBECB0810E57BBC47BD00&simid=608005688131387577", + "thumbnailUrl": "https://tse2.mm.bing.net/th?id=OIP.tJO5j-PNmuqtUvudjjFpcgHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpaperplay.com/walls/full/e/a/7/49284.jpg" + }, + { + "name": "Nature Wallpapers - Wallpaper Cave", + "datePublished": "2019-04-05T20:20:00Z", + "homePageUrl": null, + "contentSize": "663960 B", + "hostPageDisplayUrl": "https://wallpapercave.com/nature-wallpaper", + "width": 2560, + "height": 1600, + "thumbnail": { + "width": 474, + "height": 296 + }, + "imageInsightsToken": "ccid_ZgjoJkJR*mid_39A134DDA7CD59E1B57326F0188006E545E36C05*simid_608041104433153811*thid_OIP.ZgjoJkJRpU44F9zMNXijBgHaEo", + "insightsSourcesSummary": null, + "imageId": "39A134DDA7CD59E1B57326F0188006E545E36C05", + "accentColor": "39708E", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=39A134DDA7CD59E1B57326F0188006E545E36C05&simid=608041104433153811", + "thumbnailUrl": "https://tse4.mm.bing.net/th?id=OIP.ZgjoJkJRpU44F9zMNXijBgHaEo&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpapercave.com/wp/YK2h90b.jpg" + }, + { + "name": "Nature Rain Wallpaper ·①", + "datePublished": "2019-03-23T20:07:00Z", + "homePageUrl": null, + "contentSize": "645246 B", + "hostPageDisplayUrl": "https://wallpapertag.com/nature-rain-wallpaper", + "width": 1080, + "height": 1920, + "thumbnail": { + "width": 474, + "height": 842 + }, + "imageInsightsToken": "ccid_h3IBFSWB*mid_1B031DDC2421B4ED63306FAA5A76D6DA4A0AA62E*simid_608037200296084804*thid_OIP.h3IBFSWBkPrLIA9tkDszxQHaNK", + "insightsSourcesSummary": null, + "imageId": "1B031DDC2421B4ED63306FAA5A76D6DA4A0AA62E", + "accentColor": "7F8E3D", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=1B031DDC2421B4ED63306FAA5A76D6DA4A0AA62E&simid=608037200296084804", + "thumbnailUrl": "https://tse2.mm.bing.net/th?id=OIP.h3IBFSWBkPrLIA9tkDszxQHaNK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpapertag.com/wallpaper/full/6/5/b/969980-nature-rain-wallpaper-1080x1920-xiaomi.jpg" + }, + { + "name": "Free Download HD Nature Wallpapers | PixelsTalk.Net", + "datePublished": "2019-03-31T20:19:00Z", + "homePageUrl": null, + "contentSize": "599952 B", + "hostPageDisplayUrl": "https://www.pixelstalk.net/free-download-hd-nature-wallpapers", + "width": 1920, + "height": 1080, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_kGmuLIMj*mid_CF2F957EE1FCB4E3266B7039E0BE3A4FFE07ADC6*simid_607986730151642720*thid_OIP.kGmuLIMjc1TVVqyC43yAZgHaEK", + "insightsSourcesSummary": null, + "imageId": "CF2F957EE1FCB4E3266B7039E0BE3A4FFE07ADC6", + "accentColor": "2D739E", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=CF2F957EE1FCB4E3266B7039E0BE3A4FFE07ADC6&simid=607986730151642720", + "thumbnailUrl": "https://tse1.mm.bing.net/th?id=OIP.kGmuLIMjc1TVVqyC43yAZgHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://www.pixelstalk.net/wp-content/uploads/2016/06/HD-images-of-nature-download.jpg" + }, + { + "name": "Latest Nature Wallpapers 2015 HD - Wallpaper Cave", + "datePublished": "2019-04-01T13:51:00Z", + "homePageUrl": null, + "contentSize": "608160 B", + "hostPageDisplayUrl": "https://wallpapercave.com/latest-nature-wallpapers-2015-hd", + "width": 4000, + "height": 2236, + "thumbnail": { + "width": 474, + "height": 264 + }, + "imageInsightsToken": "ccid_XTdil75i*mid_5BD304B9E3D54AEDBD0DA10C40FD03BCF339CD08*simid_608045828865657727*thid_OIP.XTdil75iMBQs8D6Ycva!_1QHaEI", + "insightsSourcesSummary": null, + "imageId": "5BD304B9E3D54AEDBD0DA10C40FD03BCF339CD08", + "accentColor": "336498", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=5BD304B9E3D54AEDBD0DA10C40FD03BCF339CD08&simid=608045828865657727", + "thumbnailUrl": "https://tse1.mm.bing.net/th?id=OIP.XTdil75iMBQs8D6Ycva_1QHaEI&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://wallpapercave.com/wp/Ex9MlTC.jpg" + }, + { + "name": "Cool Nature Background Images | PixelsTalk.Net", + "datePublished": "2019-03-27T19:55:00Z", + "homePageUrl": null, + "contentSize": "1504004 B", + "hostPageDisplayUrl": "https://www.pixelstalk.net/cool-nature-background-images", + "width": 1920, + "height": 1079, + "thumbnail": { + "width": 474, + "height": 266 + }, + "imageInsightsToken": "ccid_IzwGbf9y*mid_F47976DB33F114CA062E814A6204FF9D69317540*simid_608006014528392484*thid_OIP.IzwGbf9yFkX!_8XgYfxHe6wHaEK", + "insightsSourcesSummary": null, + "imageId": "F47976DB33F114CA062E814A6204FF9D69317540", + "accentColor": "0C63BF", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=F47976DB33F114CA062E814A6204FF9D69317540&simid=608006014528392484", + "thumbnailUrl": "https://tse1.mm.bing.net/th?id=OIP.IzwGbf9yFkX_8XgYfxHe6wHaEK&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://www.pixelstalk.net/wp-content/uploads/2016/08/Cool-nature-background-desktop-pictures-1920x1079.jpg" + }, + { + "name": "Nature Wallpaper. Enjoy | Beautiful Wallpaper | Pinterest | Nature wallpaper, Scenery pictures ...", + "datePublished": "2019-03-24T20:13:00Z", + "homePageUrl": null, + "contentSize": "311803 B", + "hostPageDisplayUrl": "https://www.pinterest.com/pin/374291419025473478", + "width": 1537, + "height": 2305, + "thumbnail": { + "width": 474, + "height": 710 + }, + "imageInsightsToken": "ccid_ltoH2vEI*mid_154E50753529D3CA2C42799C3641D52B05142C0E*simid_608002642972051156*thid_OIP.ltoH2vEIzfn8-dnIOQfkLAHaLG", + "insightsSourcesSummary": null, + "imageId": "154E50753529D3CA2C42799C3641D52B05142C0E", + "accentColor": "157AB6", + "webSearchUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=nature+wallpapers&id=154E50753529D3CA2C42799C3641D52B05142C0E&simid=608002642972051156", + "thumbnailUrl": "https://tse2.mm.bing.net/th?id=OIP.ltoH2vEIzfn8-dnIOQfkLAHaLG&pid=Api", + "encodingFormat": "jpeg", + "contentUrl": "https://i.pinimg.com/originals/ce/a6/a0/cea6a0609ea792d85de2f61aebbba942.jpg" + } + ], + "queryExpansions": [ + { + "text": "3D Nature Wallpaper", + "displayText": "3D", + "webSearchUrl": "https://www.bing.com/images/search?q=3D+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%223D%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=3D+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%223D%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Wallpaper 1920X1080", + "displayText": "1920X1080", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Wallpaper+1920X1080&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%221920X1080%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Wallpaper+1920X1080&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%221920X1080%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Wallpaper 1280X1024", + "displayText": "1280X1024", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Wallpaper+1280X1024&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%221280X1024%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Wallpaper+1280X1024&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%221280X1024%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nice Nature Wallpapers", + "displayText": "Nice", + "webSearchUrl": "https://www.bing.com/images/search?q=Nice+Nature+Wallpapers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Nice%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nice+Nature+Wallpapers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Nice%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Amazing Nature Wallpaper", + "displayText": "Amazing", + "webSearchUrl": "https://www.bing.com/images/search?q=Amazing+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Amazing%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Amazing+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Amazing%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Love Nature Wallpapers", + "displayText": "Love", + "webSearchUrl": "https://www.bing.com/images/search?q=Love+Nature+Wallpapers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Love%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Love+Nature+Wallpapers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Love%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Summer Nature Wallpaper", + "displayText": "Summer", + "webSearchUrl": "https://www.bing.com/images/search?q=Summer+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Summer%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Summer+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Summer%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Autumn Nature Wallpaper", + "displayText": "Autumn", + "webSearchUrl": "https://www.bing.com/images/search?q=Autumn+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Autumn%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Autumn+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Autumn%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Winter Nature Wallpaper", + "displayText": "Winter", + "webSearchUrl": "https://www.bing.com/images/search?q=Winter+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Winter%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Winter+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Winter%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Trippy Nature Wallpaper", + "displayText": "Trippy", + "webSearchUrl": "https://www.bing.com/images/search?q=Trippy+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Trippy%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Trippy+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Trippy%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Abstract Nature Wallpaper", + "displayText": "Abstract", + "webSearchUrl": "https://www.bing.com/images/search?q=Abstract+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Abstract%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Abstract+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Abstract%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Minimalist Nature Wallpaper", + "displayText": "Minimalist", + "webSearchUrl": "https://www.bing.com/images/search?q=Minimalist+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Minimalist%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Minimalist+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Minimalist%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Purple Nature Wallpaper", + "displayText": "Purple", + "webSearchUrl": "https://www.bing.com/images/search?q=Purple+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Purple%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Purple+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Purple%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Green Nature Wallpaper", + "displayText": "Green", + "webSearchUrl": "https://www.bing.com/images/search?q=Green+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Green%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Green+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Green%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Blue Nature Wallpapers", + "displayText": "Blue", + "webSearchUrl": "https://www.bing.com/images/search?q=Blue+Nature+Wallpapers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Blue%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Blue+Nature+Wallpapers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Blue%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Wallpaper Tumblr", + "displayText": "Tumblr", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Wallpaper+Tumblr&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Tumblr%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Wallpaper+Tumblr&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Tumblr%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Wallpaper YouTube", + "displayText": "YouTube", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Wallpaper+YouTube&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22YouTube%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Wallpaper+YouTube&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22YouTube%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Wallpaper Slideshow", + "displayText": "Slideshow", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Wallpaper+Slideshow&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Slideshow%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Wallpaper+Slideshow&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Slideshow%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Spring Nature Wallpaper", + "displayText": "Spring", + "webSearchUrl": "https://www.bing.com/images/search?q=Spring+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Spring%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Spring+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Spring%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Morning Nature Wallpaper", + "displayText": "Morning", + "webSearchUrl": "https://www.bing.com/images/search?q=Morning+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Morning%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Morning+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Morning%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Wallpaper Nature Day", + "displayText": "Day", + "webSearchUrl": "https://www.bing.com/images/search?q=Wallpaper+Nature+Day&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Day%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Wallpaper+Nature+Day&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Day%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Beach Nature Wallpapers", + "displayText": "Beach", + "webSearchUrl": "https://www.bing.com/images/search?q=Beach+Nature+Wallpapers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Beach%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Beach+Nature+Wallpapers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Beach%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Wallpaper Lighthouse", + "displayText": "Lighthouse", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Wallpaper+Lighthouse&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Lighthouse%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Wallpaper+Lighthouse&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Lighthouse%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Wallpaper Sunset", + "displayText": "Sunset", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Wallpaper+Sunset&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Sunset%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Wallpaper+Sunset&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Sunset%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Springtime Wallpapers", + "displayText": "Springtime", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Springtime+Wallpapers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Springtime%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Springtime+Wallpapers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Springtime%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Wallpaper Butterflies", + "displayText": "Butterflies", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Wallpaper+Butterflies&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Butterflies%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Wallpaper+Butterflies&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Butterflies%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Blooming Nature Wallpaper", + "displayText": "Blooming", + "webSearchUrl": "https://www.bing.com/images/search?q=Blooming+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Blooming%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Blooming+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Blooming%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Scenic Wallpaper", + "displayText": "Scenic", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Scenic+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Scenic%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Scenic+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Scenic%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Wallpaper River", + "displayText": "River", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Wallpaper+River&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22River%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Wallpaper+River&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22River%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Waterfall Nature Wallpaper", + "displayText": "Waterfall", + "webSearchUrl": "https://www.bing.com/images/search?q=Waterfall+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Waterfall%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Waterfall+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Waterfall%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Christmas Nature Wallpaper", + "displayText": "Christmas", + "webSearchUrl": "https://www.bing.com/images/search?q=Christmas+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Christmas%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Christmas+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Christmas%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature iPhone Wallpaper", + "displayText": "iPhone", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+iPhone+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22iPhone%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+iPhone+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22iPhone%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature iPad Wallpaper", + "displayText": "iPad", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+iPad+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22iPad%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+iPad+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22iPad%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Red Nature Wallpaper", + "displayText": "Red", + "webSearchUrl": "https://www.bing.com/images/search?q=Red+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Red%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Red+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Red%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Wallpapers Nature Black", + "displayText": "Black", + "webSearchUrl": "https://www.bing.com/images/search?q=Wallpapers+Nature+Black&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Black%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Wallpapers+Nature+Black&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Black%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Pink Nature Wallpaper", + "displayText": "Pink", + "webSearchUrl": "https://www.bing.com/images/search?q=Pink+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Pink%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Pink+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Pink%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Storm Nature Wallpaper", + "displayText": "Storm", + "webSearchUrl": "https://www.bing.com/images/search?q=Storm+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Storm%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Storm+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Storm%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Wallpaper Snow", + "displayText": "Snow", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Wallpaper+Snow&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Snow%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Wallpaper+Snow&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Snow%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "Nature Rain Wallpapers", + "displayText": "Rain", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Rain+Wallpapers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Rain%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Rain+Wallpapers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Rain%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + }, + { + "text": "4K Nature Wallpaper", + "displayText": "4K", + "webSearchUrl": "https://www.bing.com/images/search?q=4K+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%224K%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRPATC", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=4K+Nature+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%224K%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail1": null + } + ], + "nextOffsetAddCount": 0, + "pivotSuggestions": [ + { + "pivot": "nature", + "suggestions": [ + { + "text": "Lightning Wallpaper", + "displayText": "Lightning", + "webSearchUrl": "https://www.bing.com/images/search?q=Lightning+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Lightning%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Lightning+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Lightning%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Beach Wallpaper", + "displayText": "Beach", + "webSearchUrl": "https://www.bing.com/images/search?q=Beach+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Beach%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Beach+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Beach%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Wildlife Wallpaper", + "displayText": "Wildlife", + "webSearchUrl": "https://www.bing.com/images/search?q=Wildlife+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Wildlife%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Wildlife+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Wildlife%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Art Wallpaper", + "displayText": "Art", + "webSearchUrl": "https://www.bing.com/images/search?q=Art+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Art%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Art+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Art%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Tree Wallpaper", + "displayText": "Tree", + "webSearchUrl": "https://www.bing.com/images/search?q=Tree+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Tree%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Tree+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Tree%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Sunset Wallpaper", + "displayText": "Sunset", + "webSearchUrl": "https://www.bing.com/images/search?q=Sunset+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Sunset%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Sunset+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Sunset%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "3D Wallpaper", + "displayText": "3D", + "webSearchUrl": "https://www.bing.com/images/search?q=3D+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%223D%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=3D+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%223D%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Ocean Wallpaper", + "displayText": "Ocean", + "webSearchUrl": "https://www.bing.com/images/search?q=Ocean+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Ocean%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Ocean+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Ocean%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Summer Wallpaper", + "displayText": "Summer", + "webSearchUrl": "https://www.bing.com/images/search?q=Summer+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Summer%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Summer+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Summer%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Technology Wallpaper", + "displayText": "Technology", + "webSearchUrl": "https://www.bing.com/images/search?q=Technology+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Technology%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Technology+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Technology%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Flower Wallpaper", + "displayText": "Flower", + "webSearchUrl": "https://www.bing.com/images/search?q=Flower+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Flower%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Flower+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Flower%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Landscape Wallpaper", + "displayText": "Landscape", + "webSearchUrl": "https://www.bing.com/images/search?q=Landscape+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Landscape%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Landscape+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Landscape%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Geology Wallpaper", + "displayText": "Geology", + "webSearchUrl": "https://www.bing.com/images/search?q=Geology+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Geology%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Geology+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Geology%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Desert Wallpaper", + "displayText": "Desert", + "webSearchUrl": "https://www.bing.com/images/search?q=Desert+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Desert%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Desert+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Desert%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Animal Wallpaper", + "displayText": "Animal", + "webSearchUrl": "https://www.bing.com/images/search?q=Animal+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Animal%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Animal+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Animal%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Forest Wallpaper", + "displayText": "Forest", + "webSearchUrl": "https://www.bing.com/images/search?q=Forest+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Forest%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Forest+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Forest%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Desktop Wallpaper", + "displayText": "Desktop", + "webSearchUrl": "https://www.bing.com/images/search?q=Desktop+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Desktop%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Desktop+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Desktop%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Science Wallpaper", + "displayText": "Science", + "webSearchUrl": "https://www.bing.com/images/search?q=Science+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Science%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Science+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Science%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Life Wallpaper", + "displayText": "Life", + "webSearchUrl": "https://www.bing.com/images/search?q=Life+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Life%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Life+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Life%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Mountain Wallpaper", + "displayText": "Mountain", + "webSearchUrl": "https://www.bing.com/images/search?q=Mountain+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Mountain%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Mountain+Wallpaper&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Mountain%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + } + ] + }, + { + "pivot": "wallpapers", + "suggestions": [ + { + "text": "Nature Animals", + "displayText": "Animals", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Animals&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Animals%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Animals&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Animals%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature World", + "displayText": "World", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+World&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22World%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+World&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22World%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Art", + "displayText": "Art", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Art&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Art%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Art&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Art%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Beauty", + "displayText": "Beauty", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Beauty&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Beauty%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Beauty&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Beauty%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Flowers", + "displayText": "Flowers", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Flowers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Flowers%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Flowers&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Flowers%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Trail", + "displayText": "Trail", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Trail&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Trail%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Trail&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Trail%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Posters", + "displayText": "Posters", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Posters&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Posters%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Posters&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Posters%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Scapes", + "displayText": "Scapes", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Scapes&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Scapes%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Scapes&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Scapes%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Wildlife", + "displayText": "Wildlife", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Wildlife&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Wildlife%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Wildlife&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Wildlife%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Landscape", + "displayText": "Landscape", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Landscape&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Landscape%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Landscape&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Landscape%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Anime", + "displayText": "Anime", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Anime&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Anime%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Anime&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Anime%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Fog", + "displayText": "Fog", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Fog&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Fog%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Fog&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Fog%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Mountains", + "displayText": "Mountains", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Mountains&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Mountains%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Mountains&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Mountains%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Architecture", + "displayText": "Architecture", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Architecture&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Architecture%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Architecture&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Architecture%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Chairs", + "displayText": "Chairs", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Chairs&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Chairs%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Chairs&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Chairs%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Snow", + "displayText": "Snow", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Snow&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Snow%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Snow&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Snow%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Parks", + "displayText": "Parks", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Parks&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Parks%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Parks&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Parks%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Trees", + "displayText": "Trees", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Trees&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Trees%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Trees&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Trees%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature vs Nurture", + "displayText": "vs Nurture", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+vs+Nurture&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22vs+Nurture%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+vs+Nurture&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22vs+Nurture%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + }, + { + "text": "Nature Portraits", + "displayText": "Portraits", + "webSearchUrl": "https://www.bing.com/images/search?q=Nature+Portraits&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Portraits%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d&FORM=IRQBPS", + "searchLink": "https://api.cognitive.microsoft.com/api/v7/images/search?q=Nature+Portraits&tq=%7b%22pq%22%3a%22nature+wallpapers%22%2c%22qs%22%3a%5b%7b%22cv%22%3a%22nature%22%2c%22pv%22%3a%22nature%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22wallpapers%22%2c%22pv%22%3a%22wallpapers%22%2c%22hps%22%3atrue%2c%22iqp%22%3afalse%7d%2c%7b%22cv%22%3a%22Portraits%22%2c%22pv%22%3a%22%22%2c%22hps%22%3afalse%2c%22iqp%22%3atrue%7d%5d%7d", + "thumbnail": { + "width": 0, + "height": 0 + } + } + ] + } + ], + "displayShoppingSourcesBadges": false, + "displayRecipeSourcesBadges": false, + "similarTerms": null +} diff --git a/samples/poc-subapp-redux/test/client/.babelrc b/samples/poc-subapp-redux/test/client/.babelrc new file mode 100644 index 000000000..80b730492 --- /dev/null +++ b/samples/poc-subapp-redux/test/client/.babelrc @@ -0,0 +1,3 @@ +{ + "extends": "@xarc/app-dev/config/babel/babelrc-client.js" +} diff --git a/samples/poc-subapp-redux/test/client/.eslintrc.js b/samples/poc-subapp-redux/test/client/.eslintrc.js new file mode 100644 index 000000000..bd1445e5b --- /dev/null +++ b/samples/poc-subapp-redux/test/client/.eslintrc.js @@ -0,0 +1,5 @@ +const { eslintReactTestRc } = require("@xarc/app-dev"); + +module.exports = { + extends: eslintReactTestRc +}; diff --git a/samples/poc-subapp-redux/test/client/components/home.spec.jsx b/samples/poc-subapp-redux/test/client/components/home.spec.jsx new file mode 100644 index 000000000..61c8102f1 --- /dev/null +++ b/samples/poc-subapp-redux/test/client/components/home.spec.jsx @@ -0,0 +1,32 @@ +import React from "react"; +import ReactDOM from "react-dom"; +import Home from "client/components/home"; +import { createStore } from "redux"; +import { Provider } from "react-redux"; +import rootReducer from "client/reducers"; + +describe("Home", () => { + let component; + let container; + + beforeEach(() => { + container = document.createElement("div"); + }); + + afterEach(() => { + ReactDOM.unmountComponentAtNode(container); + }); + + it("has expected content with deep render", () => { + const initialState = { + checkBox: { checked: false }, + number: { value: 999 } + }; + + const store = createStore(rootReducer, initialState); + + component = ReactDOM.render(, container); + + expect(component).to.not.be.false; + }); +}); diff --git a/samples/poc-subapp-redux/test/server/.babelrc b/samples/poc-subapp-redux/test/server/.babelrc new file mode 100644 index 000000000..21e1ffbfd --- /dev/null +++ b/samples/poc-subapp-redux/test/server/.babelrc @@ -0,0 +1,3 @@ +{ + "extends": "@xarc/app-dev/config/babel/babelrc-server.js" +} diff --git a/samples/poc-subapp-redux/test/server/.eslintrc.js b/samples/poc-subapp-redux/test/server/.eslintrc.js new file mode 100644 index 000000000..7c3609dd8 --- /dev/null +++ b/samples/poc-subapp-redux/test/server/.eslintrc.js @@ -0,0 +1,5 @@ +const { eslintNodeTestRc } = require("@xarc/app-dev"); + +module.exports = { + extends: eslintNodeTestRc +}; diff --git a/samples/poc-subapp-redux/test/server/server.spec.js b/samples/poc-subapp-redux/test/server/server.spec.js new file mode 100644 index 000000000..a21e9a19d --- /dev/null +++ b/samples/poc-subapp-redux/test/server/server.spec.js @@ -0,0 +1,10 @@ +/* + * Server unit test + * Note that these should only test pure server code only. + * React code should be unit tested with Karma and headless browser. + * Unit Testing Server Side Rendering of the React code is not supported yet. + */ + +describe("server", function () { + it("write some unit test for server code", () => {}); +}); diff --git a/samples/poc-subapp-redux/xclap.js b/samples/poc-subapp-redux/xclap.js new file mode 100644 index 000000000..5a252f9b3 --- /dev/null +++ b/samples/poc-subapp-redux/xclap.js @@ -0,0 +1,19 @@ +const { loadDevTasks, xrun } = require("@xarc/app-dev"); + +exports.xrun = xrun; + +xrun.updateEnv( + { + WEBPACK_DEV_PORT: 0, + APP_SERVER_PORT: 0 + }, + { override: false } +); + +const deps = require("./package.json").dependencies; + +loadDevTasks(xrun, { + webpackOptions: { + minify: true + } +});