Help me to choose a Photon product to work with and buy.

Options
Hi there! I'm Alex from CrazyPanda games,
Couple questions on Photon architecture at the bottom.
I need a solution for an authoritative server for fps game with projectiles travel time. I need to have an ability to send packets via RUPD to the server containing something like:
- state: position_v3 + rotation_v3 + vel_int)
- input buffer: all inputs were done by the user since last acknowledged frame.
- packet index (ulong)
- is delta packet? (bool)

Then I'll apply all received packets from all users to the server simulation
Then I'll compare received states of all users with simulation results
If it's not equal - I'll send a correction to all clients containing:
- last valid packet index
- current valid state
- "ack" for inputs buffer & index of last valid.

On the client side, i'll try to reapply all inputs from the buffer from the last acked index ON THE TOP of last valid state (got it by packet index).
Then I'll compare resulting client state with "valid" one received from the server.

Here is the scheme (hope it's the right one)

Hi-rez: http://service.crazypanda.ru/v/clip2net/M/p/gOCukmYtKO.png

The questions:

1) Which part of described above does ANY Photon product already have under the hood?

2) Does Photon Server framework have anything to ease all these rollbacks, packet sorting, validity checking, circular queues, buffering etc?

3) Do you have something "authoritative-ready" for the client side? Where to look?

4) Does photon has playout delay buffer and is it adaptive?

5) I've read all articles by Glen Fiedler and here is a quote:
"The solution is to keep a circular buffer of past character state and input for the local player on the client, then when the client receives a correction from the server, it first discards any buffered state older than the corrected state from the server, and replays the state starting from the corrected state back to the present “predicted” time on the client using player inputs stored in the circular buffer. In effect the client invisibly “rewinds and replays” the last n frames of local player character movement while holding the rest of the world fixed."
https://gafferongames.com/post/what_every_programmer_needs_to_know_about_game_networking/
Do you have this out of the box or part of it?


P.S.
I'm building a prototype for something similar to WWR in terms of client/server needs on mobile platform + Unity.
https://play.google.com/store/apps/details?id=com.pixonic.wwr&hl=en